메모리 단편화란?
시스템이 메모리를 할당하고 해제하는 과정이 반복되면서, 메모리 공간이 작은 조각으로 쪼개져 총량은 충분하지만 실제로 활용하기 어려워 지는 현상을 말한다.
단편화는 내부 단편화와 외부 단편화로 나뉜다.
내부 단편화 VS 외부 단편화
- 내부 단편화 : 고정 크기 할당 시, 내부 공간이 남아서 낭비됨.
- 외부 단편화 : 가변 크기 할당 시, 빈 공간의 총량은 충분하나 쪼개져 있어서 할당 불가능.
1. 내부 단편화
프로그램이 필요한 양보다 더 큰 메모리가 할당되어 내부에서 남는 공간이 발생하는 현상
- 발생 이유
메모리를 쪼갤 때 제각각 나누면 관리가 복잡해지기 때문에 OS는 관리 효율을 위해 메모리를 일정한 크기(ex. 4KB, 8KB)의 덩어리로 고정하여 할당하기 때문에 발생한다.
예시
64KB 단위로 쪼개서 나눠준다고 가정할 때, 48KB의 프로세스 A가 들어오면 그 구역 안의 16KB가 낭비된다.

2. 외부 단편화
가변 크기로 메모리를 할당 할 때, 메모리의 할당과 해제가 반복되며 사용 가능한 빈 공간이 여러 곳에 작은 조각 형태로 흩어져, 전체 빈 공간의 크기는 충분하지만 연속된 큰 공간이 부족해 새로운 프로그램을 적재하지 못하는 현상을 말한다.
예시
총 메모리가 100MB인 시스템이 존재하고, 프로세스 A(40MB), B(30MB), C(30MB)가 차례대로 들어온다.
- 중간에 있던 B(30MB)가 작업을 마치고 나간다. (가운데 30MB 빈 공간 발생)
- 맨 뒤에 있던 C(30MB)도 나간다. (맨 뒤에 30MB 빈 공간 발생)
이제 총 남는 공간은 60MB(30MB + 30MB). 그런데 이때 50MB짜리 프로세스 D가 들어오려고 한다면 총용량(60MB)은 충분하지만, 빈 공간이 30MB씩 찢어져 있어서 50MB짜리 덩어리가 연속으로 들어갈 자리가 없게 된다.

단편화 해결 기법
| 해결 기법 | 주요 대상 | 특징 및 한계 |
|---|---|---|
| 압축 (Compaction) | 외부 단편화 | 흩어진 빈 공간을 한쪽으로 몰아 큰 덩어리를 만드는 방법. 메모리 데이터를 통째로 이동시켜야 하므로 디스크 조각 모음처럼 시스템 오버헤드가 매우 큼. |
| 통합 (Coalescing) | 외부 단편화 | 메모리가 해제될 때, 인접한 빈 공간이 있으면 서로 합쳐서 큰 덩어리로 만드는 기법. 주기적인 관리가 필요함. |
| 페이징 (Paging) | 외부 단편화 | 현대 OS의 핵심. 물리 메모리를 고정 크기(Page Frame)로 나누고 가상 메모리를 활용해 매핑. 외부 단편화를 완벽히 해결. |
| 세그멘테이션 (Segmentation) | 내부 단편화 | 메모리를 코드, 데이터, 스택 등 논리적 단위(Segment)로 나누어 가변 할당. 내부 단편화는 없지만 외부 단편화가 다시 발생할 수 있음. |
현대 운영체제는 외부 단편화 문제를 해결하기 위해 페이징 기법을 사용한다. 페이징은 가상 메모리를 일정한 크기의 페이지 단위로 나누고, 이를 물리 메모리의 비연속적인 공간에 분산하여 저장하는 방식이다.
이 과정에서 페이지 테이블을 이용해 논리 주소를 물리 주소에 매핑하므로, 물리 메모리가 연속되어 있지 않아도 프로세스에는 연속된 메모리 공간처럼 제공할 수 있다. 이를 통해 외부 단편화 문제를 효과적으로 해결할 수 있다.
'CS' 카테고리의 다른 글
| [네트워크] IPv4와 IPv6의 헤더 구조 및 터널링 방법 (0) | 2026.04.26 |
|---|---|
| [OS] 페이지 교체 정책 (0) | 2026.04.19 |
| [네트워크] 인터넷 검열과 망 중립성 (0) | 2026.03.15 |
| [네트워크] SNI와 암호화 기법 (0) | 2026.03.08 |
| [네트워크] 웹의 언어 HTTP와 HTTPS (1) | 2026.03.01 |