메모리 단편화

IT 위키
Memory Fragmentation; 기억장치 단편화
메모리의 빈 공간이 잘게 나뉘어, 전체 여유 용량은 충분한데도 필요한 크기를 연속으로 확보하지 못하는 현상
구분 내부 단편화 외부 단편화
할당한 블록이 요청보다 커서 블록 안에 남는 공간 빈 공간이 흩어져 연속으로 못 쓰는 공간
생기는 곳 고정 분할, 페이징 가변 분할, 세그먼테이션
4KB 페이지에 3KB 만 쓰면 1KB 가 남는다 빈 칸이 10KB, 20KB 로 나뉘어 25KB 요청을 못 받는다

페이징은 외부 단편화를 없애는 대신 내부 단편화를 남기고, 세그먼테이션은 그 반대다. 시험에서 자주 묻는 지점이다.

해결 방법

[편집 | 원본 편집]
  • 압축(Compaction) — 할당된 영역을 한쪽으로 몰아 빈 공간을 하나로 합친다. 이동 비용이 크다
  • 통합(Coalescing) — 인접한 빈 블록끼리 합쳐 큰 블록으로 만든다
  • 페이징 기법 — 고정 크기 페이지로 나누어 외부 단편화를 없앤다
  • 버디 시스템 — 2의 거듭제곱 크기로 쪼개고 합쳐 관리한다. 내부 단편화가 생기지만 통합이 빠르다
  • 슬랩 할당 — 같은 크기의 객체를 담는 캐시를 미리 만들어 둔다

배치 전략

[편집 | 원본 편집]

가변 분할에서 어느 빈 공간에 넣을지 고르는 방법에 따라 단편화 정도가 달라진다.

  • 최초 적합(First Fit) — 처음 만나는 충분한 공간. 빠르다
  • 최적 적합(Best Fit) — 가장 작은 충분한 공간. 남는 조각이 잘아져 외부 단편화가 심해질 수 있다
  • 최악 적합(Worst Fit) — 가장 큰 공간. 남는 조각이 커서 다시 쓸 여지가 있다

같이 보기

[편집 | 원본 편집]