메모리에 공간이 있음에도, 사용하지 못하는 상황. ex)

  1. 32 바이트 공간에 16바이트 구조체를 올렸음.
  2. 16바이트 구조체는 8번지부터 23번지까지 올라가게 됨.
  3. 그 다음 16바이트 구조체를 하나 더 메모리에 올림.
  4. 이때, 16바이트의 공간이 남았지만, 16바이트가 올라갈 공간이 없어짐.

메모리의 외부 단편화

  • [>] 연속된 메모리 부족

메모리의 내부 단편화

  • [>] 블록 내부의 공간 낭비

메모리 단편화 (Memory Fragmentation)

정의 메모리 단편화란 메모리에 충분한 총 공간이 있음에도 불구하고, 실제로 사용하지 못하는 상황을 의미합니다.

메모리 단편화의 종류

1. 외부 단편화 (External Fragmentation)

특징

  • 연속된 메모리 공간의 부족으로 인해 발생
  • 메모리 공간이 작은 조각으로 나뉘어 있어 새로운 프로세스를 할당할 수 없는 상태

2. 내부 단편화 (Internal Fragmentation)

특징

  • 할당된 메모리 블록 내부의 공간 낭비로 인해 발생
  • 프로세스에 필요한 것보다 더 큰 메모리를 할당하여 사용하지 않는 공간이 생기는 상태

예시 상황

외부 단편화 예시

  1. 32 바이트 크기의 전체 메모리 공간이 있음
  2. 첫 번째 16바이트 구조체가 8번지부터 23번지까지 할당됨
  3. 남은 공간: 07번지(8바이트), 2431번지(8바이트)
  4. 새로운 16바이트 구조체를 할당하려고 할 때, 전체 남은 공간은 16바이트지만 연속된 16바이트 공간이 없어 할당 불가능
┌───────────────────────────────────┐
│ 메모리 (32 바이트)                │
├───────┬───────────────────┬───────┤
│ 빈공간 │ 16 바이트 구조체    │ 빈공간  │
│(8바이트)                                │(8바이트)
└───────┴───────────────────┴───────┘
 0      8                  24      32

해결 방법

단편화 해결 기법

  • 메모리 압축(Compaction): 사용 중인 메모리 블록을 한쪽으로 모아 큰 빈 공간 생성
  • 페이징(Paging): 메모리를 동일한 크기의 페이지로 나누어 관리
  • 세그먼테이션(Segmentation): 메모리를 논리적 단위인 세그먼트로 분할하여 관리

관련 개념

운영체제 메모리관리 컴퓨터구조