反置页表地址转换

「反置页表地址转换」是一种请求分页式虚拟存储管理技术,目的是减少页表占用主存空间。

在传统页表结构中,每个进程都有自己的页表,页表中每一项对应一个虚拟页,记录该虚拟页映射到的物理页框号。对于每个进程,其页表大小与其虚拟地址空间的大小成比例。反置页表结构采用了一种不同的方式管理页表。它将所有进程的页表合并为一个「全局的页表」,并且页表的大小与物理内存的大小成正比,而不是与虚拟地址空间的大小成正比。

所谓的「反置」,指反置页表不是依据进程逻辑页号来组织,而是依据该进程在内存中的物理页面号来组织。反置页表记录的是物理页框号到虚拟页号的映射,需要为每一个页架设置一个页表项,并按页架号排序。

实现

逻辑地址查找物理地址

输入逻辑地址 V=(p,d)

  1. 对虚拟页号 p,进行一次Hash运算,得到对应的 Hash 值 K=Hash(p)
  2. 使用 Hash 值,在 Hash 表中查找对应的物理页框。
  3. 根据物理页框信息,在反置页表中查询对应的虚拟页号和进程标识符等信息。

可以看出,Hash 在这里起到了反向查找的效果。

特点

  • 反置页表只含已调入主存的页面,不在主存的页面需借助其他手段(传统页表方式)从外存获得;
  • 减少页表占用的主存空间,反置页表的大小只与物理内存的大小相对关,与逻辑空间大小和进程数无关
  • 一个 Hash 值可能对应多个页号。

img-2024-04-24 19-38-03.png