分页内存管理——虚拟地址到物理地址的转换

这里看这篇文章读懂什么时分页内存管理:

摘抄一部分:
4.1 分页内存管理
将虚拟内存空间和物理内存空间皆划分成大小相同的页面,例如4KB、8KB和16KB等。并将页作为内存空间的最小分配单位,一个程序的一个页面(虚拟页面)可以存放在任何一个物理页面中。
一个程序发出的虚拟地址由虚拟页面号和页内偏移值两部分组成,组成见下:
分页内存管理——虚拟地址到物理地址的转换

4.2 分页内存管理是如何解决交换内存管理中的两个问题的?
1.空间浪费:通过将内存空间划分成大小一样的页面,并且将其作为内存分配的基本单位,这样就避免了大量外部碎片的积累,让内存空间得到有效利用。
2.程序受限:分页内存管理下,允许一个进程的部分虚拟页面存放在物理压面(物理内存)中,另一部分存放在磁盘上,等到需要使用时再将其从磁盘中加载到物理内存中。也就是说,当程序需要额外的空间时,只需要对其分配新的页即可,这样做使得程序的增长效率较高。
4.3 虚拟地址->物理地址的转化(地址翻译)
分页内存管理——虚拟地址到物理地址的转换

翻译工作则是交给MMU(内存管理单元),它只对虚拟地址的页面号进行翻译,而不处理页内偏移值。
MMU为每一个程序都配备了一个页表,里面存放的是虚拟页面到物理页面的映射,如果MMU接收到了程序发出的虚拟地址,在查找相对应的物理页面号时,没有找到,那么将会通过缺页中断来将需要的虚拟页面从磁盘中加载到物理内存的页面中。
分页内存管理——虚拟地址到物理地址的转换

并且随着虚拟页面的进出内存,页表的内容也是不断地变化的。
4.4 页表中的具体信息
MMU为每一个程序配备的页表除了有虚拟地址到物理地址的映射(虚拟页面号到物理页面号),还有其他的与页面的管理活动有关的信息,因为mmu要依赖页表来进行与页面相关的管理活动。
例如,页表如何知道需要的虚拟页面是否在物理页面中?那么页表中就有一项信息记录的是该虚拟页面是否在当前的物理页面中——在内存否。
再说,有一些虚拟页面是受到保护的,对它的读、写和执行操作是有限制的,记录该页面的保护信息的则是——保护标识区。
等等。
可以参考下图中,页表中存储的具体内容:
分页内存管理——虚拟地址到物理地址的转换

具体的映射和查找规则是怎样的呢?
分页内存管理——虚拟地址到物理地址的转换
还有一篇文章有介绍