Posted on 2010-05-23 16:54
千張 閱讀(1909)
評論(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