[CS] 메모리 단편화 (Fragmentation)

🧠·2022년 5월 6일
0

CS

목록 보기
1/4

메모리 단편화 (Memory Fragmentation)

RAM에 새로운 프로그램 할당을 요청할 때 RAM에 비어 있는 메모리 공간이 있음에도 불구하고 해당 요청을 처리할 수 없을 때 메모리 단편화가 발생했다고 한다.

메모리 단편화의 종류에는 내부 단편화, 외부 단편화 2가지가 있다.

내부 단편화 (internal fragmentation)

  • 할당된 블록의 크기가 데이터(Payload)보다 더 클 때 일어난다.
  • 이미 할당된 블록에서 사용되지 않는 메모리 공간
    ex) 프로세스에 30 MB를 할당했지만 20 MB만 사용했을 때 (내부 단편화 10 MB 발생)

내부 단편화는 이전에 요청한 메모리 공간과 블록 크기를 보고 측정하기 때문에 정량화하기 간단하다.

외부 단편화 (external fragmentation)

  • 위 그림과 같이 비어 있는 메모리 공간을 합쳤을 때에는 충분한 공간이 확보되어 있는 것으로 보이지만 요청 받은 크기의 단일 블록이 없을 때 발생한다.
  • 비어 있는 공간은 어떠한 프로그램에도 할당되어 있지 않은 상태이다.
  • 이 때문에 커널에 추가적인 가상메모리를 요청할 수 밖에 없다.

외부 단편화는 미래에 어떤 크기의 메모리 요청이 들어올 지 모르기 때문에 정량화하기 어렵다.

그렇기 때문에 메모리 할당기들은 외부 단편화를 해결하기 위해 여러개의 작은 블록들 보다는 적은 수지만 더 큰 블록들을 유지하는 방법을 채택한다고 한다.

profile
: )

0개의 댓글