[운영체제] 내부 단편화, 외부 단편화란? | 외부단편화 해결 방법

내부 단편화 (Internal Fragmentation)

내부 단편화란 주기억장치 내 사용자 영역이 실행 프로그램보다 커서 프로그램의 사용 공간을 할당 후 사용되지 않고 남게 되는 현상을 말한다. 

 

예를 들어 아래와 같은 그림을 살펴보자.

내부단편화1
내부단편화

위와 같이 100MB의 메모리에 80MB 크기의 프로세스를 올리게 되면, 

내부단편화2
내부단편화

20MB의 내부 단편화가 발생하게 된다. 즉, 적은 크기의 잔여 메모리가 발생해 해당 메모리를 사용할 수 없게 된다.

외부 단편화 (External Fragmentation)

외부 단편화란 남아있는 총 메모리 공간이 요청한 메모리 공간보다 크지만, 남아있는 공간이 연속적(contiguous)이지 않아 발생하는 현상이다.

 

예를 들어 아래와 같은 그림을 살펴보자.

외부단편화
외부단편화

위와 같이 남아있는 메모리 공간은 50MB+50MB =100MB로 요청한 메모리 공간 80MB보다 크지만, 남아있는 공간이 연속적이지 않아 Process C를 할당할 수가 없게 된다. 따라서 남아있는 메모리 공간이 낭비되게 되는 문제가 발생한다.

외부 단편화 해결방법 - 압축 ( Compaction )

외부 단편화 문제를 해결하기 위해서 압축 기법을 사용할 수 있다. 압축 기법은 주기억장치 내 분산되어 있는 단편화된 공간들을 통합하여 하나의 커다란 빈 공간을 만드는 작업을 의미한다.

 

예를 들어 아래와 같이 외부단편화가 발생한 상황을 살펴보자.

외부단편화
외부단편화

이때 빈 공간을 하나의 연속된 공간으로 만들면(압축) 아래와 같이 된다.

압축
압축

위와 같이 흩어져 있던 공간을 연속된 공간, 즉 하나의 공간으로 만들면 기존에 할당 할 수 없던 프로세스를 할당할 수 있게 된다.

압축 결과
압축 결과

따라서 위와 같이 할당 할 수 있다. 


 

반응형

댓글

Designed by JB FACTORY