gdt 를 알아보자 !!!!
DESCRIPTION
GDT 를 알아보자 !!!!. 세그먼트 레지스터 너가 하는 일이 도대체 뭐냐 ?. CS. DS. SS. ES. FS. GS. Real Mode 에서 세그먼트는. Segment(16bit). . 4 bit Shift. +. 16bit Offset. 20bit 주소 (1M). 보호모드에서는 …. GDT Global Descriptor Table. CS. DS. SS. ES. FS. 그렇다면 …GDT 는 뭐까 ?. 메모리 설명서인것이다 . 이 설명서 안에는 - PowerPoint PPT PresentationTRANSCRIPT
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
GDT 를 알아보자 !!!!
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
세그먼트 레지스터너가 하는 일이도대체 뭐냐 ?
CS DS SS ES
FS GS
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
Real Mode 에서 세그먼트는 .
Segment(16bit)
16bit Offset+20bit 주소 (1M)
4 bit Shift
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
보호모드에서는…
GDT
GlobalDescriptor
Table
CS
DS
SS
ES
FS
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
그렇다면… GDT 는 뭐까 ?
Descriptor(NULL)
Descriptor
Descriptor
. . .8192 개 .
메모리 설명서인것이다 .이 설명서 안에는각 세그먼트가 접근 할 수 있는 시작위치접근 가능한 범위접근할 수있는 권한 등이 적혀 있다 .
시작위치 (Base Address)
범위 (limit)
권한 (DPL)
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
Segment Descriptor설명서안에는 다음내용이
적혀 있다.
시작 위치 범위 권한 기타 ..등등
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
시작위치 Base Ad-dress
시작위치(23~0)
시작위치(31~24)
왜?이렇게 나뉘어져
있나???비효율적이게 --;
63 -------- 56 39 ------- 16
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
범위 Limit Bits
시작위치(23~0)
시작위치(31~24)
어라~이것도
분단되어 있네
63 -------- 56 39 ------- 16
범위(15~0
)
15 ------ 0
범위(19~1
6)
51------ 48
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
접근권한 (DPL Descriptor Privilege Level)
시작위치(23~0)
시작위치(31~24)
63 -------- 56 39 ------- 16
범위(15~0
)
15 ------ 0
범위(19~1
6)
51------ 48
DPL
46---45
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
Segment descriptor자세히보기
Base Bits23-0
BaseBits31-24
Limit Bits15-0
Limit Bits
19-16DPLG D X U P S Type
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
출처 : http://www.x86.org/articles/pmbasics/
286 Descriptor 와 비교
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
세그먼트 레지스터 모양16비트
Index(13bit) 8192 개
15 4
RPL(3bit)
TI(1bit
)
3 2 0
이 인덱스가 GDT 의 Descriptor의 Index
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
Ntddk.h 에 정의된 세그먼트
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
Ntddk.h 에 정의된 세그먼트
1(index)
15 4
000
3 2 0
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
Ntddk.h 에 정의된 세그먼트
11(3) index
15 4
000
3 2 0
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
응용프로그램에서 세그먼트값확인
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
응용프로그램 CS =1B면…어떻게 해석해???
11(index-3)
15 411
(RPL-Ring 3)
0(GDT)
3 2 0
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
응용프로그램 CS =1B면…어떻게 해석해???
11(index-3)
15 411
(RPL-Ring 3)
0(GDT)
3 2 0
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
응용프로그램 DS =23면…어떻게 해석해???
100(index-4)
15 411
(RPL-Ring 3)
0(GDT)
3 2 0
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
응용프로그램 DS =23면…어떻게 해석해???
100(index-4)
15 411
(RPL-Ring 3)
0(GDT)
3 2 0
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
FS =3B면…어떻게 해석해???
111(index-5)
15 411
(RPL-Ring 3)
0(GDT)
3 2 0
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
커널 모드에서 세그먼트값 확인
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
CS 가 8 이면…
1(index-1)
15 400
(RPL-Ring 0)
0(GDT)
3 2 0
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
커널 모드에서 세그먼트값 확인
1(index-1)
15 400
(RPL-Ring 0)
0(GDT)
3 2 0
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
프로텍티드모드에서 세그멘테이션에 대해서
알겠는가 ?이렇게 해서
선형주소를 만든것이다 .
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r
Segment RegisterCS : 0x1b 11(index-3) 0(GDT) 11(RPL-Ring 3)
가상주소Virtual Addr : 0x1000000
GDT
시작위치(23~0)
시작위치(31~24
)
범위(15~0
)
범위(19~16
)
시작위치Base Addr : 0x00000000
Linear Address0x1000000
정리해봅시다 .
2 3 t h K o r e a O p e r a t i n g S y s t e m S e m e n a r