arith

导航

分页存储管理与页表自映射

分页式内存管理

在分页式内存管理中,(用户态的)程序的地址空间就变成了虚拟地址空间,不能直接对物理页面进行操作。程序使用的地址会经过MMU处理,变成物理地址再进行访问。其中页表基址寄存器保存的是页表第一项的物理地址。

页表自映射

现在来看二级分页内存管理的情况。程序只能通过虚拟地址空间对内存进行操作,而页表又是放在物理地址空间中的。(在没有专用指令的情况下),操作系统为了方便修改页目录和页表,给页目录和页表也分配了虚拟地址空间里的空间。

如果把页目录和页表对齐到k*页面,可以发现页表m和页目录的内容完全一样,页表m的物理地址就是页目录的物理地址。

这时候再看看网上流传的很广的几张关于windows的页表自映射的图就清楚了。(CR3是x86的页表基址寄存器)

页目录项的虚拟地址到物理地址:

第二级页表的页表项虚拟地址到物理地址:

普通页面的某一偏移的虚拟地址到物理地址:

posted on 2023-06-13 11:53  调几算方  阅读(236)  评论(0编辑  收藏  举报