파편화(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 |