Learning
토픽 47 / 85·메모리 관리

메모리 단편화 (Memory Fragmentation)

메모리 단편화 (Memory Fragmentation)

메모리 공간이 작은 조각들로 나뉘어 충분한 총 메모리가 있음에도 연속 공간 할당이 불가능해지는 현상으로, 내부 단편화와 외부 단편화로 구분

목적: 메모리 효율성 이해, 할당 기법 비교, 단편화 해결책 학습

특징: 메모리 낭비, 할당 실패, 해결 기법 필요, 기법별 특성

내부 단편화 (Internal Fragmentation)

  • 정의: 할당된 메모리 블록 내부에서 사용되지 않는 공간
  • 원인: 고정 크기 블록 할당, 페이지 내 남는 공간
  • 예: 100바이트 요청에 128바이트 블록 할당 → 28바이트 낭비
  • 해결: 가변 크기 할당, 작은 블록 풀, 슬랩 할당자

외부 단편화 (External Fragmentation)

  • 정의: 할당된 블록들 사이에 흩어진 작은 빈 공간들
  • 원인: 가변 크기 할당과 해제 반복
  • 예: 총 빈 공간 500바이트지만 연속 300바이트 할당 불가
  • 해결: 압축(Compaction), 페이징, 버디 시스템

해결 기법

  • 압축(Compaction): 사용 중인 블록을 한쪽으로 이동, 큰 빈 공간 확보
  • 페이징: 연속 할당 불필요, 외부 단편화 제거
  • 세그먼테이션 + 페이징: 논리적 분할 + 물리적 페이징
  • 버디 시스템: 2의 거듭제곱 크기 분할, 단편화 제한

50% 규칙(Knuth): 정상 상태에서 hole의 수 = 할당 블록 수의 약 1/2, 결과적으로 메모리의 약 1/3이 hole로 낭비

장점: 문제 인식으로 적절한 기법 선택

단점: 완전 제거 어려움, 기법별 오버헤드

적용사례: 메모리 할당자, 페이징, 힙 관리

비교: 내부(블록 내 낭비) vs 외부(블록 간 낭비)

연관: 페이징, 세그먼테이션, 메모리 할당, First/Best/Worst Fit