세그먼테이션

세그먼테이션 모델

세그먼테이션은 코드, 데이터, 스택, 힙처럼 의미가 다른 영역을 세그먼트로 나누고 각 영역마다 base와 limit, 권한을 둡니다. 프로그래머 관점과 잘 맞지만 가변 크기라 외부 단편화가 생길 수 있습니다.

01

세그먼트 정의

코드, 데이터, 스택처럼 접근 권한과 성장 방향이 다른 영역을 별도 단위로 봅니다.

logical unit
02

세그먼트 테이블을 조회한다

세그먼트 번호로 base, limit, 권한을 찾고 offset이 limit 안에 있는지 확인합니다.

table
03

보호와 공유를 적용한다

코드는 읽기/실행, 데이터는 읽기/쓰기처럼 영역별 권한을 다르게 둘 수 있습니다.

protection
04

단편화 비용 검토

세그먼트 크기가 제각각이라 빈 공간이 흩어지는 문제는 연속 할당과 닮아 있습니다.

fragmentation
Segment
프로그램 의미와 맞는 가변 크기 영역 함수 코드, 전역 데이터, 스택처럼 다른 성격을 분리합니다.
meaning
Offset 검사
base + offset 전에 limit으로 범위 확인 범위를 넘으면 보호 예외가 발생해 잘못된 접근을 막습니다.
bounds
Paging 비교
페이지는 고정 크기, 세그먼트는 의미 단위 현대 시스템은 둘을 조합해 의미와 물리 배치 문제를 함께 다루기도 합니다.
compare

주소 해석 · 권한 · 한계 점검

주소 해석 세그먼트 번호와 offset이 각각 무엇을 고르는지 말할 수 있어야 합니다.
권한 영역별 접근 권한이 왜 보호에 유리한지 확인합니다.
세그먼테이션 모델 한계 가변 크기 때문에 외부 단편화가 여전히 남는다는 점을 놓치지 않습니다.