+ 가상 메모리 -> 물리 메모리 Selector Offset DIR Page Segmetatation 사용자가 지정한 주소 Segment Registers Segment Descriptor Descripter Table + DIR Page Page Directory Page Table 실제 메모리 CR3 최종적인 물리 주소 Segmetatation Virtual Address (가상 메모리) Linear Address (선형 메모리) Paging physical Address (물리 메모리) 가상 메모리 -> 물리 메모리
Real Mode Segmentation 세그먼트 오프셋 목적 코드 세그먼트(CS) IP 실행되는 명령어 스택 세그먼트(SS) SP 또는 BP 스택 주소 참조 데이터 세그먼트(DS) AX, BX, CX, DX같은 범용 레지스터와 BX, DI, SI 데이터 주소 참조 보조 세그먼트(ES) 스트링 명령어를 위한 DI 스트링의 목적지 주소 16비트의 세그먼트 값 4비트 16비트의 오프셋 값 CPU로부터 출력되는 실제 주소 값 20비트
+ Protected Mode Segmentation - GDTR Segment Registers DS Descriptor Global Descripter Table + Size Base Address GDTR 47(79) 16 15 Index RPL Index : Offset TI : LDT(1) or GDT(0) 결정 RPL : 특별권한 레벨 (CS는 CPL, 메모리 Code의 실행 권한) Register Linear Address ……. Segment Descriptor CS Descriptor System Register 용도 GDTR 커널의 Descriptor Table의 Base 주소와 Limit를 저장 IDTR 인터럽트를 위한 Descriptor Table의 Base 주소와 Limit 저장 LDTR 현재 실행 중인 Task의 Desciptor Table을 가리킴 TR 현재 실행 중인 Task의 상태를 저장하는 TSS를 가리킴
Protected Mode Segmentation - LDTR Segment Registers DS Descriptor GDT Size Base Address GDTR 47(79) 16 15 Index 1 RPL Task Descriptor LDT Descriptor CS Decriptor LDT ……. Descriptor CS Descriptor + Register Linear Address Selector LDTR 15
Protected Mode Segmentation - TSS DS Descriptor GDT Size Base Address GDTR 47(79) 16 15 Task Descriptor LDT Descriptor CS Decriptor TSS Selector Task Register 15 I/O Map Base Reserved LDTR GS FS DS SS CS ES EDI ESI EBP ESP EBX EDX ECX EAX EFlags EIP SS(2~0) ESP(2~0) Prev TSS T CR3(PDBR) Selector LDTR 15 TSS의 LDTR과 이 LDTR은 같아야 함
Segment Desciptor 비트 설명 Base G D X U Limit P DPL S Type A Code/ Data Conforming Read Segment Desciptor 비트 설명 A(Accessed) 메모리 액세스시 프로세서에 의해 자동 세팅 Type (Segment Type) Code(1)/Data(0), Data : expand, write, accessd Code : conforming, read, accessed S(System) System 세그먼트(0), Code, Data, Stack(1) DPL (Descriptor Privilege Level) 메모리에 액세스되는 특권레벨(0은 커널, 1과 2는 디바이스, 3은 어플레케이션) P(Present) 디스크립터가 유효한지를 나타내는 비트, 0일시 메모리 엑세스 수행 X U(User) 프로그래머에 의해 사용 X(Intel 예약) 확장을 위한 예약 D(Default Size) 0이면 오퍼랜드에 대해 16비트 사이즈, 1이면 32비트 사이즈 G(Granularity) 0일 경우 Limit의 사이즈는 1Byte, 1일 경우 4KB
TSS Desciptor 비트 설명 Base G AVL Limit P DPL Type A 1 0 / B B AVL Limit P DPL Type A 1 0 / B TSS Desciptor 비트 설명 B Busy(현재 TSS를 사용 중을 나타냄) DPL (Descriptor Privilege Level) 메모리에 액세스되는 특권레벨(0은 커널, 1과 2는 디바이스, 3은 어플레케이션) P(Present) 디스크립터가 유효한지를 나타내는 비트, 0일시 메모리 엑세스 수행 X AVL 시스템 소프트웨어에서 사용됨 G(Granularity) 0일 경우 Limit의 사이즈는 1Byte, 1일 경우 4KB
Gate Descriptor http://egloos.zum.com/micingamja/v/3422349 Task Switching
Protected Mode Segmentation – IDTR(GDT) Task Gate Interrupt Descripter Table Size Base Address IDTR 47(79) 16 15 ……. Interrupt Gate Trap Gate DS Descriptor GDT GDTR Task Descriptor LDT Descriptor CS Decriptor Interrupt Vertor + Interrupt Handler 외부 인터럽트는 GDT를 참조 트랩은 LDT를 참조
Protected Mode Segmentation – IDTR(GDT) Task Gate Interrupt Descripter Table Size Base Address IDTR 47(79) 16 15 ……. Interrupt Gate Trap Gate DS Descriptor GDT GDTR Task Descriptor LDT Descriptor CS Decriptor Interrupt Vertor TSS 외부 인터럽트는 GDT를 참조 트랩은 LDT를 참조
Protected Mode Segmentation – IDTR(LDT) Task Gate Interrupt Descripter Table Size Base Address IDTR 47(79) 16 15 …… Interrupt Gate Trap Gate DS Descriptor GDT GDTR Task Descriptor LDT Descriptor CS Decriptor Interrupt Vertor Selector LDTR 15 LDT Descriptor CS Descriptor + Exception Handler
Protected Mode Segmentation – Call Gate DS Descriptor GDT Size Base Address GDTR 47(79) 16 15 Task Descriptor LDT Descriptor CS Decriptor Selector LDTR 15 LDT …… Call Gate Des. CS Descriptor RPL Call Gate + Procedure Entry Point 71페이지
Paging DIR Page Offset Page Directory Page Table 실제 메모리 CR3 최종적인 물리 주소
Paging Descriptor http://egloos.zum.com/anster/v/2141358
Paging Descriptor 비트 설명 P(Present) 0번째 비트로 이 페이지 디렉토리가 메모리에 존재하는지, 아니면 존재하지 않는지를 의미한다. 0이면 사용할 수 없다. R/W(Read/Write) 해당 페이지의 속성을 나타낸다. 읽기만 가능한지 ( 0 ) , 읽기 쓰기 가능한지 ( 1 ) U/S(User/SVC) 1로 세팅되어있을 경우 Ring 0, Ring 3에서 모두 접근 가능하지만 0으로 세팅 되어있을 경우 해당 페이지는 Ring 0에서만 접근 가능하다 PWT(Page-Level Write- Through) 캐시 정책과 관련이 있다. 이후에 설명한다 PCD(Page_Level Cache-Disable) A(Accessed) 해당 페이지가 선형 주소 변환, 즉 소프트웨어에 의해 접근(4MB 페이징)되었는지를 나타낸다. D(Dirty) 4KB의 경우 항상 0이며, 4MB의 경우 소프트웨어에 의해 해당 페이지가 쓰여진(Written)적 있는지를 나타낸다. G(Global) CR4.PGE 플래그와 관련있다. 캐시 정책과 관련이 있다. 이후에 설명 하겠다. PAT(Page Attribute Type) PAT 플래그가 세팅되어 있으면 메모리 타입을 결정할 수 있다.