>

GDT는 Protected Mode에서 커널이 메모리를 어떻게 사용하겠다라고 하는 설계서와 흡사하다.


* 그림 출처 : http://manavar.blogspot.kr/2011_05_01_archive.html

GDT의 디스크립터들은 위와 같은 형식으로 지정되는데 크게 Limit(20bit)와 Base Address (32bit) 를 지정한다. 그리고 각각의 Flag들을 지정하여 특권레벨, 세그먼트 권한 Limit 단위 등을 지정한다.

G비트 : 1이면 세그먼트 크기 4KB 단위, 0이면 바이트 단위

P비트 : 페이징과 관련이 있음

S비트 : 시스템 세그먼트일때 0, 코드 혹은 데이터 세그먼트일때 1

DPL : 특권레벨 => 커널(0) 유저(3)

X,C/D,R/W,A 는 Type으로 X가 0일때 데이터, X가 1일때 코드영역을 나타낸다.

A는 액세스 비트로 어떤 프로그램이 이 세그먼트에 접근했을 때 1로 세트된다. 0으로는 클리어해주지 않는다.

데이터 세그먼트일 때 C/D는 EXPAND DOWN, 코드 세그먼트일 때는 CONFORMING 여부

데이터 세그먼트일 때 R/W는 쓰기 권한, 코드 세그먼트일 때는 읽기 권한

데이터는 기본으로 읽기 권한을 갖고 코드는 기본으로 실행권한을 갖는다.


GDTR은 레지스터로 48비트의 크기를 갖는다. 

16비트는 GDT의 크기, 하위 32비트에는 GDT의 시작 주소가 물리 주소로 들어간다.

- lgdt[포인터] 로 부른다.

'Study > Kenrel' 카테고리의 다른 글

PIC 초기화  (0) 2015.09.24
IDT(Interrupt Descriptor Table)  (0) 2015.09.24
Protected Mode 진입  (0) 2015.09.23
Segment & Offset  (0) 2015.09.21
Real Mode & Protected Mode  (0) 2015.09.21
Posted by Mungsul
,