如何減少換頁錯誤?

2021-06-22 03:27:16 字數 989 閱讀 4170

有這麼一道筆試題:

如何減少換頁錯誤?

1,程序傾向於占用cpu

2,訪問區域性性(localilty of reference)滿足程序要求

3,程序傾向於占用i/o

4,使用基於最短剩餘時間(shortest remaining time)的排程機制

5,減少頁大小

yathing最先排出1和3選項,訪問快慢、訪問介面,對「錯誤」能夠有什麼影響?肯定是需要某種策略。

仔細看題:「減少」,而不是「消除」,說明這個「錯誤」不管怎麼樣,肯定是存在的;關鍵在於你是否理解「換頁錯誤」的定義了。

看看選項2和4都有點像;至於5嘛,不太像了——即使頁面減少,錯誤率會降低嗎?難說,你可不知道系統實際執行時,資料大小、分布是什麼樣的:頁面大,更可能將大資料塊放在一頁上;頁面小,則會分散資料——形象上是這麼理解,但作業系統演算法沒這麼麻煩,也沒見過這方面的概率討論,排除。

我猜想的答案是2,因為被「錯誤」2字誤導了:既然要減少錯誤嘛,「區域性化」是很常用的策略,錯誤發生在區域性就不至於影響全域性......(歸根結底還是不明白「換頁錯誤」的定義)其實如果仔細想想,「區域性化」可以降低錯誤的影響,但是它並不能降低錯誤的發生概率!剩下的答案就顯而易見了。

換頁錯誤:

page fault 是在程序嘗試執行**指導,或者引用程序所對映物理記憶體中並不存在的資料頁時,作業系統記錄的事件。換句話說,程序需要的記憶體頁實際上可能還處於物理記憶體中,但是由於它無法再分配到程序中,所以當程序將此頁讀取回到它的記憶體頁時,就發生了page fault。

說白了就是想在記憶體裡找東西,卻發現不存在(不得不重新讀取...),按道理這不應該算「錯誤」這麼嚴重吧(簡單點,「不命中」而已)。

採用最短剩餘時間排程機制:

srt演算法(spn演算法的搶占式版本):總是選擇剩餘時間最短的程序執行

為什麼會減少換頁錯誤呢?因為時間短的結束執行快,不需要頻繁切換程序(導致重新整理記憶體),所以換頁錯誤發生的概率就減少了......(yathing:弄明白以後,想象一下就行了,別被名詞搞暈了!)

怎麼減少錯誤的發生

錯誤,我們暫且僅對軟體開發而言。錯誤的類別,暫且僅考慮介面錯誤和實現錯誤。比如在一段公路入口有巨大的標識牌,上面寫著 前方道路,靠左行,紅燈行,綠燈停。這個大家可能覺得很荒謬,然而類似的事情在軟體開發裡面卻層出不窮,生產方認為自己已經在文件中清楚地說明了用法和用途,然而他卻沒有意識到這與使用方的常識...

如何在Silverlight中切換「頁面」

具體做法是 新建乙個usercontrol,名字可以叫做pageswitcher。然後將pageswitcher.xaml中的grid控制項去掉,程式設計下面這樣 xmlns xmlns x 然後在後台 中增加乙個方法,比如叫做switchpage,用來切換頁面,然後在建構函式中呼叫,用來顯示第乙個...

如何減少bug(php 版本)

重點內容變數宣告在使用 foreach 迴圈要注意賦值,特別是裡面有if 判斷時 eg arr id 1,name hhee id 0,name hhee0 id 3,name hhee0 id 4,name hhee0 result temp array foreach arr as v resu...