[OS] 메모리 관리 전략

서동진·2021년 12월 30일
0

AI-Tech-Interview

목록 보기
2/2

메모리 관리
메모리 관리는 메모리 location을 추적하여 얼마나 많은 메모리가 할당되었는지를 확인하고, 어느 시점에 어떤 process가 메모리가 필요한지를 결정한다. unallocated 되거나 자유로운 메모리가 발생하면 상태를 업데이트한다.

Swapping

Swapping은 Process를 일시적으로 main memory에서 second storage(disk)로 swap(swap out)하는 메카니즘입니다. 잠시후에 시스템은 다시 해당 process를 secondary storage로 부터 main memeory로 swap back(swap in) 합니다.

Performance는 swapping process에 영향을 받지만 다양하고 큰 process를 병렬적으로 처리할 수 있다. 이 때문에 swapping은 메모리압축기술로도 알려져있다.

swapping에 걸리는 총 시간에는 전체 프로세스를 보조 디스크로 이동한 다음 프로세스를 다시 메모리로 복사하는 데 걸리는 시간과 프로세스가 메인 메모리를 다시 얻는 데 걸리는 시간이 포함

Fragmentation(단편화)

프로세스들이 메모리에 적재되고 제거되는 일이 반복되다보면 프로세스들이 차지하는 메모리 틈 사이에 사용하지 못할 만큼의 작은 자유공간들이 늘어가게 되는데, 이것이 단편화이다. 단편화는 2가지 종류로 나뉜다.

  • External fragmentation(외부 단편화)

    메모리 공간 중 사용하지 못하게 되는 일부분. 물리 메모리(RAM)에서 사이사이 남는 공간들을 모두 합치면 충분히 공간이 되는 부분들이 분상되어 있을 때 발생한다고 볼 수 있다.

  • Internal fragmentation(내부 단편화)
    프로세스가 사용하는 메모리 공간에 포함된 남는 부분. 예를 들어 메모리 분할 자유 공간이 10,000B 있고 Process A가 9,998B 사용하게 되면 2B 라는 차이가 존재하고, 이를 내부 단편화라 칭한다.

외부 단편화는 compaction(압축) 또는 shuffle memory 내용을 통해 모든 여유 메모리를 하나의 큰 블록에 함께 배치함으로써 줄일 수 있습니다. 압축이 가능하도록 하려면 dynamic relocation 이어야 합니다.

내부 단편화는 프로세스를 처리기에는 충분히 큰 것중에 가장 작은 파티션을 효율적으로 할당함으로써 줄일 수 있습니다.

Paging(페이징)

paging은 process address space를 page라고 하는 동일한 크기의 블록으로 나누는 메모리 관리 기술입니다.(크기는 2의 거듭제곱, 512바이트에서 8192바이트 사이). 프로세스의 크기는 페이지 수로 측정됩니다.

마찬가지로 main memory는 frame이라는 작은 고정 크기의 (물리적) 메모리 블록으로 나뉘며 frame의 크기는 page의 크기와 동일하게 유지되어 main memory를 최적으로 활용하고 external fragmentation(외부 단편화)를 방지합니다.


Frame에서 page로 system을 할당할 때 address translation과정(logical -> physical) 추가

장점

  • paging 은 구현하기 쉽고 효율적인 메모리 관리 기술
  • page와 frame의 크기가 동일하기 때문에 swapping이 매우 쉬움
  • 논리 메모리는 물리 메모리에 저장될 때, 연속되어 저장될 필요가 없음

단점

  • 물리 메모리의 남는 프레임에 적절히 배치됨으로 외부 단편화를 해결할 수 있으나 내부 단편화 문제점 여전히 존재.
  • Page table(Address translation 과정에서 사용됨)이 추가적인 메모리 공간을 필요로 하기 때문에 작은 크기의 RAM에서는 좋은 방법이 아닐 수 있다.

Segmentation(세그멘테이션)

한 Process를 페이징에서처럼 논리메모리와 물리메모리를 같은 크기의 블록이 아닌 서로 다른 크기의 논리적 단위인 세그먼트(Segment)로 분할. 각 segemetntaion은 연관된 기능을 수행하고, 프로그램에 다른 logical address(논리적 주소)를 갖고있다.

Segmentation Memory management는 paging과 매우 유사하만 segmentation은 가변 길이를 갖고 있고 paging page는 고정된 크기를 갖고있다.

Reference

profile
으쌰으쌰

0개의 댓글