본문 바로가기

운영체제(Operator System)

[운영체제] 메모리(Memory)

 

메모리 가상화(Virtualizing memory)

각 프로세스는 자신만의 가상 주소 공간(virtual address space), 혹은 주소 공간(address space)을 갖는다. 운영체제는 이 가상 주소 공간을 컴퓨터의 물리 메모리로 매핑한다. 하나의 프로그램이 수행하는 각종 메모리 연산은 다른 프로그램의 주소 공간에 영향을 주지 않는다. 실행 중인 프로그램의 입장에서는, 자기 자신만의 물리 메모리를 갖는 셈이며 실제로는 물리 메모리는 공유 자원이고, 운영체제에 의해 관리된다. [1]

 

메모리 단편화(Memory Fragmentation)

 

단편화는 기억 장치의 빈 공간 또는 자료가 여러 개의 조각으로 나뉘는 현상을 말한다.

 

내부 단편화: 요구하는 메모리보다 더 큰 메모리를 할당하여 사용하지 않은 메모리 공간이 생기는 것을 말한다.

 

외부 단편화: 메모리 공간은 충분하지만 반복되는 할당과 해제로 인해 단편화된 메모리로 인해 메모리를 할당할 수 없는 현상을 말한다.

 

 

단편화 관리 기법

  • 분할: 메모리 할당은 기존의 빈 공간을 여러개로 쪼갤 수 있다.
  • 병합: 빈 공간이 이웃해 있는 경우 하나로 합친다.

-빈 공간 할당을 위한 기본 전략- [1]

 

-최적 적합(Best Fit)-

  • 빈 공간 리스트를 탐색하면서 요구하는 메모리 크기에 가장 적합한 메모리를 찾아 반환한다.
  • 리스트 전체를 탐색해야 하는 단점이 있다.

-최악 접합(Worst Fit)-

  • 빈 공간 리스트 중 가장 큰 메모리 공간을 찾아 반환한다.                   
  • 리스트 전체를 탐색하며 많은 단편화를 유발한다.

-최초 접합(First Fit)-

  •  요청한 메모리 크기에 맞는 가장 앞에 있는 메모리를 찾아 반환한다.
  • 리스트 전체를 탐색할 필요가 없어 속도가 빠르다.
  • 리스트 시작에 크기가 작은 객체가 많이 생길 수 있다.

 

세그멘테이션(Segmentation)

  • 세그먼트는 일정한 크기의 연속된 메모리 공간을 뜻한다.(Code, Stack, Heap)
  • 논리적으로 하나의 프로세스를 여러 개의 세그먼트로 나눌 수 있다.
  • 각 세그먼트는 물리 메모리의 여러 곳에 산재할 수 있다.

-장점 및 단점-

  • (장) 내부 단편화가 없다.
  • (단) 외부 단편화가 있다.

페이징(Paging)

  • 페이징은 주소 공간을 페이지라고 불리는 동일 크기의 조각으로 잘라서 관리한다.
  • 페이징에서는 물리 메모리도 동일한 크기의 페이지 프레임으로 잘라서 관리한다.
  • 가상 주소를 물리 주소로 변환하기 위해 프로세스마다 페이지 테이블을 사용한다.

-장점 및 단점-

  • (장) 유연성: 주소 공간의 일관적인 관리
  • (장) 단순성: 빈 공간 관리가 쉽다. (페이지 크기와 페이지 프레임의 크기가 같다.)
  • (장) 외부 단편화가 없다.
  • (단) 내부 단편화가 있다.
  • (단) 페이지 테이블로 인한 잦은 메모리 접근

 

-TLB-

TLB 느린 속도의 페이징을 극복하기 위해 도입된 기법으로 CPU의 MMU의 일부로 자주 참조되는 가상 주소-실 주소 변환 정보를 저장하는 하드웨어 캐시이다.[1]

 

 

후기

운영체제에서 가상메모리 기법부분을 공부했고 해당 내용을 간단하게 요약 하였다. 나중에 면접대비용으로 다시 리마인드 하기 좋도록 키워드 느낌으로 작성하였다.

 

 

출처 및 레퍼런스

[1] [Remzi H. Dusseau][운영체제 아주 쉬운 세 가지 이야기]: 흥릉과학출판사