연속 메모리 할당이란?
연속 메모리 할당이란 아래 그림과 같이 프로세스에 연속적인 메모리 공간을 할당하는 방식을 뜻합니다.
연속 메모리 할당 방식
프로세스는 메모리의 빈 공간에 할당되어야 합니다. 연속 메모리 할당 방식에는 빈 공간에 메모리를
할당하는 방식에 따라 3가지로 구분 됩니다.
최초 적합
최초 적합은 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다 적재할 수 있는 공간에 프로세스를 배치하는
방식을 뜻합니다. 위 그림과 같은 경우 빈 공간인 A - B - C 순서대로 탐색을 진행하게 되는 것이죠. 실제로는
A에 적재할 수 있기 때문에 B와 C까지 탐색을 하지 않고 빈 공간 A에 프로세스를 적재하게 됩니다.
즉, 최초 적합 방식은 프로세스가 적재될 수 있는 빈 공간을 발견하는 즉시 메모리를 할당하는 방식이므로
검색을 최소화하고 빠른 할당이 가능한 특징이 있습니다.
최적 적합
최적 적합은 운영체제가 빈 공간을 모두 검색 한 후, 프로세스가 적재 될 수 있는 공간 중 가장 적은 공간에 프로세스를
배치하는 방식을 말합니다. 위의 경우, 적재할 프로세스 20MB를 적재할 수 있는 최소 빈공간은 C가 되므로
최종적으로 C에 프로세스를 할당하게 됩니다.
최악 적합
최악 적합은 최적 적합과 반대되는 개념입니다. 운영체제가 빈 공간을 모두 검색 한 뒤에 적재 될 수 있는 공간 중
가장 큰 공간에 프로세스를 배치하는 방식을 뜻합니다. 위와 같은 경우 가장 큰 공간인 B에 프로세스가 할당되게 됩니다.
연속 메모리 할당의 문제점
연속 메모리 할당은 다음과 같이 프로세스를 메모리에 연속적으로 배치하는 방법을 말하빈다. 하지만 이는 메모리를
효율적으로 사용하는 방법은 아닙니다.
왜냐하면 해당 방식은 외부 단편화라는 문제점을 내포하고 있기 때문입니다.
외부 단편화
밑의 그림과 같은 상황이 있다고 가정해보겠습니다. 메모리의 사용자 영역이 200MB가 존재하고 있습니다.
다음과 같은 상황에서 밑의 정보와 같은 A B C D 프로세스를 차례대로 적재한다면 어떻게 될까요?
A 프로세스 - 50MB
B 프로세스 - 30MB
C 프로세스 - 100MB
D 프로세스 - 20MB
결과는 위 그림과 같습니다. 메모리 공간에 딱 맞게끔 적재가 되었습니다.
하지만 프로세스들이 동시에 진행되면서 먼저 끝나게 되는 프로세스들도 존재할 것입니다.
만약 프로세스 B와 D가 작업이 끝나면 B와 D의 자리가 빈공간이 됩니다.
다음과 같은 경우빈 공간의 크기 합은 50MB입니다. 하지만 50MB 크기의 프로세스는 적재 될 수 없습니다.
이러한 현상을 외부 단편화 현상이라고 합니다.
즉 외부 단편화는 프로세스들이 연속적으로 실행되고 종료되기를 반복하면서, 메모리 사이의 빈공간이 생기게 되는데,
해당 공간이 프로세스를 할당하기 어려울 만큼 작은 공간일 경우 메모리가 낭비되는 현상을 말합니다.
이러한 문제를 해결하는 방식으로 대표적인 것이 압축이 있습니다.
압축이란 메모리 내 흩어져 있는 빈공간들을 하나로 모으는 방식을 말합니다. 작은 공간을 하나의 큰 공간으로 만드는 것이죠. 하지만 압축 방식을 실행하려면 작은 빈공간들을 하나로 모아야 될 때 시스템이 하던 일을 중지해야 합니다.
또한 메모리에 있던 내용을 옮겨야 함으로 많은 오버헤드를 야기할 수 있습니다.
이러한 한계점을 해결하기 위해 나온 것이 바로 가상 메모리 기법입니다. 이에 대해서는 다음 글에 자세히 다뤄보도록 하겠습니다.
이상으로 연속 메모리 할당 방식이란 무엇이고, 외부 단편화라는 문제점에 대해 살펴봤습니다.
글 읽어 주셔서 감사합니다!
자료 출처
https://www.youtube.com/watch?v=bNFLpMUYqSE&list=PLYH7OjNUOWLUz15j4Q9M6INxK5J3-59GC&index=40
'CS > 운영체제' 카테고리의 다른 글
페이지 교체와 프레임 할당이란? (0) | 2023.05.16 |
---|---|
가상 메모리란? (4) | 2023.05.07 |
교착 상태 (0) | 2023.04.07 |
프로세스 동기화란 (0) | 2023.03.15 |
PCB와 Context Switching이란? (0) | 2023.03.01 |