컴퓨터 과학

[운영체제] 가상 메모리 - 내부 단편화

Data Jun 2025. 12. 1. 22:51

운영체제가 프로세스를 메모리에 적재할 때에는 단순히 연속된 공간에 그대로 올리지 않고,
**페이징(Paging)**이라는 방식을 사용합니다.
페이징은 프로세스의 논리 주소 공간을 일정한 크기의 “페이지(Page)” 단위로 나누어
물리 메모리의 “프레임(Frame)”에 저장하는 방식이죠.

 

그런데 이 과정에서 자연스럽게 발생하는 문제가 하나 있습니다.
바로 **내부 단편화(Internal Fragmentation)**입니다.

 

1. 내부 단편화

페이지 크기보다 작은 조각이 남아 버려지는 메모리 낭비

 

페이징 시스템에서는 모든 과정을 “페이지 단위”로 처리합니다.
하지만 실제 프로세스의 크기는 페이지 크기와 딱 맞아떨어지지 않는 경우가 대부분입니다.

예를 들어 볼까요?

 

2. 예시로 디해하는 내부 단편화

✔ 페이지 크기: 10KB

✔ 프로세스 크기: 107KB

107KB를 페이지 단위로 나누면:

  • 10KB 페이지 × 10개 = 100KB
  • 마지막 남는 7KB → 새로운 페이지 하나가 더 필요

즉, 총 11개의 페이지가 필요합니다.

그런데 문제는…

마지막 페이지는 실제로 7KB만 사용하고
나머지 3KB는 비어 있지만 페이지 전체가 할당됨.

 

이 3KB가 바로 내부 단편화입니다.

이미지 속 마지막 부분의 흰색/줄무늬로 표시된 영역이
바로 이 “낭비되는 메모리 공간”을 시각적으로 보여주는 부분입니다.

 

3. 내부 단편화가 왜 문제일까?

  • 프로세스가 많아질수록 낭비되는 공간도 누적됨
  • 메모리 사용률이 떨어짐
  • 특히 작은 페이지 단위가 아닌 큰 페이지 단위를 사용할수록 더 많이 발생

하지만 완전히 피할 수는 없습니다.
페이징 구조에서는 페이지 크기로 딱 나눠떨어지지 않는 한
항상 조금씩 내부 단편화가 생기는 것이 자연스러운 현상입니다.

 

 

 

정리하면

 

페이징 시스템은 프로세스를 일정 크기 페이지로 나누어 관리


✔ 프로세스 크기가 페이지 크기와 딱 맞지 않으면
→ 마지막 페이지에 “빈 공간”이 남음
✔ 이 낭비된 공간을 **내부 단편화(Internal Fragmentation)**라고 부름
✔ 페이지 크기가 클수록 내부 단편화는 증가하는 경향이 있음