Post

⚡ 운영체제 - 메모리 단편화와 해결 기법

⚡ 운영체제 - 메모리 단편화와 해결 기법

🔹 단편화(Fragmentation)란?

  • 단편화는 메모리 공간이 비효율적으로 분할되어 사용되지 못하는 현상을 말한다.
  • 주로 메모리 할당과 해제가 반복되면서 발생하며, 전체 메모리 용량이 충분하더라도 실제 할당이 불가능한 상황이 발생할 수 있다.
  • 크게 내부 단편화와 외부 단편화로 나뉜다.

🔹 내부 단편화(Internal Fragmentation)

▫️ 정의

  • 할당된 메모리 블록 내부에 사용되지 않는 공간이 존재하는 경우
  • 고정 크기 메모리 블록을 사용하는 시스템에서 발생

▫️ 예시

  • 프로세스가 18KB 필요하지만, 시스템은 20KB 단위로만 할당 → 2KB 낭비

▫️ 특징

  • 블록 내부의 미사용 공간
  • 사용자 입장에서는 접근 불가
  • 해결이 어려움

🔹 외부 단편화(External Fragmentation)

▫️ 정의

  • 메모리 전체에는 충분한 여유 공간이 존재하지만, 연속된 공간이 부족해서 할당이 불가능한 경우

▫️ 예시

  • 5KB, 8KB, 3KB 조각이 흩어져 있지만, 10KB 연속 공간이 없음

▫️ 특징

  • 블록 외부의 조각난 공간
  • 동적 할당이 잦은 시스템에서 자주 발생

🔹 단편화 해결 기법

▫️ 압축(Compaction)

  • 외부 단편화를 줄이기 위해 조각난 메모리를 한쪽으로 몰아 연속 공간 확보
  • 전체 프로세스를 이동시켜야 하므로 비용이 큼

▫️ 페이징(Paging)

  • 물리 메모리를 고정 크기의 프레임으로 나누고, 가상 메모리를 페이지 단위로 관리
  • 연속된 물리 공간이 필요 없어 외부 단편화 발생하지 않음
  • 내부 단편화는 여전히 존재할 수 있음

▫️ 세그멘테이션(Segmentation)

  • 메모리를 의미 단위(세그먼트)로 나누어 관리
  • 논리 구조는 좋지만, 여전히 외부 단편화는 발생

🔹 비교 요약

구분내부 단편화외부 단편화
발생 위치블록 내부 미사용 공간블록 외부 조각 공간
원인고정 크기 블록 할당연속된 공간 부족
해결 방식제한적 (해결 어려움)압축, 페이징 등으로 해결 가능

🔹 정리

  • 단편화는 메모리 효율성에 직접적인 영향을 주는 문제이며, 메모리 관리 전략 선정의 기준이 된다.
  • 운영체제 설계, GC 튜닝, 메모리 최적화 문제 등에서도 단편화 개념은 유효하게 작동한다.
  • 페이징과 세그멘테이션은 단편화 해결을 위한 대표적인 구조이며, 각각의 장단점을 숙지해야 한다.
This post is licensed under CC BY 4.0 by the author.