关于4GB
一个程序的最大寻址范围4GB怎么来的?
答案是PTE的前20位+线性地址的最后12位得到的寻址范围(32位)就是4GB
PTT 页表 (大小4KB),页表里面是页表项,记录的是页的开始位置。
PDE就是页表的基址。
PTD是页的基址。
CR3里面存放的PDT是物理地址,代码无法访问,要访问PDT的基址用C0003000
实验 向0地址写入数据
实验代码
#include "stdafx.h"
#include <windows.h>
void main()
{
getchar();
*(int*)0=100;
printf("address 0 =%d\n",*(int*)0);
Sleep(20000);
}
给0地址挂载物理页
运行后物理地址成功被写入值。