ㅇ GDT 란
GDT(global descriptor table)란 Real Mode 에서 Protected Mode 로 변화되면서 추가된 테이블로써 해당 세그먼트의 베이스 주소와 세그먼트 제한 길이 등의 정보가 들어있다. 제한 길이가 들어있기 때문에 보호기능이 제공되며, 베이스 주소를 제공하기 때문에 16bit에서 24-31bit까지의 베이스 주소를 확장시킬수 있다. 그럼으로써 1b에서 4g까지 자유롭게 설정이 가능하게 된다. 또한 이 테이블에 권한설정까지 적어 넣을 수 있기 때문에 메모리에 대한 권한까지 부여할 수 있게 된다.
ㅇ GDT vs LDT
- GDT(Global Descriptor Table) : 커널모드에서 사용하는 테이블 / 커널모드용 하나 생성 / 전체내용
- LDT(Local descriptor Table) : 사용자모드에서 사용하는 테이블 / 각 프로세스별로 만들어지는 테이블
테이블 시작 위치는 각각 GDTR, LDTR이라는 레지스터가 가리키고 있다.
ㅇ GDT와 LDT의 관계
- LDT의 위치를 나타내는 세그멘트 디스크립터를 GDT 안에 저장한 뒤에, 그때의 인덱스를 LDTR 레지스터에 넣어주면, CPU는 LDT를 읽어들임으로써 테스크의 전환이 일어나게 됨
ㅇ IDT(Interrupt Descriptor Table)
- 인터럽트가 발생했을 때 처리해주는 함수의 루틴을 포함하는 테이블
- 프로세스가 여러개라면 IDT도 프로세스 개수에 맞춰서 존재함
인용:
http://taesun1114.tistory.com/entry/IDT-LDT-GDT-SSDT
http://cafe.naver.com/doprogrammer.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=825