多级页表

为了减少进程页表内存的占有,通常采取以下两种措施: 

  • 对进程页表所需的主存空间,采用离散分配方式。 
  • 只将当前需要的部分页表目调入主存,其余保留在虚拟存储器中,需要时才调入。

「多级页表」是一种请求分页式虚拟存储管理技术。操作系统为每个进程建一张「页目录表」,它的每个表项对应一个页表页,而页表页的每个表项给出了页面和页框的对应关系,页目录表是一级页表,页表页是二级页表。

此时的逻辑地址结构由三部分组成:页目录、页表页和位移。原来是将整个页表装入主存储器,现在只需要保证页目录装入主存,然后根据页目录查询需要的页表页即可。

img-2024-04-28 19-29-33.png

这种方法就像是原本将一本厚厚的书拆分成了多个章节,然后将每个章节以虚拟存储的方式管理。需要查询时,先查询目录后再去找需要的章节。如果章节不在主存,只需要将此章节加载进入主存,而不需要将整个页表装入主存储器。

此外,这种方式还将页表离散分配,进一步提高了灵活性。

这种方式可以从二级页表进一步拓展到多级页表,如下图。

img-2024-04-24 19-35-58.png

  • 多级不连续导致多级索引。
  • 以二级页表为例,用户程序的页面不连续存放,要有页面地址索引,该索引是进程页表;进程页表又是不连续存放的多个页表页,故页表页也要页表页地址索引,该索引就是页目录。
  • 页目录项是页表页的索引,而页表页项是进程程序的页面索引。

二级页表地址转换特点 

  • 访问数据需要三次访问主存。 
  • 页目录调入主存,页表并不全部调入主存
  • 一般情况下,页目录表占一个页架,每页占一个页架。