Fragment(단편화)
(해당 그림들은 예시로, 실제 메모리는 4의 배수나 8의 배수처럼 일정한 배수로 할당된다.)
- 내부단편화 : 메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어 프로세스에서 사용하는 공간이 낭비되는 현상, 그림에서 보면 10 만큼의 메모리를 가지고 있는 블럭이 8 만큼의 메모리가 필요한 작업이 사용하도록 할당되면서 2만큼의 내부 단편화가 발생한 예시이다.
- 외부단편화 : 실제 메모리 상에 남은 공간은 충분하나 실제로 할당할 수 없는 상황, 그림에서 보면 실제 메모리에 남은 공간은 57이지만 16의 작업을 처리하도록 메모리를 할당 할 수 없는 상황이다. 이러한 경우는 메모리의 할당화 해제가 반복되면서도 생길 수 있고 그림과 같은 경우에도 발생 가능하다.
hole : 가용 메모리 공간, free block
dynamic storage-allocation problem : 가변 분할 방식에서 size n인 요청을 만족하는 가작 적절한 hole을 찾는 문제
- First-fit : size 가 n 이상인 것 중 최초로 발견한 hole에 할당
- Next-fit : size가 n 이상인 것 중 최초로 발견한 hole에 할당 하나 탐색 범위는 이전에 할당한 블럭의 다음 부터 시작
- Best-fit : size가 n 이상인 hole 중 가장 작은 hole을 찾아서 할당, hole의 크기순으로 정렬되어 있지 않은 경우는 모든 hole의 리스트를 탐색해야 함
- Worst-fit : 가장 큰 hole에 할당, 모든 리스트를 탐색해야 함
compaction
- external fragmentation 문제를 해결하는 한 가지 방법
- 사용 중인 메모리 영역을 한군데로 몰고 hole들을 다른 한 곳으로 몰아 큰 block을 만드는 것