연속 메모리 할당 방식은 말 그대로 프로세스를 연속적으로 메모리 공간을 할당하는 방식을 말합니다.

프로세스 A는 A의 크기만큼 메모리 주소를 할당받아 연속적으로 배치되고, 또 다른 프로세스도 마찬가지로 크기만큼 메모리 주소를 할당받아 연속적으로 배치됩니다.

연속 메모리 할당 방식에는 3가지 방식이 있습니다.

  • 최초 적합(First - Fit) : 할당할 프로세스 크기보다 크거나 같은 빈 공간을 탐색하고 가장 먼저 찾은 빈 공간에 프로세스를 할당하는 방식입니다.

  • 최적 적합(Best - Fit) : 할당할 프로세스 크기와 빈 공간 크기의 차이가 가장 적은 빈 공간에 프로세스를 할당하는 방식입니다.

  • 최악 적합(Worst - Fit) : 할당할 프로세스 크기와 빈 공간 크기의 차이가 가장 큰 빈 공간에 프로세스를 할당하는 방식입니다.

각 할당 방식의 일반적인 성능을 비교해보면, 속도면에서는 최초 적합이 가장 빠릅니다. 그리고 메모리 이용률에서는 최초 적합, 최적 적합이 비슷한 성능을 가집니다.

하지만 최적 적합을 사용하더라도 외부 단편화로 인해 전체 메모리의 1/3을 낭비한다고 알려져 있습니다.

그러면 이 외부 단편화는 무엇일까요?

외부 단편화

요즘은 메모리에 프로세스가 여러 개 할당되는 다중 프로그래밍 환경입니다.

시간이 지나면서 프로세스가 메모리에 올라가고 나가고를 반복하면서 여러 구역에 서로 다른 크기의 빈 공간이 존재하게 될 것입니다. 이런 빈 공간들이 흩어져 있다고볼 수 있는데, 이런 빈 공간들이 불연속하게 흩어져 있는 상태메모리 단편화(Memory Fragmentation)라고 합니다.

메모리 단편화로 인해 여러 구역에 빈 공간들이 흩어져서 생기면 메모리에 프로세스를 적재하는데 문제가 발생할 수 있습니다.

어떤 문제가 발생하는지 예를 들어 설명하자면, 빈 공간이 3개가 있고 각 크기는 50 byte, 80 byte, 100 byte 크기 만큼 적재할 수 있다고 가정하겠습니다. 그런데 여기서 할당하려는 프로세스의 크기는 150 byte입니다.

각 빈 공간들을 하나로 합치면 230byte로 이 프로세스를 할당할 수 있는데 실재로는 나누어져 있으므로 할당되지 못하는 문제가 발생합니다. 이러한 현상을 외부 단편화(External Fragmentation)라고 합니다.

즉, 외부 단편화는 작업보다 많은 공간이 있더라도 메모리 배치에 때문에 실제로 그 작업을 받아들일 수 없는 경우를 말합니다.

압축(Compaction)

위에서 설명한 외부 단편화를 해결할 수 있는 대표적인 방법은 바로 메모리를 압축(Compaction)하는 방법이 있습니다.

이 압축은 여러 곳에 흩어져있는 빈 공간들을 하나로 합치는 것입니다. 그렇지만 빈 공간을 옮기는 오버헤드가 너무 크고, 어느 빈 공간을 옮겨야 빠르게 합칠 수 있는지에 대한 최적의 알고리즘이 존재하지 않는다는 단점이 존재합니다.

이상으로 연속 메모리 할당에 대해서 간단히 알아봤습니다.

참고

  • KOCW - 운영체제, 양희재 교수님
  • 혼자 공부하는 컴퓨터구조 + 운영체제
profile
꾸준함으로 성장하는 개발자 지망생

0개의 댓글