gdt 를 알아보자 !!!!

27
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 를 를를를를 !!!!

Upload: jarvis

Post on 05-Jan-2016

99 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: 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

GDT 를 알아보자 !!!!

Page 2: 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

Page 3: 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

Real Mode 에서 세그먼트는 .

Segment(16bit)

16bit Offset+20bit 주소 (1M)

4 bit Shift

Page 4: 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

보호모드에서는…

GDT

GlobalDescriptor

Table

CS

DS

SS

ES

FS

Page 5: 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

그렇다면… GDT 는 뭐까 ?

Descriptor(NULL)

Descriptor

Descriptor

. . .8192 개 .

메모리 설명서인것이다 .이 설명서 안에는각 세그먼트가 접근 할 수 있는 시작위치접근 가능한 범위접근할 수있는 권한 등이 적혀 있다 .

시작위치 (Base Address)

범위 (limit)

권한 (DPL)

Page 6: 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

Segment Descriptor설명서안에는 다음내용이

적혀 있다.

시작 위치 범위 권한 기타 ..등등

Page 7: 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

시작위치 Base Ad-dress

시작위치(23~0)

시작위치(31~24)

왜?이렇게 나뉘어져

있나???비효율적이게 --;

63 -------- 56 39 ------- 16

Page 8: 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

범위 Limit Bits

시작위치(23~0)

시작위치(31~24)

어라~이것도

분단되어 있네

63 -------- 56 39 ------- 16

범위(15~0

)

15 ------ 0

범위(19~1

6)

51------ 48

Page 9: 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

접근권한 (DPL Descriptor Privilege Level)

시작위치(23~0)

시작위치(31~24)

63 -------- 56 39 ------- 16

범위(15~0

)

15 ------ 0

범위(19~1

6)

51------ 48

DPL

46---45

Page 10: 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

Segment descriptor자세히보기

Base Bits23-0

BaseBits31-24

Limit Bits15-0

Limit Bits

19-16DPLG D X U P S Type

Page 11: 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

출처 : http://www.x86.org/articles/pmbasics/

286 Descriptor 와 비교

Page 12: 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

세그먼트 레지스터 모양16비트

Index(13bit) 8192 개

15 4

RPL(3bit)

TI(1bit

)

3 2 0

이 인덱스가 GDT 의 Descriptor의 Index

Page 13: 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

Ntddk.h 에 정의된 세그먼트

Page 14: 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

Ntddk.h 에 정의된 세그먼트

1(index)

15 4

000

3 2 0

Page 15: 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

Ntddk.h 에 정의된 세그먼트

11(3) index

15 4

000

3 2 0

Page 16: 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

응용프로그램에서 세그먼트값확인

Page 17: 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 =1B면…어떻게 해석해???

11(index-3)

15 411

(RPL-Ring 3)

0(GDT)

3 2 0

Page 18: 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 =1B면…어떻게 해석해???

11(index-3)

15 411

(RPL-Ring 3)

0(GDT)

3 2 0

Page 19: 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

응용프로그램 DS =23면…어떻게 해석해???

100(index-4)

15 411

(RPL-Ring 3)

0(GDT)

3 2 0

Page 20: 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

응용프로그램 DS =23면…어떻게 해석해???

100(index-4)

15 411

(RPL-Ring 3)

0(GDT)

3 2 0

Page 21: 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

FS =3B면…어떻게 해석해???

111(index-5)

15 411

(RPL-Ring 3)

0(GDT)

3 2 0

Page 22: 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

커널 모드에서 세그먼트값 확인

Page 23: 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 가 8 이면…

1(index-1)

15 400

(RPL-Ring 0)

0(GDT)

3 2 0

Page 24: 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

커널 모드에서 세그먼트값 확인

1(index-1)

15 400

(RPL-Ring 0)

0(GDT)

3 2 0

Page 25: 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

프로텍티드모드에서 세그멘테이션에 대해서

알겠는가 ?이렇게 해서

선형주소를 만든것이다 .

Page 26: 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

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

정리해봅시다 .

Page 27: 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