Posted on 2010-05-23 16:54
千張 閱讀(1918)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
程序員筆試寶典
如何減少換頁錯(cuò)誤?
1,進(jìn)程傾向于占用CPU
2,訪問局部性(localilty of reference)滿足進(jìn)程要求
3,進(jìn)程傾向于占用I/O
4,使用基于最短剩余時(shí)間(shortest remaining time)的調(diào)度機(jī)制
5,減少頁大小
yathing最先排出1和3選項(xiàng),訪問快慢、訪問接口,對(duì)“錯(cuò)誤”能夠有什么影響?肯定是需要某種策略。
仔細(xì)看題:“減少”,而不是“消除”,說明這個(gè)“錯(cuò)誤”不管怎么樣,肯定是存在的;關(guān)鍵在于你是否理解“換頁錯(cuò)誤”的定義了。
看看選項(xiàng)2和4都有點(diǎn)像;至于5嘛,不太像了——即使頁面減少,錯(cuò)誤率會(huì)降低嗎?難說,你可不知道系統(tǒng)實(shí)際運(yùn)行時(shí),數(shù)據(jù)大小、分布是什么樣的:頁面大,更可能將大數(shù)據(jù)塊放在一頁上;頁面小,則會(huì)分散數(shù)據(jù)——形象上是這么理解,但操作系統(tǒng)算法沒這么麻煩,也沒見過這方面的概率討論,排除。
我猜想的答案是2,因?yàn)楸?#8220;錯(cuò)誤”2字誤導(dǎo)了:既然要減少錯(cuò)誤嘛,“局部化”是很常用的策略,錯(cuò)誤發(fā)生在局部就不至于影響全局......(歸根結(jié)底還是不明白“換頁錯(cuò)誤”的定義)其實(shí)如果仔細(xì)想想,“局部化”可以降低錯(cuò)誤的影響,但是它并不能降低錯(cuò)誤的發(fā)生概率!剩下的答案就顯而易見了。
Google一下這道題,沒找到標(biāo)準(zhǔn)答案;百度一下,在百度百科中,找到了“換頁錯(cuò)誤”的解釋。(不錯(cuò),百度這次搜索表現(xiàn)良好)
換頁錯(cuò)誤:
Page Fault 是在進(jìn)程嘗試執(zhí)行代碼指導(dǎo),或者引用進(jìn)程所映射物理內(nèi)存中并不存在的數(shù)據(jù)頁時(shí),操作系統(tǒng)記錄的事件。換句話說,進(jìn)程需要的內(nèi)存頁實(shí)際上可能還處于物理內(nèi)存中,但是由于它無法再分配到進(jìn)程中,所以當(dāng)進(jìn)程將此頁讀取回到它的內(nèi)存頁時(shí),就發(fā)生了Page Fault。
說白了就是想在內(nèi)存里找東西,卻發(fā)現(xiàn)不存在(不得不重新讀取...),按道理這不應(yīng)該算“錯(cuò)誤”這么嚴(yán)重吧(簡單點(diǎn),“不命中”而已)。
采用最短剩余時(shí)間調(diào)度機(jī)制:
SRT算法(SPN算法的搶占式版本):總是選擇剩余時(shí)間最短的進(jìn)程運(yùn)行
為什么會(huì)減少換頁錯(cuò)誤呢?因?yàn)闀r(shí)間短的結(jié)束運(yùn)行快,不需要頻繁切換進(jìn)程(導(dǎo)致刷新內(nèi)存),所以換頁錯(cuò)誤發(fā)生的概率就減少了......(yathing:弄明白以后,想象一下就行了,別被名詞搞暈了!)
本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/boluo1982107/archive/2009/06/02/4235903.aspx