Learning
토픽 48 / 85·메모리 관리

세그멘테이션 (Segmentation)

세그멘테이션 (Segmentation)

프로그램을 논리적 단위(코드, 데이터, 스택, 힙 등)로 나누어 각 세그먼트를 독립적으로 메모리에 할당하는 메모리 관리 기법

목적: 논리적 분할, 보호·공유, 가변 크기, 모듈화

특징: 가변 크기, 논리적 단위, 세그먼트 테이블, 외부 단편화

구성요소: 세그먼트(코드/데이터/스택/힙), 세그먼트 번호, 오프셋, 세그먼트 테이블(베이스+리미트)

주소 변환: Logical Address = → 세그먼트 테이블에서 베이스+리미트 → Physical Address = Base + Offset (Offset < Limit 검증)

세그먼트 테이블: 각 세그먼트의 베이스 주소(시작), 리미트(크기), 보호 비트(R/W/X)

보호·공유: 세그먼트별 권한 설정, 코드 세그먼트 공유(프로세스 간)

장점: 논리적 분할, 보호·공유 용이, 가변 크기, 모듈화

단점: 외부 단편화, 복잡한 메모리 관리, 세그먼트 테이블 메모리

적용사례: x86 세그멘테이션(Legacy), 페이징+세그멘테이션 혼합(x86-64는 플랫 모델)

비교: 세그멘테이션(가변/논리적/외부단편화) vs 페이징(고정/물리적/내부단편화)

연관: 페이징, 메모리 관리, 외부 단편화, 보호, 세그먼트 테이블