开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第16天,点击查看活动详情
前面我们已经学习过基本分页存储管理方式,本次我们将学习请求分页存储管理方式,它是在基本分页系统的基础上,增加了部分页装入、请求调页、页面置换功能。
一、请求分页存储管理中的硬件支持
实现请求页式存储管理系统,需要一定的硬件支持。除了需要一定容量的内存和外存对换区之外,还需要页表机制、缺页中断机构和地址变换机构。
1 页表机制 (Page Table Mechanism)
2 缺页中断机构 (Page fault interrupt mechanism)
当要访问的页不在内存时,产生一缺页中断。OS接到此中断信号后,调用缺页中断处理程序,将该页调入内存,更新页表,完成重定位。期间可能调用置换程序。
缺页中断和一般中断的区别:
相同点:
保护现场 中断处理 恢复现场
不同点:
1)一般中断是指令完成后中断,缺页中断在指令执行时中断。 (指令复执)。
2)一条指令执行期间可能会有多次缺页中断。
3 地址变换机构
物理地址仍由页表项中的物理块号和逻辑地址中的页内地址决定。 设置页表寄存器,存放页表始址和长度。 同样可设置快表。
二、内存分配策略和分配算法
1 最小物理块数的确定
-
分配给一个进程的物理块数越少,内存中的进程数越多;
-
若一个进程分配的物理块数较少,缺页率(Page Fault Rate)相对较高; 必须有足够的物理块把一条指令所访问的的各个页存放起来。
2 页面分配和置换策略
分配策略根据进程分配物理块数是否固定分为: 固定和可变
置换策略根据换出页面是否属于自身进程分为: 全局和局部
1)固定分配、局部置换
2)可变分配、全局置换
3)可变分配、局部置换
三、页面调入策略
1 何时调入页面
即确定何时将进程所需页调入内存。常用的方式有预调和请调两种。
1)请求调页策略 缺页中断时,由系统将所缺的页调入内存。但每次请求只调入一页。 优点:容易实现。 缺点:对外存I/O次数多,开销较大,容易产生抖动现象。
2)预调页策略
将预计不久之后会被访问的程序或数据所在的页面,提先调入内存。 优点:提高调页的I/O效率。 缺点:基于预测,若调入的页在以后很少被访问,则效率低。常用于首次调入时,由程序员指出应该先调入的页面。 为了减少系统开销,一次调入多页比调入一页更高效。
2 何处调入页面
外存要分为文件区和对换区。对换区为取得较快的速度,采用连续分配方式,且对换区所规定盘块较大。
1)从对换区调入。若系统有足够的对换区空间。则可全部从对换区调入所需页面。要求运行前,将其所有页面复制到对换区。
2)只将修改过的页放在对换区。若对换空间不足。开始都从文件区调入。对未被修改的页面,每次都从文件区调入(换出时不需回写);被修改的页面换出到对换区,以后从对换区调入。
3)首次从文件区调入,以后再次调入时从对换区调入。UNIX方式。未运行过的,从文件区调入;运行后换出时,放到对换区。因此对于曾运行过而又被换出的页面,从对换区调入。
3 页面调入过程
1)缺页中断;
2)中断处理程序保留CPU现场、分析原因、转入缺页中断处理程序;
3)查页表,得到该页在外存的物理块号;
4)查内存,未满 GOTO 5);已满,按置换算法选择一页换出(未改,则不必换出;已改,则换出) GOTO 5);
5)调入,修改页表(状态位、物理块号);修改快表;
6)利用页表得到物理地址,访问数据。
4 缺页率
假定进程P的逻辑地址空间共有n页,而系统分配给它的主存块只有m块(m和n均为正整数,且1≤m≤n),即主存中最多只能容纳该进程的m页。如果进程P在运行中成功访问的次数为S(即所访问的页在主存中),不成功的访问次数为F(即缺页中断次数),则总的访问次数A为:
A= S + F
又定义:
f = F/A
以上内容就是关于请求分页存储管理方式的介绍,这种方式是不同于基本分页存储管理方式的,既有相同点又有不同点,但总体上是要优于基本分页存储管理方式的。