블링블링 범블링

[OS 16장] 메모리 관리 - 연속 메모리 할당 본문

Technology/오퍼레이팅 시스템

[OS 16장] 메모리 관리 - 연속 메모리 할당

뻠스키 2018. 4. 17. 17:45



컴퓨터의 구조가 발달되어 오면서 운영체제는 다중 프로그래밍 환경을 조성하게 된다부팅 직후 메모리에 운영체제가 하드디스크로부터 적재되고 컴퓨터가 동작을 하는 것을 기다린다그 후 여러 가지의 프로그램이 동시에 올라와서 스케줄링에 의해 CPU나 I/O를 할당받는다처음에 부팅 직후에는 운영체제만 적재되어 있으므로 운영체제를 제외한 공간이 모두 비어 있게 된다그래서 big single hole이 생기게 된다이 후 프로세스가 생성되고 종료되는 작업을 반복하며 컴퓨터가 동작하게 된다이 때는 프로세스들은 여러 위치의 메모리에 적재되기 때문에 scattered holes가 생성되게 된다프로세스가 순서대로 쌓이더라도 작업이 끝나는 순서는 정해져 있지 않고 다시 들어오는 프로세스와도 메모리 공간 차지 사이즈가 다르기 때문에 메모리의 빈 공간이 중간 중간에 계속 생성될 것이다.



scattered holes가 계속 발생하게 되면 hole 들이 불연속하게 흩어져 있게 되어 메모리 단편화 현상이 발생하게 된다이렇게 되면 메모리의 빈 공간은 많은데 사이즈가 작은 빈 공간이 많아 다른 프로세스를 적재할 수 없는 현상이 발생한다이러한 현상을 외부 단편화라고 한다. hole들의 크기를 모두 합치면 프로세스를 충분히 적재할 수 있는데 떨어져 있어서 프로세스가 못 들어가는 현상이다메모리 관리자 입장에서 보면 메모리가 충분히 비어 있는데도 프로세스를 넣지 못하니 매우 억울한 상황이다.


외부 단편화를 없애는 방식으로 연속 메모리 할당 방식을 사용한다연속 메모리 할당 방식에도 3가지의 방법이 존재한다.


최초 적합(First-fit)은 메모리를 순차적으로 탐색하여 제일 먼저 발견한 적절하게 들어갈 수 있는 곳을 찾아 프로세스를 적재하는 방법이다.


최적 적합(Best-fit)은 메모리를 탐색하여 메모리 공간 중에서 제일 적절하게 들어갈 수 있는 곳을 찾아 프로세스를 적재하는 방법이다.


최악 적합(Worst-fit)은 메모리에 넣는데 크기와 제일 안 맞는 공간(프로세스보다 큰 메모리 공간 중에서)에 프로세스를 넣는 방식이다.


할당 방식에 따른 성능을 비교해보면 속도 측면에서는 최초 적합이 좋다최초 적합은 메모리를 순서대로 탐색하여 가장 먼저 발견되는 공간에 적재하기 때문에 속도 면에서는 가장 빠르다고 할 수 있다이용률의 측면에서 보면 최적 적합이 좋다속도는 조금 떨어지지만 정확하게 맞는 위치에 들어가는 방식을 취하기 때문에 애매한 빈 공간을 창출할 일이 많이 없다최초 적합의 경우는 자신의 프로세스 크기보다 메모리 공간이 더 큰 경우가 발생하면 무조건 프로세스를 넣지만 최적 적합은 빈 공간을 제일 안 만드는 측면으로 프로세스를 적재한다하지만 대부분의 경우를 비교해보면 최초 적합과 최적 적합의 이용률의 차이가 많이 발생하지는 않는다.


연속 메모리 할당의 방식을 사용하더라도 외부 단편화로 인한 메모리 낭비가 1/3 정도 발생한다그러므로 비싼 메모리의 공간을 많이 사용할 수 없으니 문제가 크다고 할 수 있다이런 방식을 해결하는 또 다른 방법이 Compaction이다. Compaction은 hole 들을 한 곳으로 모으겠다는 방식이라고 할 수 있다한 곳으로 모으기 위해서는 메모리를 움직여야한다그래서 메모리 계산에 대한 부담이 크다또한 hole을 어디로 움직이는 게 좋은가에 대한 문제가 발생한다이렇기 때문에 hole을 움직이거나 프로세스를 움직이는 Compaction 방식의 최적의 알고리즘은 존재하지 않는다하지만 이런 방식이 있다는 것은 기억하는 것이 좋을 것 같다그렇다면 이렇게 메모리 낭비가 심한데 어떻게 해결을 한 것일까그 방법이 바로 페이징이다페이징은 다음 장에서 설명할 것이다.




Comments