作業系統 頁面置換演算法

2021-08-20 04:15:01 字數 1468 閱讀 5432

我在很多地方遇到了這個問題,所以想寫來看看,避免在以後換回再次的遇到這個問題,就在今天進行深入的了解下這個問題,我先它會對我以後的生活工作會有很大的幫助的。

在位址對映過程中,若在頁面中發現所要訪問的頁面不再記憶體中,則產生缺頁中斷。當發生缺頁中斷時作業系統必須在記憶體中選擇乙個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的演算法我們就叫頁面置換演算法。

先進先出(fifo)、最佳置換法(opt)和最近最少使用使用置換法(lru)等。

1)先進先出演算法(fifo):是乙個實現起來比較簡單的頁面置換演算法,其基本原則就是「選擇最早進入主存的頁面淘汰」,其理由是最早進入的頁面,其不再使用的可能性要比最近調入的頁面大。

這種演算法只是在按線性順序訪問位址空間時才是最理想的。否則效率不高。因為 那些常被訪問的頁面,往往在主存中也停留的最久,結果它們因變「老」而不得不被置換出去。

fifo的另乙個缺點就是:它有一種異常的現象,即在增加儲存塊的情況下,反而使缺頁中斷率增加了。當然導致這種異常現象的頁面走向實際上是很少見的。

2)最近最少使用的演算法(lru):就是將最近最少使用頁面置換出去。(若命中,則在模擬的時候可以將其寫到最後,每次都將最前面的替換)。

lru 演算法常常被採用的一種演算法,並被認為是相當好的。但是存在如何實現它的問題.它需要實際硬體的支援,其問題是怎樣確定最後使用的時間順序,對此主要有兩種可行的方法:

1、計數器。最簡單的情況是使每個頁表項對應乙個使用時間字段,並給cpu增加乙個邏輯時鐘或計數器。每次儲存訪問,該時鐘都加1。每當訪問乙個頁面時,時鐘暫存器的內容就被複製到相應頁表項的使用時間欄位中。這樣我們就可以始終保留著每個頁面最後訪問的「時間」。在置換頁面時,選擇該時間值最小的頁面。這樣做,不僅要查頁表,而且當頁表改變時(因cpu排程)要維護這個頁表中的時間,還要考慮到時鐘值溢位的問題。

2.棧。用乙個棧保留頁號。每當訪問乙個頁面時,就把它從棧中取出放在棧頂上。這樣一來,棧頂總是放有目前使用最多的頁,而棧底放著目前最少使用的頁。由於要從棧的中間移走一項,所以要用具有頭尾指標的雙向鏈連起來。在最壞的情況下,移走一頁並把它放在棧頂上需要改動6個指標。每次修改都要有開銷,但需要置換哪個頁面卻可直接得到,用不著查詢,因為尾指標指向棧底,其中有被置換頁。

因實現lru演算法必須有大量硬體支援,還需要一定的軟體開銷。所以實際實現的都是一種簡單有效的lru近似演算法。

3)opt(最佳置換演算法,理想置換演算法):

這是一種理想情況下的頁面置換演算法,但實際上是不可能實現的。該演算法的基本思想是:發生缺頁時,選擇記憶體中最後要被訪問的頁面置換出去。這個演算法唯一的乙個問題就是它無法實現。當缺頁發生時,作業系統無法知道各個頁面下一次是在什麼時候被訪問。雖然這個演算法不可能實現,但是最佳頁面置換演算法可以用於對可實現演算法的效能進行衡量比較,是一種很好評價演算法。

其餘的演算法我們一般不是經常的見到,所以就在這裡不進行寫入了。

作業系統 頁面置換演算法

1 最佳頁面置換演算法 opt 其所選擇的被淘汰頁面,將是以後永不再用的,或許是在最長 未來 時間內不再被訪問的頁面。最佳置換演算法是一種理想化的演算法,具有最好的效能,但難於實現。先進先出置換演算法最直觀,但可能性能最差,故應用極少。優點 保證獲得最低的缺頁率 缺點 無法預知乙個程序在記憶體的若干...

作業系統 頁面置換演算法

作業系統將記憶體按照頁的進行管理,在需要的時候才把程序相應的部分調入記憶體。當產生缺頁中斷時,需要選擇乙個頁面寫入。如果要換出的頁面在記憶體中被修改過,變成了 髒 頁面,那就需要先寫會到磁碟。頁面置換演算法,就是要選出最合適的乙個頁面,使得置換的效率最高。頁面置換演算法有很多,簡單介紹幾個。首先介紹...

作業系統 頁面置換演算法

把記憶體已無空閒空間時選擇換出頁面的演算法稱為頁面置換演算法 page replacement algorithms 不適當的演算法可能會導致程序發現 抖動 即剛被換出的頁很快又要被訪問,需要將它重新調入,可能會出現頻繁地更換頁面,以致乙個程序在執行中把大部分時間都花費在頁面置換工作上。乙個好的頁面...