首页 > 代码库 > 页式管理

页式管理

页式管理,是将虚拟地址空间划分为一个一个固定大小的块(称作虚页),同时也让实际地址空间也划分为一个一个同样大小的页(称作实页)。


上面是页式管理中由虚拟地址寻到实际主存地址的步骤。先找到页表基址寄存器,获得对应页表的基地址,然后用基址与虚页号做一次加法找到对应的实页号,由实页号和页内位移组成实际主存地址。


页式管理的优缺点

  • 优点
主存储器的利用率比较高
页表相对比较简单
地址变换的速度比较快
对磁盘的管理比较容易
  • 缺点
程序的模块化性能不好
页表很长,需要占用很大的存储空间

我理解的主存利用率相对较高是主存被划分成了一块一块细粒度的块,设想一种情景,有一个进程,如果要整个放在一块内存区中,此时没有能容纳它的空闲区,但此时主存中有许多零散的较小的空闲块(也就是页),而程序自身也可以拆分许多同样大小的块,这样就能在主存中存入这个程序。
所谓的模块化性能不好,应该是相对于段式管理而言,在页式下,不再有所谓以模块为个体进行存储,而是将模块给分散了。
能不能将页式内存中属于同一模块的页进行提取和统一管理,这样既保存了页式充分利用主存的优点,又保存了段式中模块化的概念。具体地址变换如下:
  • 先查段表,得到该程序段的页表起始地址和页表长度
  • 再查页表找到要访问的主存实页号
  • 最后把实页号p与页内偏移d拼接得到主存的实地址
这就是所谓的段页式管理。