운영체제 아주 쉬운 세가지 이야기 6주차 (메모리 가상화 2-1)
2025. 10. 14. 20:05ㆍ개념 공부
Base–Bounds와 Segmentation의 차이 완전 정리
1️⃣ 기본 개념
Base–Bounds(동적 재배치)는 프로세스 전체를 하나의 덩어리로 보고, 시작 주소(Base)와 크기(Limit)로 관리합니다.
반면 Segmentation(세그멘테이션)은 프로그램을 여러 논리적 구역(세그먼트)으로 나누어 각 구역마다 Base와 Limit을 따로 둡니다.
Base–Bounds
┌──────────────────────┐
│ 프로세스 전체 │
└──────────────────────┘
Base Limit
Segmentation
┌────────────┐ ← 코드 세그먼트 (Base0, Limit0)
│ Code │
├────────────┤ ← 데이터 세그먼트 (Base1, Limit1)
│ Data │
├────────────┤ ← 스택 세그먼트 (Base2, Limit2)
│ Stack │
└────────────┘
2️⃣ 주소 변환 방식
- Base–Bounds: 가상주소 VA가 주어지면 물리주소는
PA = Base + VA - Segmentation: (세그먼트번호, 오프셋) 쌍으로 구성되어
PA = Base[seg] + Offset
예를 들어, Heap 세그먼트(Base=34KB, Size=3KB)에서 VA=4200이라면:
Heap 오프셋 = 4200 - 4096 = 104 → PA = 34KB + 104 = 34920
3️⃣ 보호와 공유 측면
| 구분 | Base–Bounds | Segmentation |
|---|---|---|
| 보호(Protection) | 전체 범위 초과 시 차단 (단순) | 세그먼트별로 읽기/쓰기/실행 권한 부여 가능 |
| 공유(Sharing) | 어렵다 (전체를 통째로 공유해야 함) | 코드 세그먼트 등 특정 부분만 공유 가능 |
4️⃣ 단편화(메모리 낭비 양상)
- Base–Bounds → 내부 단편화
프로세스 전체를 한 덩어리로 배치하므로 실제로 쓰지 않는 공간까지 포함될 수 있음. - Segmentation → 외부 단편화
세그먼트들이 가변 크기라서 메모리 사이사이에 ‘구멍(hole)’이 생길 수 있음.
5️⃣ 성장과 확장성
- Base–Bounds: 프로세스 크기가 커지면 더 큰 연속 공간이 필요 → 재배치 필요.
- Segmentation: 힙/스택 세그먼트를 따로 두면 필요한 부분만 확장 가능(단, 여전히 연속 공간은 확보해야 함).
6️⃣ 하드웨어 복잡도
- Base–Bounds: 단순한 경계 검사 + 더하기 1회 → 빠르고 구현 쉬움.
- Segmentation: 세그먼트 선택 + 경계 검사 + 더하기 → 복잡하지만 유연.
7️⃣ 요약 비교표
| 항목 | Base–Bounds | Segmentation |
|---|---|---|
| 주소 변환 단위 | 프로세스 전체 | 세그먼트별 (코드/데이터/스택 등) |
| 레지스터 | Base 1개 + Limit 1개 | 세그먼트마다 Base[i], Limit[i] |
| 보호 단위 | 프로세스 전체 | 세그먼트별 (세밀한 보호) |
| 공유 가능성 | 낮음 | 높음 (코드 세그먼트 공유 가능) |
| 단편화 | 내부 단편화 | 외부 단편화 |
| 확장성 | 크기 변경 시 재배치 필요 | 세그먼트별 독립적 성장 가능 |
| 하드웨어 복잡도 | 낮음 | 높음 |
핵심 요약
- Base–Bounds: “한 덩어리, 단순한 보호”
- Segmentation: “구조적, 세밀한 보호/공유, 하지만 단편화 문제 존재”
- Paging: “균등 크기 블록으로 단편화 해결 → 현대 가상 메모리의 핵심”
'개념 공부' 카테고리의 다른 글
| 운영체제 아주 쉬운 세가지 이야기 8주차(페이징 입문) (0) | 2025.10.29 |
|---|---|
| 운영체제 아주 쉬운 세가지 이야기 7주차 (빈 공간 관리) (0) | 2025.10.21 |
| 운영체제 아주 쉬운 세가지 이야기 6주차 (메모리 가상화 2) (0) | 2025.10.14 |
| 운영체제 아주 쉬운 세가지 이야기 5주차 (메모리 가상화 1) (0) | 2025.09.30 |
| 운영체제 아주 쉬운 세가지 이야기 4주차 (1-3) (0) | 2025.09.23 |