當從輔存調頁至主存時,若主存已滿時,需要進行主存頁面之間的替換,虛擬儲存器的替換演算法有:fifo演算法、lru演算法、lfu演算法等。
先進先出排程演算法。如果乙個資料是最先進入的,那麼可能認為它被訪問的可能性很小,當空間滿的時候,最先進入的資料(隊首元素)會被最早淘汰掉,並把新加入的資料插入到隊尾。
它的缺點:因為fifo置換演算法與程序訪問記憶體的動態特徵是不相容的,被置換的記憶體頁面往往是被頻繁訪問或者沒有給程序分配足夠的頁面,所以fifo演算法會使得一些頁面頻繁地被替換和重新申請記憶體,導致了缺頁率增加。
最近最久未使用排程演算法。如果乙個資料在最近一段時間沒有被訪問到,那麼可認為它在未來被訪問的可能性也很小,當空間滿的時候,最久沒有訪問的資料最先被淘汰。
它的缺點:如果是偶爾的批量訪問不同的資料時其命中率就會很低。比如我頻繁的訪問a,接著訪問不同的資料直到a被淘汰,此時我再訪問a,則不得不又再次把a加入到cache中,顯然這種方式是不合時宜的,因為a已經訪問了很多次了,不應該將其淘汰而把一堆只訪問一次的資料加入到cache中。
最近最不常用的排程演算法。應將這段時間內訪問次數最少的資料替換出。為此給每個資料設定乙個計數器,每訪問一次,計數器的值+1。當傳送衝突的時候,就找到當前計數器的值最小的那乙個資料,把這個資料替換成新的元素。
例題:某虛擬儲存器採用頁式儲存管理,使用lru頁面替換演算法。若每次訪問在乙個時間單位內完成,頁面訪問的序列如下:1,8,1,7,8,2,7,2,1,8,3,8,2,1,3,1,7,1,3,7。已知主存只允許存放四個頁面初始狀態時4個頁面是全空的,則頁面失效次數是( 6 )。
lru演算法的思想:每頁設定乙個計數器,每次命中一頁,該頁對應的計數器清零,其他各頁的計數器加1;需要替換時,將計數值最大的頁換出,所以,對應的訪問過程及相應的計數器的內容、替換結果如下:
LRU 與 LFU 演算法
lru是最近最少使用頁面置換演算法 least recently used 也就是首先淘汰最長時間未被使用的頁面 lfu是最近最不常用頁面置換演算法 least frequently used 也就是淘汰一定時期內被訪問次數最少的頁 比如,第二種方法的時期t為10分鐘,如果每分鐘進行一次調頁,主存塊...
溫故 LRU演算法和LFU演算法
lru和lfu是不同的 lru是最近最少使用頁面置換演算法 least recently used 也就是首先淘汰最長時間未被使用的頁面 lfu是最近最不常用頁面置換演算法 least frequently used 也就是淘汰一定時期內被訪問次數最少的頁 比如,第二種方法的時期t為10分鐘,如果每...
FIFO排程演算法和LRU演算法
fifo 先進先出排程演算法 lru 最近最久未使用排程演算法 兩者都是快取排程演算法,經常用作記憶體的頁面置換演算法。打乙個比方,幫助你理解。你有很多的書,比如說10000本。由於你的書實在太多了,你只能放在地下室裡面。你看書的時候不會在地下室看書,而是在書房看書。每次,你想看書都必須跑到地下室去...