운영체제가 프로세스를 메모리에 적재할 때에는 단순히 연속된 공간에 그대로 올리지 않고,
**페이징(Paging)**이라는 방식을 사용합니다.
페이징은 프로세스의 논리 주소 공간을 일정한 크기의 “페이지(Page)” 단위로 나누어
물리 메모리의 “프레임(Frame)”에 저장하는 방식이죠.
그런데 이 과정에서 자연스럽게 발생하는 문제가 하나 있습니다.
바로 **내부 단편화(Internal Fragmentation)**입니다.
1. 내부 단편화

페이지 크기보다 작은 조각이 남아 버려지는 메모리 낭비
페이징 시스템에서는 모든 과정을 “페이지 단위”로 처리합니다.
하지만 실제 프로세스의 크기는 페이지 크기와 딱 맞아떨어지지 않는 경우가 대부분입니다.
예를 들어 볼까요?
2. 예시로 디해하는 내부 단편화
✔ 페이지 크기: 10KB
✔ 프로세스 크기: 107KB
107KB를 페이지 단위로 나누면:
- 10KB 페이지 × 10개 = 100KB
- 마지막 남는 7KB → 새로운 페이지 하나가 더 필요
즉, 총 11개의 페이지가 필요합니다.
그런데 문제는…
마지막 페이지는 실제로 7KB만 사용하고
나머지 3KB는 비어 있지만 페이지 전체가 할당됨.
이 3KB가 바로 내부 단편화입니다.
이미지 속 마지막 부분의 흰색/줄무늬로 표시된 영역이
바로 이 “낭비되는 메모리 공간”을 시각적으로 보여주는 부분입니다.
3. 내부 단편화가 왜 문제일까?
- 프로세스가 많아질수록 낭비되는 공간도 누적됨
- 메모리 사용률이 떨어짐
- 특히 작은 페이지 단위가 아닌 큰 페이지 단위를 사용할수록 더 많이 발생
하지만 완전히 피할 수는 없습니다.
페이징 구조에서는 페이지 크기로 딱 나눠떨어지지 않는 한
항상 조금씩 내부 단편화가 생기는 것이 자연스러운 현상입니다.
정리하면
페이징 시스템은 프로세스를 일정 크기 페이지로 나누어 관리
✔ 프로세스 크기가 페이지 크기와 딱 맞지 않으면
→ 마지막 페이지에 “빈 공간”이 남음
✔ 이 낭비된 공간을 **내부 단편화(Internal Fragmentation)**라고 부름
✔ 페이지 크기가 클수록 내부 단편화는 증가하는 경향이 있음
'컴퓨터 과학' 카테고리의 다른 글
| [자료구조] 연결 리스트 (0) | 2025.12.07 |
|---|---|
| [자료구조] 배열 (0) | 2025.12.07 |
| [운영체제] 가상 메모리 - 외부 단편화 (0) | 2025.11.30 |
| [운영체제] 가상 메모리 - 물리 주소와 논리 주소 & 스와핑 (0) | 2025.11.30 |
| [운영체제] CPU 스케줄링 - CPU 활용률 (0) | 2025.11.30 |