32비트 모드에서의 가상 주소 -> 선형 주소 -> 물리 주소 변환 과정
가상 주소를 선형 주소로 변환하는 과정(세그먼테이션)
GDTR 레지스터 -> GDT의 크기 필드와 기준 주소 필드로 구성 -> GDT의 기준 주소
조
세그먼트 셀렉터의 구조
index는 GDT 또는 LDT 상에서의 위치를 나타내고,TI 비트는 GDT인지 LDT인지를 구분합니다.
GDTR로부터 GDT의 기준 주소와 세그먼트 셀렉터의 index를 통해 -> 세그먼트 디스크립터에 접근합니다.
세그먼트 디스크립터에는 세그먼트 기준 주소와 기타 정보가 포함되어있는데
세그먼트 기준 주소 + 논리주소값(오프셋) = 선형주소 가 됩니다.
선형 주소를 물리 주소로 변환하는 과정(페이징)
- CR3 레지스터가 페이지 디렉터리 테이블의 기준 주소를 가리킨다.
- 페이지 디렉토리 테이블의 기준 주소 + 선형주소의 페이지 디렉토리 오프셋 = 페이지 디렉터리 엔트리
- 페이지 디렉터리 엔트리가 페이지 테이블의 기준 주소를 가리키고
- 페이지 테이블의 기준 주소 + 선형 주소의 페이지 테이블 오프셋 = 페이지 테이블 엔트리
- 페이지 테이블 엔트리는 페이지 기준 주소를 가리킨다.
- 페이지 기준 주소 + 선형주소의 오프셋 = 물리주소 가 됩니다.
전체적인 그림을 보면…
'운영체제' 카테고리의 다른 글
64비트 멀티코어 OS 원리와 구조 진행기록 & 백업 (0) | 2014.10.23 |
---|---|
리눅스 프로세스 메모리 구조 (0) | 2014.10.20 |
x86_64(64비트) 모드, 주소 변환 과정 (0) | 2014.10.20 |
64비트 주소를 상위 32/하위 32비트로 나누어 표현 (0) | 2014.10.20 |