千张笔记

Email:rain_qian830@163.com
posts - 28, comments - 42, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

【转】如何减少换页错误

Posted on 2010-05-23 16:54 千张 阅读(1889) 评论(0)  编辑 收藏 引用 所属分类: 程序员笔试宝典

如何减少换页错误?

1,进程倾向于占用CPU

2,访问局部性(localilty of reference)满足进程要求

3,进程倾向于占用I/O

4,使用基于最短剩余时间(shortest remaining time)的调度机制

5,减少页大小

yathing最先排出1和3选项,访问快慢、访问接口,对“错误”能够有什么影响?肯定是需要某种策略。

仔细看题:“减少”,而不是“消除”,说明这个“错误”不管怎么样,肯定是存在的;关键在于你是否理解“换页错误”的定义了。

看看选项2和4都有点像;至于5嘛,不太像了——即使页面减少,错误率会降低吗?难说,你可不知道系统实际运行时,数据大小、分布是什么样的:页面大,更可能将大数据块放在一页上;页面小,则会分散数据——形象上是这么理解,但操作系统算法没这么麻烦,也没见过这方面的概率讨论,排除。

我猜想的答案是2,因为被“错误”2字误导了:既然要减少错误嘛,“局部化”是很常用的策略,错误发生在局部就不至于影响全局......(归根结底还是不明白“换页错误”的定义)其实如果仔细想想,“局部化”可以降低错误的影响,但是它并不能降低错误的发生概率!剩下的答案就显而易见了。

Google一下这道题,没找到标准答案;百度一下,在百度百科中,找到了“换页错误”的解释。(不错,百度这次搜索表现良好)

换页错误:

Page Fault 是在进程尝试执行代码指导,或者引用进程所映射物理内存中并不存在的数据页时,操作系统记录的事件。换句话说,进程需要的内存页实际上可能还处于物理内存中,但是由于它无法再分配到进程中,所以当进程将此页读取回到它的内存页时,就发生了Page Fault。

说白了就是想在内存里找东西,却发现不存在(不得不重新读取...),按道理这不应该算“错误”这么严重吧(简单点,“不命中”而已)。

采用最短剩余时间调度机制:

SRT算法(SPN算法的抢占式版本):总是选择剩余时间最短的进程运行

为什么会减少换页错误呢?因为时间短的结束运行快,不需要频繁切换进程(导致刷新内存),所以换页错误发生的概率就减少了......(yathing:弄明白以后,想象一下就行了,别被名词搞晕了!)


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/boluo1982107/archive/2009/06/02/4235903.aspx


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理