第九讲 页面置换算法
来源:互联网 发布:手机淘宝保证金怎么退 编辑:程序博客网 时间:2024/06/06 12:45
第九讲 页面置换算法
局部页面置换算法主要包括以下:
- 最优页面置换算法
- 先进先出算法
- 最近最久未使用算法(LRU,Least Recently Used)
- 时钟页面置换算法(clock)
- 最不常用算法(LFU,Least Frequently Used)
- Belady现象
- LRU,FIFO和clock的比较
最优页面置换算法(OPT,optimal)
基本思想:置换在未来最长时间不访问的页面
算法实现:
- 缺页时,计算内存中每个逻辑页面的下一次访问时间
- 选择未来最长时间不访问的页面
算法特征:
- 缺页最少,是理想情况
- 实际系统中无法实现
- 无法预知每个页面在下次访问前的等待时间
- 作为置换算法的性能评价依据,在模拟器上运行某个程序,并记录每一次的页面访问情况,第二遍运行时使用最优算法
下表给出了最优页面置换算法的一个示例
b=6
c=9
d=10
先进先出算法(First-In First-out,FIFO)
思路:选择在内存驻留时间最长的页面进行置换
实现:
- 维护一个记录所有位于内存中的逻辑页面链表
- 链表元素按驻留内存的时间排序,链首最长,链尾最短
- 缺页时,选择链首页面进行置换,新页面加到链尾
特征:
- 实现简单
- 性能较差,调出的页面可能是经常访问的
- 进程分配物理页面数增加时,缺页并不一定减少(Belady现象)
最近最久未使用算法(Least Recently Used,LRU)
思路:
- 选择最长时间没有被引用的页面进行置换
- 如某些页面长时间未被访问,则它们在将来还可能会长时间不会访问
实现:
- 缺页时,计算内存中每个逻辑页面的上一次访问时间
- 选择上一次使用到当前时间最长的页面
特征:最优置换算法的一种近似
LRU算法的可能实现算法
1.页面链表
- 系统维护一个按最近一次访问时间排序的页面链表
- 链表首节点是最近刚刚使用过的页面
- 链表尾节点是最久未使用的页面
- 访问内存时,找到相应页面,并把它移到链表之首
- 缺页时,置换链表尾节点的页面
2.活动页面栈:
- 访问页面时,将此页号压入栈顶,并栈内相同的页号抽出
- 缺页时,置换栈底的页面
下表给出了最近最久未使用算法的一个示例
b=6
c=9
d=10 a=7
b=8
e=5
d=3 a=7
b=8
e=5
c=9
阅读全文
0 0
- 第九讲 页面置换算法
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 操作系统页面置换算法
- 页面置换算法解析
- 操作系统页面置换算法
- 页面置换算法初步
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 页面置换算法LRU
- 【操作系统】页面置换算法
- 页面置换算法
- 关于C语言编译器和C语言标准
- 判断一年是否为闰年
- 线程状态
- CSS样式盒子模型
- COM中GUID和UUID、CLSID、IID
- 第九讲 页面置换算法
- android studio 使用NDK和swig编译c++示例
- 如何配置Kubernetes以实现最大程度的可扩展性
- 关于Unity中Heightmap高度图
- Salesforce / Salesforce Lightning 移除快速操作
- RFID射频技术漫谈(1-5)
- cp -f 还是提示是否覆盖,去掉方法
- java基础问题汇总
- vue+webpack+vue-router+vuex+vue-resource简单实例