Alex_McAvoy

想要成为渔夫的猎手

请求分页存储管理方式

【概述】

请求分页系统是建立在基本分页基础上的,为能支持虚拟存储器的功能,增加了请求调页功能和页面置换功能

相应地,每次调入和换出的基本单位都是长度固定的页面,这使得请求分页系统在实现上要比请求分段系统简单

目前,请求分页系统是最常用的一种实现虚拟存储器的方式

【硬件支持】

为实现请求分页,系统须提供一定的硬件支持,除了一定容量的内存与外存,还要有请求页表机制、缺页中断机构、地址变换机构

请求页表机制

请求分页系统中,主要数据结构是请求页表,其基本作用仍是将逻辑地址映射为物理地址

为满足页面换进换出的需要,请求分页系统中的页表进行了更改:

  • 状态位 P :指示该页是否已调入内存
  • 访问字段 A :置换时考量的参数,用于记录本页在一段时间内被访问的次数,或记录本页最近已有多长时间未被访问
  • 修改位 M :关系到置换时调出的具体操作,用于记录该页在调入内存后是否被修改过
  • 外存地址:用于指出该页在外存上的地址

缺页中断机构

每当要访问的页面不在内存时,便产生一缺页中断,去通知 OS,OS 会将所缺的页调入内存。

作为中断,需经历四个步骤:保护 CPU 环境、分析中断原因、转入缺页中断处理程序、恢复 CPU 环境

缺页中断作为一种特殊中断,与一般中断有明显的区别:

  • 在指令执行期间产生和处理中断信号
  • 一条指令在执行期间,可能产生多次缺页中断

地址变换机构

请求分页系统中的地址变化机构是在分页系统地址变化的机构上增加了两个功能:产生与处理缺页中断的功能(请求调入)、从内存中换出一页的功能(置换)

【内存分配】

在为进程分配内存时,作业不采用一次装入的方法,而采用部分装入的方法,这就涉及到以下三个问题:

最小物理块数的确定

为保证进程能正常运行,所需要的物理块数的确定是十分关键的

随着为每个进程分配的物理块的减少,将使进程在执行中的缺页率上升,从而降低进程的执行速度

为使进程有效地工作,应为其分配一定数量的物理块,而最小物理块数是指能保证进程正常运行所需的物理块的最小数量

当系统为进程分配的物理块数少于此值时,进程将无法运行,而这个最小物理块数的确定,与计算机的硬件结构有关,取决于指令的格式、功能、寻址方式

物理块的分配策略

在请求分页系统中,可采用两种内存分配策略

  1. 固定分配,是指为每个进程分配一组固定数目的物理块,在进程运行期间不再改变
  2. 可变分配,是指为每个进程分配一定数目的物理块,在进程运行期间,根据情况做适当的增加或减少

在进行置换时,也可采用两种内存置换策略

  1. 全局置换,是指进程在运行中若出现缺页,则将 OS 所管理的空闲物理块队列中,取出一块分配给该进程,将欲装入的页装入
  2. 局部置换,是指进程在运行中若出现缺页,只能从分配给该进程的 $n$ 个页面中选出一页换出,以保证分配给该进程的内存空间不变,且不影响其他进程执行

将上述的策略进行组合,可组合出以下三种适用的策略:

  • 固定分配局部置换策略:困难在于难以把握为每个进程分配适量的物理块数
  • 可变分配全局置换策略:当空闲空间不足时,可与其他任何进程页面置换,会使其他进程缺页率提高,影响运行,但易于实现
  • 可变分配局部置换策略:系统会根据缺页率适当地增减进程的物理块数。若频繁缺页中断,会为进程分配若干物理快;若缺页率特别低,会减少分配给该进程的物理块

物理块的分配算法

采用固定分配策略时,分配物理块可采用以下几种算法:

  1. 平均分配算法:将所有可供分配的物理块平均分配给各进程,这种方法未考虑各进程本身的大小,可能会出现很高的缺页率
  2. 考虑优先权的分配算法:将所有可用物理块分两部分, 一部分按比例分配给各进程,另一部分根据各进程优先权,适当地为其增加份额,分配给各进程
  3. 按比例分配算法:根据进程的大小按比例分配物理块

设进程中有 $n$ 个进程,每个进程的页面数为 $S_i$,则系统中各进程页面数的总和为:

假定系统中可用的物理块总数为 $m$,则每个进程所能分到的物理块数为:

需要注意的是,此处 $b_i$ 应该取正,其必须大于最小物理块数

【页面调入】

页面调入时机

为确定系统将进程运行时所缺的页面调入内存的时机,可采取以下两种策略:

  1. 预调页策略:以预测为基础,将预计不久后便会被访问的若干页面,预先调入内存
  2. 请求调页策略:运行中需要的页面不再内存时,就立即提出请求,由 OS 将其调入内存

预调页策略的优点在于可一次调入若干页,效率较好,但其预测不一定准确,预先调入的页面可能不会被执行;请求调页策略的优点在于被调入的页一定会被访问,且容易实现,但每次仅调入一页,需花费较大的系统开销,增加了磁盘 I/O 的启动频率

页面调入地点

请求分页系统中的外存分为两部分,一部分是采用离散分配方式用于存放文件的文件区,另一部分是采用连续分配方式存放对换页面的对换区

对换区的数据存取速度比文件区要高,因此每当发生缺页时,系统应从何处将缺页调入内存,分成三种情况:

  1. 系统拥有足够的对换区空间:进程运行前将所有页面由文件区拷贝到对换区,运行需要的全部页面从对换区调入内存,提高调页速度
  2. 系统缺少足够的对换区空间:不会被修改的部分,在文件区操作;可能被修改的部分,在对换区操作
  3. UNIX 方式:与进程有关的文件都存放在文件区,因此未运行过的页面,都从文件区调入;而曾运行过又被换出的页面存放在对换区,因此随着进程的运行,已运行过的页面再次被调用时,直接从对换区调入。由于 UNIX 系统允许页面共享,因此某进程所请求的页面可能已被其他进程调入内存,此时就无需从对换区调入

页面调入过程

在开始运行时,预调入一部分页面

在运行过程中,需要的页面不在内存时,向 CPU 发出一缺页中断,中断处理程序开始工作:

  • 保留 CPU 环境
  • 分析中断原因,转入缺页中断处理程序
  • 判断是否置换、页表信息更新
  • 恢复现场,重新操作页面
感谢您对我的支持,让我继续努力分享有用的技术与知识点!