Paging on x86-64

이후띵·2022년 1월 25일
0

PintOS

목록 보기
28/31

MMU는 virtual address를 사용하여 physical address에 map한다. 이것은 다른 프로세스들의 같은 주소영역 사용을 가능하게 한다.

What is a virutal address?

인텔 x86-64의 virtual address는 사실 48비트만 사용한다. (나머지 16비트들은 사용될 수 없고 정의된 값이 있다.) 이 48비트 가상 주소는 다음과 같이 구성된다.

x86-64 시스템에서 우리는 4kB의 페이지들을 가지고 있으며, 따라서 페이지를 address하기 위해서는 12비트가 필요하다. confer) 2^12 = 4096 = 4kB
PML4, PDPT, PD, PT 와 같은 페이징 테이블들의 엔트리는 각각 8바이트를 갖고있고 각각의 테이블은 4kB의 사이즈를 가지고있다. 이것은 각각의 테이블이 512개의 엔트리들을 갖고있으며, 이것이 우리가 9비트를 각각의 엔트리를 address 하는 것에 이용해야 한다는 것이다. confer) 2^9 = 512

만약에 우리가 물리주소를 가상주소로부터 얻으려 한다면, 최상위 9비트는 pml4 엔트리에 상응하는 비트이다.

(수정중)

profile
이후띵's 개발일지

0개의 댓글