赞
踩
在进程运行过程中,若其访问的页面不在内存而需将其调入,但内存已无空闲空间时,需从内存中调出一页程序或数据,送入磁盘的对换区。
但应将哪个页面调出,需根据一定的算法来确定。把选择换出页面的算法称为页面置换算法
,其好坏直接影响系统的性能。
一个好的置换算法应具有较低的页面更换频率。从理论上讲,应将那些以后不会再访问的页面换出,或者把那些在较长时间内不会再访问的页面换出。
设作业执行中访问页面的总次数为A,其中有F次访问的页面尚未装入主存,故产生了F次缺页中断。
现定义缺页中断率
为:
f = F/A
最佳置换算法是一种理想化的算法,具有最好的性能,但难于实现。
原理:
其所选择的被淘汰页面,将是以后永不再用的,或许是在最长(未来)时间内不再被访问的页面。
优点:保证获得最低的缺页率
缺点:无法预知一个进程在内存的若干个页面,哪个在未来最长时间内不再被访问。
算法无法实现,但可评价其他算法。
先进先出置换算法最直观,但可能性能最差,故应用极少。
例子:
Belady现象
如果对—个进程未分配它所要求的全部页面,有时就会出现 “分配的页面数增多但缺页率反而提高” 的异常现象。发生在FIFO(先进先出)置换算法。
白话解释:就是上面的叶页框增多,理想上缺页率会降低,但有可能缺页率反而提高-----》就叫:Belady现象
算法根据页面调入内存后的使用情况进行决策。由于无法预测各页面将来的使用情况,
只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法是选择最近最久未使用的页面予以淘汰。
该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当需淘汰一个页面时,选择现有页面中其t值最大的,即最近最久未使用的页面予以淘汰。
LRU置换算法虽然较好,但需较多的硬件支持,为了了解一个进程在内存中的各个页面各有多少时间未被进程访问,以及如何快速地知道哪一页是最近最久未使用的页面,需有以下两类硬件之一的支持:
寄存器
为每个在内存中的页面配置一个移位寄存器,用来记录某进程在内存中各页的使用情况。
移位寄存器表示为:
R=Rn-1Rn-2Rn-3…R2R1R0
当进程访问某物理块时,要将相应寄存器的Rn-1位置成1。此时,定时信号将每隔一定时间将寄存器右移一位。
如果把n位寄存器的数看作一个整数,那么具有最小数值的寄存器所对应的页面,就是最近最久未使用的页面。
栈
利用一个特殊的栈来保存当前使用的各个页面的页面号。每当进程访问某页面时,便将该页面的页面号从栈中移出,将它压入栈顶。
因此,栈顶始终是最新被访问页面的编号,而栈底则是最近最久未使用页面的页面号。
原理:
NRU算法是根据访问位
来确定谁是最近一个时期内未被访问的页,循环扫描,若遇到的访问位为0,则选中置换,若遇到的访问位为1,则将其改为0,让其继续驻留内存,继续循环扫描下一个。
每页有一个使用标志位(use bit),若该页被访问则置user bit=1。 置换时采用一个指针,从当前指针位置开始按地址先后检查各页,寻找use bit=0的页面作为被置换页。指针经过的user bit=1的页都修改user bit=0,若检查到队列的最后一个页面时,访问位仍为1,则再返回到队首去检查第一个页面。
原理:
改进型NRU算法是通过多轮扫描访问位和修改位来一起确定谁是淘汰的页。
过程:
该算法在页面分配时,采用可变分配和局部置换的方式。
被置换页面的选择和处理:
用FIFO算法选择被置换页,把被置换的页面放入两个链表之一。如果页面未被修改,就将其归入到空闲页面链表的末尾,否则将其归入到已修改页面链表。
当有一个未被修改的页要换出时,实际上并不将它换出内存,而是把它挂在自由页链表的未尾;类似的置换一个已修改的页面时,将其挂在修改页面链表的未尾。
空闲页面和已修改页面,仍停留在内存中一段时间,如果这些页面被再次访问,只需较小开销,而被访问的页面可以返还作为进程的内存页。
当已修改页面达到一定数目后,再将它们一起写回到磁盘上,然后将它们归入空闲页面链表,这样能大大减少I/O操作的次数。
某内存管理系统中,现假定分配给某进程4个页框,该进程中的4个逻辑页进驻内存及被调用访问的情况如下表:
设若接下来要访问的进程页号是5,需要进行页面置换。
(设表中时间单位 : ns , NRU和改进型NRU算法中,置换指针当前位置均指向第0页所在处)
问:
(1)请问FIFO、LRU、NRU 、以及改进型的NRU各将替换哪一页?
(2)请简要叙述出这几种算法的基本思想。
答:
(1)请问FIFO、LRU、NRU 、以及改进型的NRU各将替换哪一页?
答案:2、1、0、2
分析:
- FIFO
先进先出,看装入时刻
谁最早,谁最早就是先进----->故页号2被置换- LRU
最近最久未使用,看上次引用时刻
,谁最小说明最近最久未使用 ---->故页号1被置换- NRU
- 改进型NRU算法
第一次扫描:没有A=0,M=0的页
若失败进行第二次扫描,寻找A=0,M=1的页,同时把遇到的A为1的都改为0
若仍失败,进行第三次扫描,此时重复第一次扫描的任务,寻找A=0,M=0的页面;若仍失败,则重复第二步扫描,此时一定能找到淘汰页。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。