프로세스 메모리를 코드·데이터 같은 논리 영역으로 관리하는 방식과 고정 크기 블록으로 나누는 방식을 비교하려 합니다. 세그멘테이션과 페이징은 주소 변환·보호·단편화에서 어떻게 다른가요?
잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?
답변과 점검 포인트 펼치기답변 접기
구두 답변
정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.
페이징은 가상 주소 공간을 고정 크기 페이지로 나누고 각 페이지를 물리 프레임에 매핑합니다. 세그멘테이션은 코드·데이터·스택처럼 의미가 있는 가변 크기 구간을 기준으로 주소를 구성하는 모델입니다. 따라서 페이징은 물리 배치의 유연성과 고정 단위 변환에, 세그멘테이션은 논리 경계와 구간별 보호에 더 직접적으로 대응합니다. 실제 시스템의 주소 변환을 설명할 때는 이 교과서 모델과 특정 CPU·OS의 평탄한 주소 모델을 구분해야 합니다. 이 차이는 주소 공간을 관리하는 방식의 선택으로 정리할 수 있습니다.
변환과 보호의 차이
페이징 주소는 페이지 번호와 페이지 내 offset으로 나뉘고, 페이지 테이블에서 페이지 번호를 프레임 번호로 바꾼 뒤 offset을 붙입니다. 가상 페이지가 연속이어도 물리 프레임은 떨어져 있을 수 있어 큰 연속 물리 영역을 찾는 부담을 줄입니다. 대신 페이지 테이블 메모리와 TLB miss 비용, 페이지 경계에 남는 내부 단편화가 있습니다. 세그멘테이션은 segment selector와 offset을 통해 base와 limit, 권한을 검사하는 모델이므로 코드 구간은 실행 가능, 데이터 구간은 쓰기 가능처럼 논리별 보호를 표현하기 쉽습니다. 물리적으로 세그먼트를 연속 배치하는 단순 모델에서는 빈 구간이 흩어지는 외부 단편화가 생깁니다.
세그먼트 안을 다시 페이지로 나누면 논리적 보호와 비연속 물리 배치를 결합할 수 있지만 주소 변환 단계와 테이블 관리가 복잡해집니다. 페이지 크기를 키우면 한 TLB 항목이 더 넓은 주소 범위를 덮어 TLB miss를 줄일 수 있지만, 작은 객체가 있는 끝 공간의 내부 단편화와 fault·할당 단위가 커집니다. 보호는 변환 경로의 권한 비트와 접근 종류에서 검사되며, 페이지가 매핑됐다는 사실만으로 쓰기·실행이 모두 허용되는 것은 아닙니다.
예를 들어 코드 구간에는 실행·읽기 권한, 데이터 구간에는 읽기·쓰기를 주고 싶다면 세그멘테이션은 논리 경계를 직접 표현하기 쉽습니다. 하지만 가변 구간을 반복 생성·삭제하면 외부 단편화가 커질 수 있습니다. 페이징은 페이지 단위로 비연속 물리 배치를 허용하고 권한을 세밀하게 둘 수 있지만 페이지 테이블 메모리와 TLB·page fault 비용을 냅니다. read-only 페이지에 쓰는 접근은 매핑이 존재해도 보호 fault가 될 수 있습니다.
세그먼트 안에 페이지를 두는 결합 모델은 두 장점을 얻는 대신 변환 단계와 보호 규칙이 복잡해집니다. 계층형 페이지 테이블도 TLB 적중 여부에 따라 실제 메모리 접근 수가 달라지므로 항상 같은 비용이라고 말할 수 없습니다. 배열 순회·포인터 추적·보호 위반·큰 매핑을 분리해 TLB miss, table memory, fault와 단편화를 측정한 뒤 선택하겠습니다.
세그먼트와 페이지의 혼합 모델을 설명할 때도 논리 보호가 물리 연속성을 보장하지 않는다는 점을 유지해야 합니다. 세그먼트의 limit 검사를 통과한 주소가 페이지 테이블에서 다시 fault나 권한 실패를 겪을 수 있습니다. 따라서 주소 변환 단계별 실패와 메모리 낭비를 따로 기록하겠습니다.
세그먼트의 base·limit를 통과한 주소도 뒤의 페이지 테이블에서 매핑 부재나 권한 위반으로 fault가 날 수 있습니다. 페이지가 매핑됐다는 사실도 read-only 쓰기를 허용하지 않습니다. 이처럼 논리 보호, 페이지 보호, 물리 배치가 서로 다른 경계를 가지므로, 실제 CPU의 변환 단계와 OS 설정을 확인한 뒤 TLB miss·보호 fault·단편화를 분리해 측정하겠습니다.
득점 포인트
이해가 드러나는 지점을 확인해 보세요.
- 고정 페이지와 논리적 가변 세그먼트의 주소 변환을 구분한다.
- 비연속 물리 배치·TLB·테이블 비용과 보호 경계를 연결한다.
- 현대 OS 구현과 교과서 모델을 분리해 작업 패턴으로 검증한다.
감점 포인트
놓치기 쉬운 조건과 오해를 짚어 보세요.
- 페이징이면 내부 단편화와 테이블 비용이 없다고 말한다.
- 세그멘테이션의 구간이 항상 고정 크기라고 설명한다.
- 모든 현대 시스템이 교과서 세그먼트 변환을 그대로 쓴다고 단정한다.
더 파고들 거리
하나 더 질문하며 이해의 범위를 넓혀 보세요.
- 세그먼트 내부를 페이지로 나눕니다. 논리 영역·주소 변환·외부 단편화는 어떻게 함께 처리되나요?
- 큰 페이지가 TLB miss와 메모리 낭비를 동시에 바꾸는 이유는 무엇인가요?
- 페이지 권한과 세그먼트 권한이 결합될 때 실행·쓰기 보호는 어디서 검사되나요?
득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.
원리부터 공부하고 싶다면
답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.