2025-11-02
오늘 배운 것
📦 단편화(Fragmentation)란?
메모리를 나눠 쓰다 보니, 사용할 수 없는 공간이 생기는 현상
🧩 1. 내부 단편화 (Internal Fragmentation)
✅ 정의
할당된 메모리 블록 안에 사용되지 않고 남는 공간
🔍 왜 생겨?
- 고정 크기 블록(예: 페이지, 슬롯 등)에 작은 데이터를 넣었을 때
- 남는 공간은 있지만, 그 블록을 다른 프로세스가 쓸 수 없음
📦 예시
| 블록 크기 | 요청 크기 | 실제 할당 | 낭비된 공간 (내부 단편화) |
|---|---|---|---|
| 64KB | 60KB | 64KB | 4KB 낭비 |
| 64KB | 33KB | 64KB | 31KB 낭비 |
| 64KB | 64KB | 64KB | 0KB (딱 맞음 ✅) |
| 64KB | 65KB | ❌ 할당 실패 or 추가 블록 필요 |
→ 📌 고정 크기로 딱 떨어지지 않는 요청은 남는 공간이 무조건 생기게 되고
→ 그 “남는 부분”은 다른 프로세스가 쓸 수 없음!
✅ 특징
| 항목 | 설명 |
|---|---|
| 발생 위치 | 블록 내부 |
| 주로 발생하는 곳 | 페이징 시스템, 고정 크기 분할 |
| 해결법 | 블록 크기 조정, 동적 할당 구조 (Heap 등) |
🧱 2. 외부 단편화 (External Fragmentation)
✅ 정의
메모리 전체에는 빈 공간이 충분하지만,
연속된 큰 공간이 없어서 할당 못 하는 현상
🔍 왜 생겨?
- 메모리를 가변 크기로 분할하다 보니,
-
프로세스 종료 시 중간중간 빈틈이 생김
→ 그 공간이 합쳐지지 않으면 새로운 요청 못 받음!
📦 예시
[100KB][50KB][20KB][80KB]
→ 150KB 요청이 들어와도
→ 연속된 공간이 없어서 ❌ 할당 실패
✅ 특징
| 항목 | 설명 |
|---|---|
| 발생 위치 | 메모리 전체 공간 사이사이 |
| 주로 발생하는 곳 | 세그멘테이션, 가변 분할 방식 |
| 해결법 | Compaction (압축), 페이징 도입 |