컴퓨터공학과 운영체제 과목에서 "한정된 물리 메모리(RAM)보다 더 큰 프로세스를 효율적으로 실행하는 방법"을 다룰 때 빠지지 않는 주제가 있습니다. 바로 가상 메모리(Virtual Memory)와 이를 관리하는 두 가지 핵심 기법인 페이징(Paging)과 세그멘테이션(Segmentation)입니다.
"고정 크기로 나눌 것인가, 논리적 단위로 나눌 것인가?"
"내부 단편화와 외부 단편화는 각각 왜 발생하며, 가상 주소는 물리 주소로 어떻게 변환될까?"
두 기법의 기본 개념부터 주소 변환(Address Translation) 매커니즘, 단편화 문제, 그리고 시험 단골 계산 문제의 포인트까지 깔끔하게 정리해 드립니다!
1. 페이징(Paging) 기법
페이징(Paging)은 프로세스의 논리 주소 공간을 고정된 동일한 크기로 나누어 관리하는 메모리 관리 기법입니다.
- 페이지 (Page): 논리 주소 공간(프로세스)을 균일하게 나눈 단위
- 프레임 (Frame): 물리 메모리(RAM)를 페이지와 동일한 크기로 균일하게 나눈 단위
- 핵심 특징: 연속적인 메모리 할당이 필요 없으므로 물리 메모리의 빈 공간 아무 곳에나 프레임을 할당할 수 있습니다.

🔹 페이징의 주소 변환 방식
가상 주소(Virtual Address)는 $(p, d)$ 구조로 표현됩니다.
- $p$ (Page Number): 페이지 번호
- $d$ (Offset): 페이지 내에서의 변위(offset)
- CPU가 가상 주소 $(p, d)$를 생성합니다.
- MMU(메모리 관리 장치)가 페이지 테이블(Page Table)을 참조하여 페이지 번호 $p$에 해당하는 물리 메모리의 프레임 번호 $f$를 찾습니다.
- 실제 물리 주소(Physical Address)인 $(f, d)$로 변환하여 RAM에 접근합니다.
2. 세그멘테이션(Segmentation) 기법
세그멘테이션(Segmentation)은 프로세스를 고정 크기가 아닌, 의미 있는 논리적 단위(Code, Data, Stack, Heap 등)인 가변적인 크기의 세그먼트(Segment)로 나누어 메모리에 할당하는 기법입니다.
- 세그먼트 (Segment): 프로그래머 관점의 논리적 단위 (함수, 배열, 메인 프로그램, 스택 등)
- 핵심 특징: 세그먼트마다 크기가 서로 다르므로, 주소 변환 시 각 세그먼트의 시작 주소(Base)뿐만 아니라 한계 크기(Limit) 정보가 필요합니다.
🔹 세그멘테이션의 주소 변환 방식
가상 주소는 $(s, d)$ 구조로 표현됩니다.
- $s$ (Segment Number): 세그먼트 번호
- $d$ (Offset): 세그먼트 내에서의 변위(offset)
- CPU가 가상 주소 $(s, d)$를 생성합니다.
- 세그먼트 테이블(Segment Table)에서 세그먼트 $s$의 Base(시작 물리 주소)와 Limit(세그먼트 크기)를 확인합니다.
- 변위 $d$가 Limit보다 큰지 검사합니다 ($d \ge \text{Limit}$ 이면 잘못된 메모리 접근으로 Trap/Segmentation Fault 발생).
- 조건에 맞으면 실제 물리 주소인 $\text{Base} + d$로 변환합니다.
3. 단편화(Fragmentation) 비교: 내부 vs 외부
가상 메모리 기법에서 가장 핵심적으로 출제되는 부분이 바로 단편화(Fragmentation) 문제입니다.
| 구분 | 내부 단편화 (Internal Fragmentation) | 외부 단편화 (External Fragmentation) |
| 개념 | 할당된 블록 크기보다 프로세스가 작아서 블록 내부에 남는 빈 공간 | 메모리 상에 여유 공간 총합은 충분하지만, 조각나 있어서 프로세스를 할당할 수 없는 상태 |
| 발생 기법 | 페이징 (Paging) | 세그멘테이션 (Segmentation) |
| 발생 원인 | 프로세스 크기가 페이지 크기의 정수 배가 아닐 때 마지막 페이지에 남는 공간 발생 | 세그먼트 크기가 가변적이어서 메모리 해제/할당이 반복되면 사이사이 틈새 발생 |
| 해결책 | 페이지 크기를 줄임 (단, 페이지 테이블 크기는 증가) | 메모리 압축 (Compaction) 또는 단일 페이징/단일 세그멘테이션 혼용 (Paged Segmentation) |
4. 한눈에 끝내는 핵심 요약표 (★시험 필수)
| 구분 | 페이징 (Paging) | 세그멘테이션 (Segmentation) |
| 분할 단위 | 고정 크기 (Fixed Size) | 가변 크기 (Variable Size / 논리적 단위) |
| 매핑 테이블 | 페이지 테이블 ($p \rightarrow f$) | 세그먼트 테이블 (Base, Limit) |
| 주소 변환 | $(p, d) \rightarrow (f, d)$ | $(s, d) \rightarrow \text{Base} + d$ (Limit 검회 필수) |
| 단편화 문제 | 내부 단편화 발생 (외부 단편화 없음) | 외부 단편화 발생 (내부 단편화 없음) |
| 장점 | 물리 메모리를 효율적으로 활용 (구현이 단순함) | 보호(Protection) 및 공유(Sharing) 설정이 논리적으로 용이함 |
💡 혼합 기법 (Paged Segmentation):
세그멘테이션의 논리적 모듈화 장점(보호/공유)과 페이징의 외부 단편화 해결 장점을 결합하여, 세그먼트를 다시 고정 크기의 페이지로 나누어 관리하는 현대 OS의 대표적인 혼합 기법입니다.
5. 시험 단골 출제 유형 체크
- Q. 페이징 기법에서 발생하는 단편화의 종류와 발생 이유는?
- 👉 내부 단편화이며, 프로세스의 마지막 부분이 페이지 크기의 정수 배로 딱 떨어지지 않아 남는 물리 공간이 생기기 때문입니다.
- Q. 세그멘테이션 주소 변환 과정에서 오프셋 $d$가 세그먼트 테이블의 Limit 값보다 크면 발생하는 현상은?
- 👉 잘못된 메모리 영역에 접근한 것으로 간주되어 Trap (Segmentation Fault) 예외가 발생합니다.
- Q. 페이징과 세그멘테이션의 단점을 극복하기 위해 세그먼트를 고정 크기의 페이지로 나누어 관리하는 혼합 방식은?
- 👉 페이지드 세그멘테이션 (Paged Segmentation) 기법입니다.
'전공과목 > 운영체제' 카테고리의 다른 글
| [운영체제] CPU 스케줄링 알고리즘(FCFS, SJF, RR, Priority) 개념 및 평가 기준 완전 정리 (0) | 2026.08.17 |
|---|---|
| [운영체제] 가상 메모리(Virtual Memory) 개념과 페이지 교체 알고리즘(FIFO, LRU, LFU) 완전 정리 (0) | 2026.08.16 |
| [운영체제] 데드락(Deadlock, 교착상태) 개념, 발생 조건 4가지 및 해결 방법 완전 정리 (0) | 2026.08.15 |
| [운영체제] 프로세스(Process) vs 스레드(Thread) 개념과 차이점 완전 정리 (시험 단골 주제) (0) | 2026.08.14 |
| [운영체제] 윈도우에서 unistd.h fork() 함수 사용하기 (0) | 2024.04.30 |