主页 > 开源代码  > 

页表是如何工作的

页表是如何工作的
页表的基本结构

页表是一个数据结构,包含虚拟页与物理页框之间的映射关系。每个进程都有自己的页表,确保进程间内存的隔离和保护。

页(Page)和 页框(Page Frame): 页:虚拟内存被划分为固定大小的块,称为页,通常为4KB。页框:物理内存同样被划分为与页相同大小的块,称为页框。 TLB

快速表,存储了一些虚拟页号到物理页框号的映射

虚拟地址到物理地址

页目录索引(Page Direct0ry Index, PDI) : 10位

页表索引(Page Table Index, PTI):10位

页内偏移(0ffset);12位

每个进程都有自己的页表,这个虚拟地址对应的物理地址就记录在对应页号的对应偏移处。

假设有一个32位Wind0ws系统,进程尝试访问虚拟地址 0x1234ABCD:

虚拟地址拆分:

页目录索引 (PDI):72

页表索引 (PTI):根据地址拆分,例如842

页内偏移 (0ffset):0xBCD

虚拟页号:0x1234A

页目录查找:

读取CR3:假设CR3指向页目录基址 0x0012AB00。

计算页目录项地址:0×0012AB00+(72× 4)=0×0012AC20读取PDE:从 0x0012AC20 读取页目录项,获取页表的物理地址 0x0023CD00。

页表查找:

计算页表地址: 0x0023CD00 + (842 × 4) = 0x0023D00 + 0xD28 = 0x0023DA28

读取PTE:从 0x0023DA28 读取页表项(PTE),获取物理页框号 0x0045EF00。

生成物理地址:

物理地址 =0x0045EF00 +0xBCD = 0x0045F7CD

更新TLB:

将虚拟页号 0x1234A 和物理页框号 0x0045EF 缓存到TLB中。

标签:

页表是如何工作的由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“页表是如何工作的