[SW_Jungle] Fragments and Dynamic storage-allocation problem

Jin Lee·2022년 1월 2일
0

PintOS

목록 보기
6/16
post-thumbnail

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을 만드는 것
profile
깃허브 : https://github.com/jinlee9270

0개의 댓글