본문 바로가기
Security/Windows System

Segmentation과 Paging(3) - 페이징

by Winduck 2017. 6. 18.
반응형
◈페이징

 

1) 정의 

- Segmentation과정을 통해 변환된 선형주소 (Linear Address)를 통하여 물리 메로리에 접근하는 과정

 

2)물리메모리 접근과정

 

 

CR3레지스터를 통하여 PDE(Page Directory)  접근 

 - CR3의 PFN(Page Frame Nuber)를 통하여 PDE(Page Directory Entry)주소를 얻습니다.

 

※CR3설명

 

PFN : 페이징기능은 실제 메모리를 4KByte(0x1000)단위로 나눈것 을 의미합니다

     (ex : CR3PFN == 0x5 à 0x5000~0x5999의 물리적 메모리주소에 페이지 데릭토리를 가지는 것을 의미 )

 

Windows는 프로세스의 스위칭이 일어날때마다 CR3레지스터의 PFN바꾸어줌으로써 가상메모리를 다른 물리메모리에 매핑시킬 수 습니다.

 

 

 

 PTE(Page Table Entry) 접근

 

 

 

  - PDE에 접근 후 Linear Address의 Page( offset : 0x21 ~ 0x11 )을 PDE의 Index로 PTE(Page Directroy Entry)의 주소에 접근합니다.

 

 

※PDE(Page Directroy Entry)설명

 

 

 

 

설명

PFN(20bit)

Page Table Entry의 위치를 나타냅니다

Avail(3Bit)

Reserved

G(Global)

(1Bit)

Task Switching이 발생하더라도 해당 주소의 TLB내용을 갱신하지 않습니다.

PS(1bit)

- 0 : Page Directory가 지시하는 메모리영역을 4MByte를 페이지로 사용

- 1 : Page Directory가 지시하는 메모리영역을 4KByte를 페이지로 사용

Dirty(1Bit)

Page Directory는 항상 0을 가짐

Accessed(1Bit)

PFN이 읽을때 cpu는 자동적으로 해당비트를 셋

PCD(1Bit)

캐시관련(추후추가)

PWT(1Bit)

캐시관련(추후추가)

User/Supervisor

(1Bit)

1 : 유저레벨과 커널레벨 모두 접근가능

0 : 커널레벨만 접근가능

Read/Write

(1Bit)

1 : Read/Write

0 : Read

Present

(1Bit)

1 : 물리 메모리에 존재

0 : 물리메모리에 존재하지않음

 

 

③실제 물리 메모리 접근 

  - PDE에 접근 후 Linear Address의 offset( offset : 0x11 ~ 0x0 )을 PTE의 offset으로 실제 물리주소에 접근합니다.

  

※PTE(Page Table Entry)설명

 

 

 

 

설명

PFN(20bit)

실제 메모리의 페이지 프레임번호를 나타냄 ( 0x1일경우 0x1000의 물리적 메모리 주소를 나타냄

Avail(3Bit)

Reserved

G(Global)

(1Bit)

CR4의 PGE플래그가 세트되어 있을 경우 운영체제에서 CR3레지스트리를 변경하여 메모리 변환에 사용되는 페이지 디렉토리를 변경해도 TLB내용에서 페이지의 정보를 리셋하지 않도록합니다. 프로세스의 메모리변환을 보다 효율적으로 만듬니다.

Dirty(1Bit)

Page Directory는 항상 0을 가짐

Accessed(1Bit)

PFN이 읽을때 cpu는 자동적으로 해당비트를 셋

PCD(1Bit)

캐시관련(추후추가)

PWT(1Bit)

캐시관련(추후추가)

User/Supervisor

(1Bit)

1 : 유저레벨과 커널레벨 모두 접근가능

0 : 커널레벨만 접근가능

Read/Write

(1Bit)

1 : Read/Write

0 : Read

Present

(1Bit)

1 : 물리 메모리에 존재

0 : 물리메모리에 존재하지않음

 

 

 

반응형

댓글