둠치킨
코딩하는 둠치킨
둠치킨

블로그 메뉴

  • 홈
  • 분류 전체보기 (218)
    • BOJ (171)
      • 스택 (14)
      • 큐 (5)
      • 덱 (4)
      • 그래프 (30)
      • 배열 (8)
      • 재귀 (12)
      • 브루트 포스 (2)
      • 그리디 알고리즘 (7)
      • 다이내믹 프로그래밍 (13)
      • 백트래킹 (24)
      • 기하학 (4)
      • 트리 (4)
      • 구현 (14)
      • 수학 (3)
      • 맵 (1)
      • 다익스트라 (2)
      • 누적합 (5)
    • 자료구조 (14)
      • 스택 (3)
      • 큐 (5)
      • 덱 (2)
      • 그래프 (1)
      • 트리 (1)
      • 힙 (1)
      • 정렬 (1)
    • C++ (11)
      • 모두의코드 (2)
      • Effective C++ (3)
      • C++ STL (6)
    • 컴파일러 (1)
    • OS (17)
    • 컴퓨터 구조 (2)
    • Unreal Engine 5 (2)

공지사항

전체 방문자
오늘
어제

인기 글

최근 글

태그

  • BFS
  • boj
  • Bruteforce
  • C
  • C++
  • C++ STL
  • Cache Memory
  • deadlock
  • DFS
  • Effective C++
  • java
  • Mutex
  • next_permutation
  • os
  • Process
  • rotate
  • semaphore
  • spin lock
  • STL
  • STL C++
hELLO · Designed By 정상우.
둠치킨

코딩하는 둠치킨

파편화 (Fragmentation)
OS

파편화 (Fragmentation)

2025. 6. 24. 00:25

파편화(Fragmentation)란?

파편화는 메모리를 할당하고 해제하는 과정에서 사용하지 못하는 공간이 군데군데 생겨나는 현상이다.
전체 메모리의 총합은 충분해 보이지만, 연속된 큰 공간이 없거나 공간이 낭비되어 새로운 메모리 할당이 실패하게 된다.

운영체제의 메모리 관리 효율성을 저해하는 주요 원인 중 하나로, 외부 파편화와 내부 파편화로 나뉜다.


파편화의 종류

1. 외부 파편화 (External Fragmentation)

  • 여러 프로세스의 할당과 해제가 반복되면서, 빈 공간이 조각조각 흩어진 상태
  • 메모리 총량은 충분하지만, 요구된 크기만큼 연속된 공간이 없어 할당에 실패한다.
  • 주로 가변 크기 메모리 할당 방식에서 발생한다.

2. 내부 파편화 (Internal Fragmentation)

  • 프로세스에 할당된 메모리 블록이 실제 필요한 양보다 클 때 발생하는 낭비
  • 예: 18KB가 필요한데 20KB 단위 블록으로만 할당된다면, 2KB는 낭비
  • 주로 고정 크기 블록 할당 방식에서 발생한다.

 


파편화 해결 방법

1. 압축 (Compaction)

  • 메모리 공간을 한쪽으로 몰아 배치하여 조각을 제거하는 방식
  • 외부 파편화에 유효
  • 단점: 실시간 시스템에는 부적합, 성능 저하 가능

2. 동적 메모리 할당 전략 개선

  • Best Fit: 가장 작은 충분한 공간에 할당 (파편화 최소화에 유리하나 탐색 비용 높음)
  • First Fit: 앞에서부터 첫 번째로 맞는 공간에 할당 (속도는 빠르나 파편화 위험 존재)
  • Worst Fit: 가장 큰 공간에 할당 (자잘한 공간이 남지 않도록 시도)

3. 통합 (Coalescing)

  • 인접한 빈 공간들을 병합하여 더 큰 블록으로 만드는 방식
  • 할당 해제 시 주기적으로 수행

가상 메모리 기법과 파편화

페이징 (Paging)

  • 메모리를 고정된 크기(page)로 나누고, 물리 주소에 연속성을 요구하지 않음
  • 프로세스는 페이지 단위로 관리되며, 가상 주소와 물리 주소 간 매핑이 자유로움
  • 장점:
    • 외부 파편화 없음 (필요한 페이지는 아무 위치에나 배치 가능)
  • 단점:
    • 내부 파편화 발생 가능 (마지막 페이지가 완전히 채워지지 않는 경우)

세그멘테이션 (Segmentation)

  • 메모리를 논리적인 단위(세그먼트)로 나누어 관리 (예: 코드, 데이터, 스택 등)
  • 각 세그먼트는 가변 크기이며 독립적으로 할당됨
  • 장점:
    • 내부 파편화 감소 (필요한 크기만큼만 할당)
  • 단점:
    • 외부 파편화 발생 가능 (세그먼트는 연속된 공간이 필요함)
저작자표시 (새창열림)

'OS' 카테고리의 다른 글

쓰레드와 프로세스 (Thread & Process)  (0) 2025.06.24
경쟁 조건(Race Condition)이란?  (0) 2025.06.24
동기화 객체란?  (0) 2025.06.23
데드락(Deadlock)이란?  (0) 2025.06.23
임계영역(Critical Section) 이란?  (0) 2025.06.23
    'OS' 카테고리의 다른 글
    • 쓰레드와 프로세스 (Thread & Process)
    • 경쟁 조건(Race Condition)이란?
    • 동기화 객체란?
    • 데드락(Deadlock)이란?
    둠치킨
    둠치킨
    코딩 공부를 위한 코딩 블로그 기록 일기

    티스토리툴바