标签:合成 很多 理想 ace 工作 存在 line lin math
在上一節講過, 換入換出頁面要根據特定的算法來執行, 這種算法就是頁面置換算法. 不合適的算法可能會使系統發生抖動,所謂抖動即指剛剛換出的頁面又要換回來,換回來不久又要換出去,這樣就導致系統的大部分工作時間都花在了頁面調度上,導致效率不高。
下面是幾種常見的頁面置換算法:
7.1 先入先出頁面置換算法
顧名思義,根據隊列的數據結構的思想,總是將內存存在最久的頁面先換出。
7.2 最近最久未使用頁面置換算法(Least Recently Used)
這種算法是一種比較好的算法,但是主要問題在於如何找到哪一頁是最近最久未被使用的頁面。為此需要兩類硬件的支持:
寄存器。用於記錄某進程在內存中各頁的使用情況。系統為內存中每個進程都設置一個移位寄存器,可表示為$ R = R_{n-1} R_{n-2} ...R_1 $。
當進程訪問某物理塊時,要將相應寄存器的\(R_{n-1}\)位置變成1。此時,定時信號每隔一段時間將寄存器右移一位。如果把這個n位的寄存器看成是一個n位的二進制數,則最小數值的寄存器所對應的頁面就是最近最久未使用的頁面。
棧。利用一個特殊的棧來保存當前使用的各個頁面的頁號。每當進程訪問某頁面時,便將該頁面從棧中移出,壓入棧中。這樣,位於棧底的總是最近最久未被使用的頁面。(這個比較易於理解)
7.3 最佳置換算法(Optimal Page Replacement)
是Belady於1966年提出的一種理論上的理想算法,它所選擇的淘汰的頁面是最長時間不被使用的,可以保證最低的缺頁率。之所以說是理論算法是因為該算法需要知道該進程整體的頁面走向,即知道在哪一步需要用到哪一頁,但這是很難實現的。但是可以用來做算法題以及評價其他算法。
7.4 時鐘置換算法
這是一種LRU的近似算法,但不像LRU那樣需要很多的硬件支持。
時鐘置換算法為每一頁都設置一位訪問位,再將內存中所有頁面都通過鏈接指針連成一個隊列。當某頁被訪問時,則將該位置為1。由於將修改過的頁面換出時,頁面需要重新寫入外存,話費一定的時間。所以在選擇淘汰頁面時,要同時考慮到頁面的修改位和訪問位。根據訪問位和修改位可以組合成下列四種類型的頁面:
尋找過程:
标签:合成 很多 理想 ace 工作 存在 line lin math
原文地址:https://www.cnblogs.com/lunar-ubuntu/p/12294613.html