请求分页式虚拟存储管理

「请求分页式虚拟存储管理」是一种虚拟存储器的管理技术。与实存的分页存储管理基本相同 ,主要区别在于:

  • 实存中需要将所有一次装入内存,虚存中只需将部分页装入内存。 在执行过程中访问到不在内存的页面时,产生缺页中断,再从磁盘动态地装入 。 

如何发现页面不在内存中?怎样处理这种情况呢?

  • 扩充页表的内容,增加驻留标志位等信息。
  • 增加了请求调页和页面置换功能。

例如下图,使用中断位来表示对应地址是否被装在内存中,若未被装载,则对应中断位为 1

img-2024-04-24 19-23-33.png

经过扩充后的页表可能包括页号、驻留标志位、引用位、修改位、保护位、内存块等。除了各个进程的页表外,操作系统还需要维护页面与磁盘物理地址的对应表,称为「外页表」。进程启动运行前系统为其建立外页表,并把进程程序页面装入外存。该表按进程页号的顺序排列,为节省内存,外页表可存放在磁盘中,当发生缺页中断需要查用时才被调入。

硬件支持

内存管理单元(MMU)完成逻辑地址物理地址的转换功能,它接受逻辑地址作为输入,物理地址作为输出,直接送到总线上,对内存单元进行寻址。

缺页中断处理

  1. 挂起请求缺页的进程;
  2. 根据页号查外页表,找到该页存放的磁盘物理地址;
  3. 查看内存是否有空闲页框,如有则找出一个,修改内存管理表和相应页表项内容,转步6;
  4. 如内存中无空闲页框,按替换算法选择淘汰页面,检查它曾被写过或修改过吗?若未则转步 6;若是则转步 5;
  5. 该淘汰页面被写过或修改过,则把它的内容写回磁盘原先位置;
  6. 进行调页,把页面装入内存所分配的页框中,同时修改进程页表项;
  7. 返回进程断点,重新启动被中断的指令。

工作过程

请求分页式虚拟存储的硬件结构可以表示为下图,其中虚线框为内存管理单元

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

若用框图表示则为

img-2024-04-28 19-30-11.png

优缺点

优点

  • 作业的程序和数据可按页分散存放在内存中,减少移动开销,有效解决了碎片问题;
  • 既有利于改进内存利用率,又有利于多道程序运行。

缺点

  • 要有硬件支持,要进行缺页中断处理,机器成本增加,系统开销加大。

改进页地址转换

在直接映像的页面管理策略中,逻辑地址为 分为 。从直接映像映射到新的虚拟存储器中时,其中页内偏移应该是不变的,但是新的页面号 可以通过下图进行运算

其中 b 为基址寄存器。获得 以后通过基址寄存器计算出页表的位置 b+pL,其中 L 为页表条目大小。然后再参考页表,从而得到物理页框号 P'。

img-2024-04-24 19-33-34.png

直接映像的页地址转换

  • 降低了 CPU 执行指令的速度,访问一个实际物理地址,至少需要访问两次内存,从而使速度将为 1/2。 
  • 每个进程一个页表,页表的全部表项装在一个地址连续的内存空间。 
  • 只适合小进程地址空间。

但也存在问题。页表可能会非常大。如:32 位 OS,意味着一个进程的虚拟地址空间可达 4G,如果页大小为4K,则页表有 1M 个页表目,如果一个表目占 4 个字节,则一个进程的页表需要 4M 内存。如果进程数较多,每个进程的页表大小加起来会占用相当一部分主存储器空间。

为了解决此问题,通常采取以下两种措施: