页面置换算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.1 虚拟存储器概述
5.2 请求分页存储管理方式 5.3 页面置换算法
5.4 “抖动”与工作集
5.5 请求分段存储管理方式
5.3 页面置换算法
请求调页系统中,被换出页面时需要根据一定算法选择:
♋最佳置换算法(OPT)
♋先进先出算法(FIFO)
♋最近最久未使用置换算法(LRU)
♋最少使用置换算法
♋Clock置换算法
♋页面缓冲算法
5.3 页面置换算法(缺页率)
假定作业J i共有m页,系统分配给它的主存块为n块,这里m>n。开始时,主存没有装入任何一页的信息。如果作业J i在运行中成功访问的次数为S,不成功访问的次数为F (产生缺页中断的次数),则作业执行过程中总的访问次数为A。
A=S+F
作业J i执行过程中的缺页率:f=F/A
5.3 页面置换算法
♋最佳置换算法(OPT)
♋先进先出算法(FIFO)
♋最近最久未使用置换算法(LRU)♋最少使用置换算法
♋Clock置换算法
♋页面缓冲算法
最佳置换算法OPT
理想化算法
该算法选择的换出页面是以后永不使用的,或是在最长(未来)时间内不再被访问的页面。
可以保证最低缺页率
最佳页面的无法预知性使得该算法不可实现 可以作为评价其他算法的标尺
最佳置换算法OPT
某进程拥有三个物理块,且按照如下顺序引
5.3 页面置换算法
♋最佳置换算法(OPT)
♋先进先出算法(FIFO)
♋最近最久未使用置换算法(LRU)♋最少使用置换算法
♋Clock置换算法
♋页面缓冲算法
先进先出页面置换算法FIFO
换出时选择最早进入内存的页面。
实现方法
♋将所有已调入内存的页面按照不同进程组织为
时间升序的队列,并在每个队列中设置替换指针,使其指向驻留在内存中最久的页面。
特点
♋实现简单,但页面调入的先后顺序不一定符合
实际运行规律
先进先出页面置换算法FIFO
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
5.3 页面置换算法
♋最佳置换算法(OPT)
♋先进先出算法(FIFO)
♋最近最久未使用置换算法(LRU)♋最少使用置换算法
♋Clock置换算法
♋页面缓冲算法
最近最久未使用(LRU)置换算法
根据页面调入内存后的使用情况进行选择。 选择最近最久未使用的页面予以换出,每个页面的访问字段都记录了该页面自上次被访问以来所经历的时间t,换出时选择t值最大的页面,即最近最久未使用的页面。
LRU算法
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
LRU算法的硬件支持
LRU算法性能较优,其面临的主要问题是如何确定一个按照上次使用时间定义的排序序列,可选择如下两种方式:
♋寄存器:每个位于内存中的页面都要配置一个
移位寄存器用来标识进入内存的时间。
♋页码堆栈:每当引用一个已在堆栈的页时,都
将该页从堆栈中删除并压入顶部。
LRU算法的硬件支持
1.寄存器方式
♋移位寄存器
每个页面配置一个n位移位寄存器,当进程访问某
页面时,将其最高位设置为1,每过一个时钟周
期(如100ms)将其右移一位;换出时选择移位
寄存器值最小的页面。
特点:该算法需要搜索页表以查找计数值最小的页面,系统的时空开销需要考虑
LRU算法的硬件支持
R2R1
1
LRU算法的硬件支持
2.页码堆栈方式
♋堆栈使用双向链表实现。
♋进程访问某页面时,若该页在栈内,则从中删
除并压入栈顶;若该页不在栈内,则从栈底删除最近最久未使用的页面,并将新页面压入栈顶。
♋该算法中,栈顶总是最近访问的页面,栈底总
是最近最久未使用的页面。
LRU算法的硬件支持
4 7 0 7 1 0 1 2 1 2 6
6
2
LRU算法的硬件支持
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 10 7
5.3 页面置换算法
♋最佳置换算法(OPT)
♋先进先出算法(FIFO)
♋最近最久未使用置换算法(LRU)♋最少使用置换算法
♋Clock置换算法
♋页面缓冲算法
最少使用置换算法(LFU)
通过在个页表项中设置一个记录访问次数的计数器,可以形成LFU算法。
由于活跃页应该有较大的访问次数记录值,因此可以将该计数器值最小的页面换出。 实际中,在最少使用置换算法中采用了移位寄存器方式。每次访问某页时,便将该移位寄存器的最高位置1,再每隔一定时间(例如100ms)右移一次。这样,在最近一段时间使用最少的页面将是∑R
最小的页。
i
5.3 页面置换算法
♋最佳置换算法(OPT)
♋先进先出算法(FIFO)
♋最近最久未使用置换算法(LRU)♋最少使用置换算法
♋Clock置换算法
♋页面缓冲算法
Clock置换算法
对LRU的改进,硬件支持要求低。
该算法使用访问位帮助实现页置换:
♋访问位存在于页表项内,初值为0,每当读写一
个页时均对其硬件置位。
♋LRU算法可视为将移位寄存器的值右移1位后抛
弃最低位,并将访问位放入移位寄存器的最高位。
♋其他改进:基本clock置换算法(二次机会算法)
和改进型clock置换算法。