大话操作系统之请求分页存储器管理方式

叁研良语2019-01-10 16:33:03


    本节内容是本章内容的重点,也是大题的常考点,大家务必重视。

    在基本分页存储管理的基础上,增加请求调页和页面置换功能。每次调入和换出的基本单位都是长度固定的页。虚拟存储最常用的实现方式。


一、请求分页中的硬件支持

1.数据结构

    页表机制每个进程一张页表,有如下字段:

 


(1)状态位P:存在位,中断位,描述该页在内存还是外存

(2)修改位M :该页是否被修改过

(3)访问字段A:在近期被访问的次数,或最近一次访问到现在的时间间隔

(4)外存地址:磁盘上的地址


2. 缺页中断机构

缺页中断机构:

    每当进程要访问的页不在内存,则自陷,产生缺页中断。调用操作系统提供的中断处理程序。

缺页中断的特殊性:

    缺页中断可能在指令执行期间产生并处理,而不一定是在一条指令执行完毕之后。所缺的页面调入之后,重新执行被中断的指令(从取址开始)。一条指令的执行可能产生多次缺页中断。

    例子:swap A, B 



    本身和两个操作数A, B都跨越两页,则产生6次缺页中断。必须由CPU硬件确保对多个现场的保存。

    执行过程:

 


3.地址变换机构

    地址变换机构—在原变换机构的基础上增加了缺页中断

    执行过程:

 



二、内存分配策略和分配算法

    为每个进程分配内存时,涉及三个问题:最小物理块数的确定;物理块的分配策略;物理块的分配算法目的:减少缺页中断。

1. 最小物理块数的确定:

    OS要保证进程运行的最少要分配的物理块数,少了则缺页中断频繁,进程无法运行。

    例如:进程运行的最小页框数与指令系统有关:

    单地址且直接寻址:2个页面;

    若支持间接寻址:则至少需要3个页面;

    如上(swap A, B),至少需要6个页面。


2. 物理块的分配策略

(1)固定分配局部置换

    给每个进程分配固定数目的页框,当发生缺页中断时,只考虑从该进程所属的页框中调出旧的页面,换入新的页面。

    困难在于分配多少个页框合适?少了中断频繁,多了内存装入的进程减少。


(2) 可变分配全局置换

    最易实现的分配和置换策略,已用于多个OS。

    预分配给进程一定数目的页框,OS控制一定数量的空闲页框,在进程的执行过程中,发生缺页时,OS就分配给该进程一个空闲的页框,当空闲的页框用完时,OS可根据需要从任意的进程中调出一个页框。

问题:会有不公平。


(3) 可变分配局部置换

    预分配给进程一定数目的页框,OS控制一定数量的空闲页框,在进程的执行过程中,发生缺页时,首先考虑从该进程所属的页框中调出旧的页面,若发现该进程频繁发生缺页中断,再分配新的页框给该进程。

    统计进程的缺页中断率系统会有开销。


3. 物理块分配算法

(1)平均分配

    将系统中所有可供分配的物理页框,平均分配给每个进程。

(2)按比例分配


(3)按优先权分配

 

三、页面调入策略

1. 调入页面的时机选择

(1) 预调页:在发生缺页需要调入某页时,一次调入该页以及相邻的几个页。成功率50%。

    优点:提高调页的I/O效率。

    缺点:基于预测,若调入的页在以后很少被访问,则效率低。常用于进程装入时的调页。


(2) 请求调页:只调入发生缺页时所需的页面。

    优点:容易实现。

    缺点:对外存I/O次数多,开销较大,要求I/O速度快。


2. 从何处调入页面

    请求分页系统中的外存分为文件区和交换区。通常交换区的I/O效率比文件区高。分三种情况:

(1)进程运行前,将其全部页面从文件区复制到交换区,以后总是从交换区调入。执行时调入速度快,要求交换区空间较大。

(2)凡不会修改的页面或是未被修改的页面,直接从文件区调入,换出时不必写回磁盘,下次仍从文件区调入。已被修改的页面,被置换时需调出到交换区,以后从交换区调入。节省交换区空间。

(3)UNIX方式,未运行过的页面,直接从文件区调入,而曾经运行过的页面,换出时放在对换区,下次调入时,应从对换区调入。在进程结束时,更新文件区内容


3. 页面调入过程

    页面不在内存—〉缺页中断—〉查页表—〉得到外存物理块号—〉淘汰一页(如该页修改过,则要写回交换区)--〉调入新页—〉修改页表—〉重新执行该指令。


    内容持续更新,喜欢的小伙伴别忘了点赞收藏分享哦!另外劳烦小伙伴帮我们点一下底部广告支持一下我们,好让我们赚个几毛钱!





Copyright © 古田计算器虚拟社区@2017