页面置换算法
来源:互联网 发布:铁路局通信段 知乎 编辑:程序博客网 时间:2024/05/04 13:05
页面置换方法:
起源
操作系统给每个进程分配内存空间,即为每个进程分配多少个页框驻留进程。此时,分配到的页框称为驻留集。有两种方法:固定驻留策略和动态驻留策略。
固定驻留策略指为每个进程分配固定的页框数,不能增减,也不能使用别的进程的空间
动态驻留策略指在进程活跃期间,系统可以根据进程的缺页率进行动态调整,进程的页框数可以增减。这样就有两个问题:页框置换的范围,如何选择置换出内存的页框。
页框置换有局部置换和全局置换,固定驻留策略必然导致局部置换,而全局置换必须使用动态驻留策略。
第二个问题则涉及到页面置换算法。
定义
地址映射过程中,若发现所要访问的页面不再内存中,则产生缺页中断。此时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。
常见的页面置换算法:
OPT:OPT(最佳置换算法),是理论算法,它将不再使用的页面换出,而实际中不能预知哪个页面不再使用,但是这个算法是最优算法,可以作为评测其他算法的性能。
FIFO:First In First Out,先进先出。合队列的特性,数据结构上使用队列Queue来实现。按照页面装进内存的时间进行置换,越老的页面最先被换出,不管该页面是否经常使用。算法简单,但是效率不高。
LRU:Least Recently Used,最近最少使用。LRU是根据使用时间的差异来决定的。按照上次使用时间进行排序,将离上次使用时间最长的页面换出。LRU算法是经常采用的页面置换算法。
可以采用栈的数据结构,新数据插入到栈顶;每当缓存数据被访问,则将数据移到栈顶;当栈满的时候,将栈底的数据丢弃。
LFU:Least FrequentlyUsed,最不经常使用。LFU根据使用次数的差异来决定。其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”。
1. 新加入数据插入到队列尾部(因为引用计数为1);
2. 队列中的数据被访问后,引用计数增加,队列重新排序;
3. 当需要淘汰数据时,将已经排序的列表最后的数据块删除。
Clock:
采用应用为R,当R=1说明被引用过,这种方法是FIFO的改进,根据装入内存时间和是否被引用过作为标准,首先从时间最长项检查,若R=0则置换出,若为1则检查下一项并将R=0。若全部R=1,则按照FIFO方法进行置换。
参考:http://www.cnblogs.com/tracylee/archive/2012/10/16/2726891.html
点击打开链接
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 操作系统页面置换算法
- 页面置换算法解析
- 操作系统页面置换算法
- 页面置换算法初步
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 页面置换算法
- 页面置换算法LRU
- 【操作系统】页面置换算法
- 页面置换算法
- 页面置换算法
- Socket超时浅析
- Ollydbg 编写脚本的一些语法及例子(OD脚本)
- Hduoj1081!【DP】
- Kivy a to Z -- 一个简单的通过adb同步Android系统文件的工具
- LeetCode-Trapping Rain Water
- 页面置换算法
- 详解OD脚本的写法续之进阶篇
- 实习之旅
- Python polymorphism
- Python学习笔记
- Trie树+并查集+欧拉回路poj2513
- python 简单实现 图片百叶窗效果
- (转载)JAVA MVC初了解
- 进步,从CSDN博客开始