본문 바로가기

프로그래밍/운영체제

[운영체제] External Fragmentation (외부 단편화)

이번에는 저번에 마지막으로 배웠던 mapping 에 관한 문제를 먼저 얘기해보자.

 

논리적주소를 설명하면서 mapping의 개념을 배웠다. 이를 '할당'한다는 개념이라 설명하였다.

여기서 연속 할당이란 논리적 주소에 동일한 base register를 더해주는 것이다.

 

우리는 연속 할당의 문제점에 대해 얘기를 할 것이다.

 

 

 

 


 

외부 단편화 (External Fragmentation)

일단 두가지 용어를 알아야 한다.

 

  • Partition 
  • Hole

 

아래의 예시를 통해 개념을 알아보자

 

운영체제는 Hole 을 제외한 파티션의 개수만큼 동시 실행이 가능하다. 만약 새로운 프로그램을 실행하려 하는데,

요구하는 프로세스의 용량이 Hole의 크기보다 크면 메모리에 올라갈 수 없어 실행되지 못한다.

 

 

 

F는 실행 가능할까??

불가능하다. 프로세스 F가 들어갈 연속된 자리가 없으므로

따지고 보면 F가 들어갈 빈 공간은 충분하다. 위의 흰색칸이 Hole에 해당하는데, Hole 의 합이 40보다 크다.

이렇게 메모리에 공간이 있음에도 연속된 Hole의 크기가 프로세스의 크기보다 작다는 이유로 할당되지 못하는 문제를

외부 단편화라고 한다.

 

Partition과 Hole의 개념이 이해가 가시나요?

 

해결방법을 알아보자

 

기 전에 잠시

 

우리가 Partition의 개념을 알게 되었으니까, 간단한 문제를 짚고 넘어가자.

 

 

 


FIxed Partition

 

 

만약 Partition이 고정적이라면 어떤 문제가 발생할까?

일단 Logical address가 partition의 크기를 넘어가면 안된다. 이는 MMU가 검사를 해줄것이다.

말고도

 

장점 

  •  구현 용이
  •  액세스 검증 용이 
    • 논리 주소를 파티션 크기와 비교
  •  빠른 컨텍스트 전환
    • 저장만 하면 됨

문제점

  •  파티션 크기
    하나의 크기가 모든 것에 적합하지 않음 
  •  내부 단편화

내부 단편화는..

 

옆의 그림처럼

고정 partition일때 메모리가 남는 부분이 생기는 문제가 발생한다.

이는 곧 낭비이고 문제이다.

 

 

 

 

이런 문제점들을 해결하기 위해 

위에 있었던 Variable partition(Partion의 크기가 다양한)이 나오게 되었다.