[OS] 연속 메모리 할당

touhou09·2024년 11월 16일
0

컴퓨터 이론

목록 보기
26/47

현재까지는 memory 내부에 process들이 연속적으로 배치되는 상황을 가정했다.

이러한 방식으로 process에 연속적인 memory 공간을 할당하는 방식을 연속 메모리 할당이라고 부른다.

swapping

memory에 적재된 process 중에서 현재 실행되지 않는 process가 있는 경우 이를 임시로 보조기억장치 일부 영역으로 쫒아내고, 그렇게 생긴 memory상의 빈 공간에 또 다른 process를 적재하여 실행하는 방식을 swapping이라고 한다.

이때 비우는 보조기억장치의 일부 영역을 swap space라고 하고 현재 실행되지 않는 process가 memory에서 swap space로 옮겨지는 것을 swap out, 다시 swap space에서 memory로 옮겨지는 것을 swap in이라고 한다.

swapping을 이용하면 process들이 요구하는 memory address의 크기가 실제 memory 크기보다 큰 경우에도 process들을 동시 실행할 수 있다.

linux 등에서는 free 명령어를 통해 swap sapce의 크기를 확인할 수 있다.

memory 할당

process는 memory 내의 빈 공간에 적재되어야 하는데 memory 내에 빈 공간이 여러 개 있다면 process를 비어있는 공간에 연속적으로 할당하는 방식이다.

  • first fit
    운영체제가 memory 내의 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 process를 배치하는 방식.
    first fit은 process가 적재될 수 있는 공간을 발견하는 즉시 할당하는 방식이므로 검색을 최소화하며 결과적으로 빠른 할당이 가능하다.
  • best fit
    OS가 빈 공간을 모두 검색한 후 process가 적재될 수 있는 공간 중 가장 작은 공간에 배치하는 방식이다.
  • worst fit
    OS가 빈 공간을 모두 검색해본 후 가장 큰 공간에 배치하는 방식.

외부 단편화

연속 메모리 할당은 사실 외부 단편화라는 문제를 내포하고 있는 방식이다.
process들이 memory에 연속적으로 할당되는 환경에서 process들이 실행/종료를 반혹하는 경우 memory 간에 빈 공간들이 생긴다.
이러한 공간들은 분명 빈 공간이지만 그 공간보다 큰 process를 적재하기 어려운 상황을 초래하고 결국 memory의 낭비로 이어지도록 한다.

외부 단편화를 해결하기 위한 방법으로 memory를 압축하는 방법이 있다.
memory 내에 저장된 process를 적당히 재배치시켜 흩어진 빈 공간을 하나의 큰 공간으로 만드는 방식이다.
다만 압축 방식은 빈 공간을 모으는 동안 시스템이 하던 일을 중지해야하며 memory에 있는 내용을 옮기는 작업은 많은 overhead를 야기한다.
또한 어떤 process를 어떻게 움직여야 하는지에 대한 명확한 방법도 애매하다.

이렇게 외부 단편화를 없애기 위한 방법으로는 가상 메모리 기법, 그 중 pagenation이 있다.

profile
Engineer가 되기 위하여

0개의 댓글