본문 바로가기

Computer Science/Operating System

[Operating System] External Fragmentation 외부단편화

728x90
반응형

External Fragmentation 외부단편화

외부단편화란 메모리를 관리할 때 연속적 할당을 사용하면서 발생하는 문제점이다. 연속적 할당은 메모리를 연속적으로 배치한다는 점에서 구현하기 쉬워보이지만 반대로 말하면 메모리를 연속적으로 배치할 공간이 없으면 배치할 수 없다는 단점이 있다. 

 

여기 세 개의 프로세스가 실행 중인 메모리가 있다. 세 개의 프로세스는 메모리를 적절히 나눠 사용하고 있으며 가장 이상적인 상태라고 볼 수 있다. 

프로세스2와 프로세스3이 실행을 마치고 메모리에서 삭제되었다. 그리고 프로세스4와 프로세스5가 메모리에 적절하게 들어갔다. 아래 애매하게 남는 메모리때문에 이상적인 상태라고 볼 수는 없지만 메모리를 효율적으로 잘 사용하고 있다.

프로세스5가 실행을 마치고 메모리에서 삭제되었다. 다음으로 대기중이던 프로세스7이 메모리에 적재되려고 했으나 연속적으로 존재하는 메모리 중에는 프로세스7을 담을 수 있는 크기가 없어 대기상태가 된다.

남아있는 모든 메모리 공간을 합치면 프로세스7이 들어갈 공간이 충분하지만 연속적 할당이라는 메모리 기법을 사용하고 있기 때문에 프로세스7은 수행되지 못하고 대기상태에 있다. 이러한 상황을 외부 단편화라고 한다. 

  • External Fragmentation : 메모리가 할당되고 해제되는 작업이 반복될 때 메모리 중간 중간에 사용하지 않는 메모리가 존재하여 총 메모리 공간은 충분하지만 메모리를 할당할 수 없는 문제

 

Compaction

위와 같은 외부단편화를 해결하기 위해 가장 먼저 나온 방법이 Compaction이다. 쉽게 생각하여 사용하지 않는 분리되어 있는 메모리들을 하나의 공간으로 합치는 것이다.

이렇게 현재 메모리에서 수행중인 프로세스의 위치를 변경하여 할당가능한 새로운 연속적인 메모리를 만드는 것을 Compaction이라고 한다. 가장 간단한 방법이지만 오버헤드가 크다. 프로세스를 옮기기 위해서는 어떤 곳에 복사해두는 과정이 필요한데 이 과정에서 하드디스크에 접근하게 되고 속도가 매우 느려진다.

 

이에 대한 또 다른 해결책으로 fit라는 개념이 나왔다. Compaction이 외부단편화 발생 후에 처리하려는 관점이라면 fit은 외부단편화를 최소화시키는 관점이다.

728x90
반응형