与纯分页存储管理不同,请求式分页管理系统只需作业的部分页面调入内存就可以运行了。
但系统需要解决下面三个问题:
⑴系统如何获知进程当前所需页面不在主存。
⑵当发现缺页时,如何把所缺页面调入主存。
⑶当主存中没有空闲的页框时,为了要接受一个新页,需要把老的一页淘汰出去,根据什么 策略选择欲淘汰的页面。
中断位:1表示该页在主存;0相反。
访问位:1表示该页最近被访问过;0相反。
改变位:1表示该页内容已被修改;0相反。
请求分页存储管理的地址变换流程图
查页表时,当存在位指示该页不在主存时,则引起一个缺页中断发生,相应的中断处理程序把控制转向缺页中断子程序。执行此子程序,即把所缺页面装入主存。然后处理机重新执行缺页时打断的指令,这时,就将顺利形成物理地址。如上图所示。
当要放一页面到全满的主存块时,系统需要淘汰一页。用来选取淘汰哪一页的规则,叫 置换算法(或置换策略)。
页面失效率 f =缺页次数/访问页面总数*100%
从主存中移出永不再用的页面,至少是选择最远将来才用的页面淘汰之。其实,这是 一个不实用的算法,因为页面走向是不可预知的。
⑵先进先出置换算法选择在主存中驻留时间最长的一页淘汰。
⑶最近最久未用置换算法(LRU)选择在最近一段时间内最久没有访问过的页面淘汰之。
⑷近似的LRU置换算法(NRU算法)当一存储块中的页面访问时,其相应的“页面访问”位由硬件自动置“1”,而由页面管理体制软件周期性地(设周期为T,其值通常为几百毫秒),把所有的页面访问位重 新置为“0”。这样,在时间T内,某些被访问的页面,其对应的访问位为“1”而未访问的页面,其对应的访问位为“0”。
下图算法就是循环地通过相应的页表, 查寻页面访问位为“0”的页面。在查找过程中,那些被访问的页所对应的访问位被重新置为“0”。由此可见,实际上这种近似 LRU算法,已经退化成一种“最近不用”的 算法NRU(Not Recently Used)。
对于数据页面共享,可以安排在诸作业地址空间中的任何一个页面上。至于库例程的共享则不然,它必须把共享的例程,安排到所有共享它的作业地址空间中相同的页面中,即共享例程所在的地址空间必须重叠。如下图所示。
实现页面共享引起的主要问题是,当共享页从主存中淘汰或被重新装入主存时,共享此页的所有作业页表中的相应“页面存在”位都必须更新。具体实现时采用如下技术:
为那些被共享的页面独立设置一张页表——公共页表,当某个被共享的页面与辅存之间交换时,必需对这个公共页表的表目加以更新,至于有共享页面的作业之页表,其相应表目设有一指针,指向该页在公共页表的表目即可。
总之,实现页面共享,必须使共享的页面具有相同的页号,或者要在地址之间重叠,这 将带来麻烦。因此分页不利于共享。这可以在分段存储管理中得到改进。
⑴不需要移动就可解决零头问题,提高主存的利用率。
⑵可提供大容量的多个虚拟存储器。
⑶多道程序运行的程度提高了。
⑷更加方便用户(对大作业而言)。
⑴采用了动态地址变换机构,增加计算机的成本,降低处理速度
⑵系统为各种表格花费额外空间,时间。
⑶引入块内的零头问题。
⑷对于纯分页系统,要求运行的作业全部装入,使得作业的地址空间受到主存实际容 量的限制。
⑸对于请求分页系统,为处理页面中断增加了系统开销。
欢迎大家加我微信交流讨论(请备注csdn上添加)



