第四章 存储器管理 4.7 请求分页存储管理方式

发布时间 2023-05-02 19:39:01作者: 一只朋克小狗

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

    1.页表机制

        ①状态位D:用于说明该页是否已调入内存,供程序访问时参考

        ②访问位A:用于记录本页在一段时间内被访问的次数,或最近已有多长时间未被访问,提供给置换算法选择换出页面时参考

        ③修改位M:用于表示该页在调入内存后是否被修改过,也是提供给置换算法在换出页面时是否将该页面写回外存作参考(内存中的每一页都在外存上保留一份副本,若未被修改,则不需要将该页写回外存;否则更新在外存上的副本,以保证副本始终是最新的)

        ④外存地址:用于指出该页在外存上的地址,供调入该页时使用

    2.缺页中断机构

    在地址映射过程中,在页表中发现所要访问的页不在内存,则产生缺页中断。

    3.地址变换机构

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

    1.最小物理块数的确定

    最小物理块数指能保证进程正常运行所需的最少物理块数。若系统为某进程所分配的物理块数少于此值时,进程将无法运行。

    2.物理块的分配策略

        ①固定分配局部置换:为每个进程分配一定数目的物理块,在整个运行期间都不再改变

        ②可变分配全局置换:先为系统中的每个进程分配一定数目的物理块,而OS自身也保持一个空闲物理块队列。 当某进程发现缺页时,由系统从空闲物理块队列中,取出一个物理块分配给该进程,并将欲调入的(缺)页装入其中

        ③可变分配局部置换:为每个进程分配一定数目的物理块,但当某进程发现缺页时,只允许从该进程在内存的页面中选出一页换出,这样就不会影响其它进程的运行。在进程运行过程中统计进程的缺页率,如果缺页率高,则为其增加一定的内存页,否则适当减少其内存的页面数

    3.物理块的分配算法(固定分配策略下)

    ①平均分配算法

    ②按比例分配算法:根据进程的大小按比例分配物理块的算法。 

    ③考虑优先权的分配算法 

三、调页策略

    1.系统应当在何时把一个页面装入内存? 

        ①预调页方式:将那些预计在不久之后便会被访问的页面,预先调入内存。 

        ②请求调页方式:仅当进程执行过程中,通过检查页表发现相应页面不在内存时,才装入该页面。

    2.从何处调入页面?

    (在请求分页系统中的外存分为两部分: 用于存放文件的文件区,用于存放对换页面的对换区。)

         ①系统拥有足够的对换区空间,这时可以全部从对换区调入所需页面,以提高调页的速度

        ②系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入,而当换出这些页面时,由于它们未被修改而不必再将它们换出,以后再调入时,仍从文件区直接调入; 但对于那些可能被修改的部分,在将它们换出时,便须调到对换区,以后需要时,再从对换区调入。 

        ③UNIX方式:与进程有关的文件都放在文件区,应从文件区调入。故凡是未运行过的页面,都应从文件区调入。而对于曾经运行过但又被换出的页面,由于是被放在对换区,因此在下次调入时,应从对换区调入。 

    3.页面调入过程?

四、页面置换算法

    1.最佳置换算法OPT

    从主存中移出永远不再需要的页面;如无这样的页面存在,则应选择最长时间不需要访问的页面。 “向后看”

    2.先进先出置换算法FIFO

    总是选择作业中驻留时间最长(即最老)的一页淘汰。即:先进入主存的页面先退出主存。

    3.最近最久未使用置换算法LRU

    当需要置换一页面时,选择在最近一段时间内最久不用的页面予以淘汰。

 


LRU算法的硬件支持(寄存器或栈两类硬件之一的支持)

①移位寄存器:用于记录某进程在内存中各页使用情况。

    为每个在内存中的页面配置一个移位寄存器,可表示为:                

R=Rn-1Rn-2Rn-3···R2R1R0

   当访问某物理块时,要将相应寄存器的最高位Rn-1位置成1。系统每隔一定时间(例如100 ms)将寄存器右移一位。

 

②栈:每当进程访问时某页面时,便将该页面号从栈中移出,压入栈顶。这样栈底则是最近最久未使用页面的页面号


    4.最少使用置换算法LFU

      为页面设置移位寄存器,记录每个页面的访问次数,最少访问的页面首先考虑淘汰 。

    5.简单的Clock置换算法(NRU)——最近未用算法

      为每页设置一位访问位,再将内存中的所有页面都通过链接指针链接成一个循环队列。

      当某页被访问时,其访问位被置1。

      置换程序从上次停止位置开始检查页面的访问位。如果是0,就选择该页换出; 若为1,则重新将它置0,暂不换出,而给该页第二次驻留内存的机会。

    6.改进型Clock置换算法

      换出未修改过的页面比换出被修改过的页面开销小,因为如果该页面驻留内存期间没有被修改过,那么不必把它写回辅存,否则系统必须把它写回辅存。

      在置换范围内首选: 在最近没有被使用过,且在驻留内存期间没有被修改过的页面作为被置换页面。 

      由访问位A修改位M可以组合成下面四种类型的页面:

      1类(A=0,M=0:表示该页最近既未被访问,又未被修改,是最佳淘汰页。

      2类(A=0,M=1):表示该页最近未被访问,但已被修改,并不是很好的淘汰页。

      3类(A=1,M=0):最近已被访问,但未被修改,该页有可能再被访问。

      4类(A=1,M=1):最近已被访问且被修改,该页可能再被访问。  

      扫描过程:

    ①从指针所指示的当前位置开始,扫描循环队列,寻找A=0且M=0的第一类页面,将所遇到的第一个页面作为所选中的淘汰页。在第一次扫描期间不改变访问位A。    

   ②如果第一步失败,即查找一周后未遇到第一类页面,则开始第二轮扫描,寻找A=0且M=1的第二类页面,将所遇到的第一个这类页面作为淘汰页。在第二轮扫描期间,将所有扫描过的页面的访问位A都置0

    ③如果第二步也失败,亦即未找到第二类页面,则将指针返回到开始的位置,并将所有的访问位复0。然后重复第一步,如果仍失败,必要时再重复第二步,此时就一定能找到被淘汰的页 .