연속 메모리 할당

프로세스 A는 A의 크기만큼 메모리 주소를 할당받아 연속적으로 배치되고, 프로세스 B는 프로세스 A 이후에 B의 크기만큼 연속적인 메모리 주소를 할당하는 방식을 연속 메모리 할당 방식이라고 한다.

프로세스들을 메모리에 연속적으로 할당할 때 무엇을 고려해야 하고, 어떤 잠재적인 문제가 있는지 살펴보자.

스와핑

메모리에 적재된 프로세스들 중에는 현재 실행되지 않는 프로세스가 있을 수 있다. 입출력 작업의 요구로 대기 상태가 된 프로세스, 오랫동안 사용되지 않은 프로세스 등이 이에 속하고 이러한 프로세스들을 임시로 보조기억장치 일부 영역으로 쫓아내고, 그렇게 해서 생긴 메모리상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식을 스와핑(swapping)이라고 한다.

프로세스들이 쫓겨나는 보조기억장치의 일부 영역을 스왑 영역(swap space)이라고 한다. 그리고 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것을 스왑 아웃(swap-out), 반대로 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨지는 것을 스왑 인(swap-in)이라고 한다. 스왑 아웃 되었던 프로세스가 다시 스왑 인될 때는 이전의 물리 주소와는 다른 주소에 적재될 수 있다.

메모리 할당

비어 있는 메모리 공간에 프로세스를 연속적으로 할당하는 방식에는 대표적으로 세 가지 방식이 있다.

  • 최초 적합
  • 최적 적합
  • 최악 적합

아래 그림과 같이 메모리의 사용자 영역은 총 200MB고 20MB 크기의 프로세스를 적재하고 싶다고 가정해 보자. 프로세스를 적재할 수 있는 빈 공간 A, B, C 세 군대가 있다.

최초 적합

최초 적합(first fit)은 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식이다. 검색을 최소화할 수 있고 결과적으로 빠른 할당이 가능하다.

최적 적합

최적 적합(best fit)은 운영체제가 빈공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치하는 방식이다.

최악 적합

최악 적합(worst fit)은 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치하는 방식이다.

외부 단편화

프로세스들이 메모리에 연속적으로 할당되는 환경에서는 프로세스들이 실행되고 종료되기를 반복하며 메모리 사이 사이에 빈 공간들이 생긴게 된다. 이 공간들은 분명 빈 공간임에도 그 공간보다 큰 프로세스를 적재하기 어려운 상황을 초래하고, 결국 메모리 낭비로 이어지게 된다. 이러한 현상을 외부 단편화(external fragmentation)라고 한다.

외부 단편화를 해결할 수 잇는 대표적인 방안으로 메모리를 압축(compaction)하는 방법이 있다. 메모리 조각 모음이라고도 부르는데 여기저기 흩어져 있는 빈 공간들을 하나의 큰 공간으로 만드는 방법이다.

다만 압축 방식은 여러 단점이 있다. 작은 빈 공간들을 하나로 모으는 동안 시스템은 하던 일을 중지해야 하고, 메모리에 있는 내용을 옮기는 작업은 많은 오버헤드를 야기하며, 어떤 프로세스를 어떻게 움직여야 오버헤드를 최소화하며 압축할 수 있는지에 대한 명확한 방법을 결정하기 어렵다.

0개의 댓글