页面置换算法与系统颠簸分析
摘要:页面置换算法是操作系统内存管理中的一个重要问题。为了研究不同页面置换算法的区别与联系以及它们对系统颠簸的影响,在此采用了将不同置换算法对比介绍的方法,阐释了几种常见的页面置换算法的原理和思想,并通过它们对系统颠簸影响的分析实验,得到了通过改进页面置换算法解决系统颠簸的三个途径。通过采用局部页面置换算法,动态调整的页面置换算法和跟踪缺页率,可以有效地实现系统颠簸的控制。
关键词:页面置换算法;系统颠簸;缺页中断;内存管理;操作系统;虚拟内存
中图分类号:TN964?34文献标识码:A文章编号:1004?373X(2013)20?0065?06
0引言
在系统运行过程中,若程序所要访问的页面不在内存而需要把他们调入内存,但内存已经没有空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据送到磁盘的交换区中,这个过程称为页面置换。决定将哪个页面调出,需根据一定的算法来确定,通常,把选择换出页面的算法成为页面置换算法。
置换算法的好坏,将直接影响到系统的性能。当发生缺页中断时,虽然可以随机地选择一个页面置换,但是如果一个被频繁使用的页面被置换出内存,很可能它在很短时间内又要被调入内存,这会带来不必要的开销。一个好的页面置换算法,应具有较低的页面更换频率。从理论上讲,应将那些以后不再会访问的页面置换出,或者把那些在较长时间内不会再访问的页面调出。这对提高系统性能极其重要。
1常见的页面置换算法
1.1最优页面置换算法
1.1.1算法思想介绍
最佳页面置换算法(OptimalPageReplacementAlgorithm,OPT)是一种理想情况下的页面置换算法,它在所有页面置换算法中产生的页错误率最低,但实际上该算法是不可能实现的。
该算法的基本思想是:发生缺页时,有些页面在内存中,其中有一页将很快被访问(也就是下一条指令要访问的那一页),而其他页面则可能要到10、100或者1000条指令后才会被访问,每个页面都可以用在该页面首次被访问前所要执行的指令数进行标记。
最佳页面置换算法规定:标记最大的页应该被置换。例如,如果某页在800万条指令内不会被使用,另一页在600万条指令内不会被使用,则置换前一个页面。这个算法惟一的一个问题就是它无法实现,因为当缺页发生时,操作系统无法知道各个页面下一次是在什么时候被访问。虽然最佳页面置换算法不可能实现,但是该算法可以用于对可实现算法的性能进行衡量比较。如果一个页面置换算法不是最优的,但是它的性能与最优置换相比相差不大(如仅有2%的性能差距),那么就可以判定该算法是有实用价值的。
1.1.2算法分析
从理论上说,当置换一个页面出内存时,被置换出的页面在将来仍然需要被访问,那个时候将发生缺页中断。既然不好的事情(缺页中断)总会发生,计算机也和人一样,希望把不愉快的事情尽可能地向后拖延。一个最好的页面置换算法应该把因为需要调入这个页面而发生的缺页中断推迟到将来,越久越好。因此选择最久之后才会被访问的页面换出内存是理论上最佳的,这也是这个算法被称为最优置换的原因。
1.2先进先出页面置换算法(FIFO)
1.2.1算法思想介绍
FIFO算法总是淘汰在内存中停留得最久的那个页面。具体实现方法是由操作系统维护一个所有当前在内存中的页面的链表,最新进入的页面放在表尾,最久进入的页面放在表头。当发生缺页中断时,淘汰表头页面并把新调入的页面加到表尾。FIFO页面置换算法容易理解和实现,但是其性能并不总是很好。
1.2.2算法分析
FIFO算法仅仅考虑到在内存中滞留了很久的页面的需求性可能比新进入的页面更小。就像在超级市场中,新引进的商品往往比已经库存了很久的商品更容易被购买,因此当新引进商品时,通常淘汰那个库存了最久的商品。
但是这种考虑显然不太准确,谁说新上架的东西一定比库存很久的东西更有用呢?考虑一个页面,它在很早的时候被调入内存,之后被频繁的引用,这个页面很容易被FIFO算法当作没用的页面从而被淘汰。因此纯粹的FIFO算法很容易淘汰重要的页面,实际很少使用。
1.3第二次机会页面置换算法
1.3.1算法思想介绍
第二次机会页面置换算法是对FIFO算法的改进。它在FIFO的基础上进行了修改,其性能较FIFO有了很大的提高,避免了把经常使用的页面置换出去。
和FIFO算法一样,操作系统维护一个所有当前在内存中的页面的链表,最新进入的页面放在表尾,最久进入的页面放在表头。当需要置换页面是,检查最老页面的R位,如果它为0,表示它最近未被使用,也就是说,它又老又没用,可以立即置换。如果是1,则把R位置为0,并把该页面放在链表尾端(即把它作为刚装入的页面一样),然后继续搜索。
1.3.2算法示例
如图1(a)所示,页面A到页面H按照进入内存的时间先后顺序保存在链表中。页面上的数字是该页面进入内存时的时间。第二次机会算法的一个执行示例过程如下:
(1)在时间20发生了一次缺页中断;
(2)检查最老的页面A,如果A的R位为0,则将它淘汰出内存;
(3)现在页面A的R位为1,则将A放到链表的尾部,并且重新设置页面的进入时间为当前时刻,并置A的R位为0。即让A页面好像是刚刚调入内存一样;
(4)检查当前最老的页面B,重复以上过程。
可以看出在上面的过程中,如果A到H页面都被访问过了,那么在遍历了一次之后,仍然是页面A被淘汰,此算法就变成了纯粹的FIFO算法。
1.3.3算法分析
该算法的思想是找到一个最近的时钟滴答中从来没有被访问过的页面,而且这个页面是最老的(最先调入内存),这样综合了两个方面的考虑:
(1)老的页面比新的页面需求量小(FIFO算法的想法)
(2)局部性:最近未被访问的页面今后也可能不被访问
并且算法优先考虑局部性,例如在上面的过程中,如果A~H页面都被访问过了,那么在遍历了一次之后,仍然是最老的页面A被淘汰,此算法就变成了纯粹的FIFO算法。
期刊库(http://www.zgqkk.com),是一个专门从事期刊推广、投稿辅导的网站。
本站提供如何投稿辅导,寻求投稿辅导合作,快速投稿辅导,投稿辅导格式指导等解决方案:省级投稿辅导/国家级投稿辅导/核心期刊投稿辅导//职称投稿辅导。
【免责声明】本文仅代表作者本人观点,与投稿辅导_期刊发表_中国期刊库专业期刊网站无关。投稿辅导_期刊发表_中国期刊库专业期刊网站站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。
投稿辅导服务咨询与期刊合作加盟
陆老师联系QQ: 913775405(普刊)
蒋老师联系QQ: 867306987(核心)
刘老师联系QQ: 271374912(核心)
联系电话:18015016272
17327192284
投稿辅导投稿邮箱:zgqkk365@126.com
期刊推荐
- 《课程教育研究》 旬刊 国家级
- 《网络空间安全》(信息安全与技术)月刊 国
- 《价值工程》旬刊 国家级 科技统计源期刊
- 《高教论坛》 月刊 省级
- 《法制与社会》旬刊 省级
- 《中国教育学刊》月刊 14版北大核心
- 《语文建设》 旬刊 14版北大核心
- 《中国绿色画报》 月刊 国家级
- 《社科纵横》季刊 社科类优秀期刊
- 《求索》月刊 14版北大核心期刊
- 《财会月刊》旬刊 14版北大核心
- 《艺术品鉴》 月刊 省级
- 《中华建设》月刊 国家级 建设类优秀期刊
- 《教学与管理》旬刊 北大核心
- 《当代经济》 旬刊 省级
- 《新课程研究》旬刊 省级 教育类优秀学术期
- 《文教资料》 旬刊 省级
- 《学术界》 月刊 双核心
- 《吉林教育》旬刊 省级 教育类学术期刊
- 《中国农业资源与区划》 月刊 14版北大核心
- 《继续教育研究》月刊 北大核心期刊
- 《财经界(学术版)》半月刊 国家级
- 《电影评介》半月刊 14版北大核心
- 《公路交通科技》 月刊 北大核心
- 《新闻传播》月刊 省级 新闻类优秀期刊