⚡ 운영체제 - 메모리 단편화와 해결 기법
⚡ 운영체제 - 메모리 단편화와 해결 기법
🔹 단편화(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.