请求分页存储管理方式

请求分页系统是建立在基本分页基础上,其主要硬件支持有请求分页的页表机制、缺页中断机构和地址变换机构,其实现请求分页的软件有请求调页和页面置换。

1. 请求分页的硬件支持

1.1. 请求页表机制

请求页表机制的主要数据结构是请求页表:

| 页号 | 物理块号 | 状态位 P | 访问字段 A | 修改位 M | 外存地址 |

  • 状态位 P 标识该页是否已调入内存
  • 访问字段 A 记录该页被访问次数,或记录该页最近未被访问时长
  • 修改位 M 标识该页在调入内存后是否被修改过,若被修改,则需用该页更新外存的副本。

1.2. 缺页中断机构

在请求分页系统中,一旦所要访问的页面不存在,便产生一个缺页中断,请求 OS 将所缺的页面调入内存。如同其他中断,缺页中断也需要保护现场、分析中断原因、转入缺页中断处理程序以及恢复中断等。由于缺页中断发生在指令执行期间,还要求在指令执行期间立即产生中断信号,而且一条指令执行期间可产生多次缺页中断,要求硬件机构能保存多次中断状态。

1.3. 地址变换机构

操作系统_17

2. 请求分页的内存分配

如何给每个进程分配物理块?

2.1. 最小物理块数

最小物理块是能够保证进程正常运行所需的最小物理块数,存放指令、存放数据和缺页中断都需要物理块。

2.2. 内存分配策略

在请求分页系统中可采用固定和可变两种内存分配策略,在进行置换时刻采用全局和局部两种策略。

固定分配局部置换(Fixed Allocation,Local Replacement)

即为进程分配一组固定数目的物理块(在进程期间不改变),进程在运行中发现缺页时,仅允许用该进程的页面去置换缺页。

可变分配全局置换(Variable Allocation,Global Replacement)

即每个进程所获得的物理块数在进程运行期间可变,进程在运行中发现缺页时,则将 OS 所保留的空闲物理块(被组织为一个队列)取出一块用于缺页调入。若无空闲物理块,则 OS 从内存中选出一页用于置换。

可变分配局部置换(Variable Allocation,Local Replacement)

进程在运行中发现缺页时,OS 将用该进程的页面去置换缺页。OS 根据进程缺页的频繁程度增减物理块。

2.3. 物理块分配算法

在采用固定分配策略时,如何给每个进程分配物理块?

  • 平均分配算法
  • 按比例分配算法:以进程大小为比例
  • 考虑优先权的分配算法

3. 页面调入策略

3.1. 何时调入页面

  • 预调入策略:在第一次将进程调入内存时,将程序员指出的那些页调入内存;每当程序被调度运行时,将工作集中的所有页调入内存。

  • 请求调入策略:发现缺页则调入。

3.2. 从何处调入页面

请求分页系统的外存分为文件区和对换区。

当 OS 拥有足够对换区空间时,将进程有关的所有文件都复制到对换区,页面从对换区调入。

当 OS 缺失足够对换区空间时,凡不会被修改的文件从文件区调入(不用经历修改过的页面从内存写回磁盘),而可能被修改的文件在被换出后便调入对换区。

UNIX 方式,未运行过的页面都从文件区调入,运行过又被换出的页面均放在对换区。

3.3. 如何调入页面

每当程序所要访问的页面未在内存时(存在位为“0”),便向 CPU 发出一缺页中断,中断处理程序首先保留 CPU 环境,分析中断原因后转入缺页中断处理程序。该程序通过查找页表得到该页在外存的物理块后,如果此时内存能容纳新页,则启动磁盘 I/O,将所缺之页调入内存,然后修改页表。如果内存已满,则须先按照某种置换算法,从内存中选出一页准备换出;如果该页未被修改过(修改位为“0”),可不必将该页写回磁盘;但如果此页已被修改(修改位为“1”),则必须将它写回磁盘,然后再把所缺的页调入内存,并修改页表中的相应表项,置其存在位为“1”,并将此页表项写入快表中。在缺页调入内存后,利用修改后的页表形成所要访问数据的物理地址,再去访问内存数据。整个页面的调入过程对用户是透明的。

3.4. 缺页率

缺页率=访问页面失败次数/访问页面总次数

4. ChangeLog

2018.09.13 初稿

results matching ""

    No results matching ""