FIFO調度演算法和LRU演算法

來源:互聯網
上載者:User

標籤:先進先出   使用者   比較   blog   次數   序列   面試題   代碼   依次   

一.理論

FIFO:先進先出調度演算法

LRU:最近最久未使用調度演算法

兩者都是緩衝調度演算法,經常用作記憶體的頁面置換演算法。

打一個比方,協助你理解。你有很多的書,比如說10000本。由於你的書實在太多了,你只能放在地下室裡面。你看書的時候不會在地下室看書,而是在書房看書。每次,你想看書都必須跑到地下室去找出來你想看的書,然後抱回來放到書桌上,之後才開始看。還有就是,有一些書你會反覆的看,今天看了也許過幾天又要看。總之,你自己是不知道你哪天會需要看哪本書的。你的老師每天下課的時候會給你布置一個書單,讓你晚上回去去看哪本書。(假設你老師讓你看的書在你的地下室裡面都有)跑地下室當然是非常麻煩的,所以你希望你的經常看的那些書最好放在書桌上。但是你的書房的書桌同時只能擺放10本書(這個是假設的啊)。那麼,問題來了。到底把哪些說留在書桌上最好呢?這裡說的最好,就是說你盡量少的跑地下室去找書。為瞭解決這個問題,人們發明了很多的演算法。

其中,比較常見的就是上面這兩種:FIFO演算法和LRU演算法。

FIFO演算法:

很簡單,我把書桌上的10本書按照放置時間先後堆放成一堆。這裡的放置時間,就是說這本書在我的書桌上放了幾天了。每次要看書的時候,我先在書桌上找,找到就直接可以讀了。讀完之後放回原來的位置就可以,不打亂順序。如果書桌上面沒有我要讀的書,就去地下室找。找來之後,我就把書桌上放的時間最長的那本(也就是書堆裡面最下面的那本書)放回地下室。然後把我今天需要看的這本書放在書堆的最上面。

LRU演算法:

也不難,我把書桌上的10本書按照閱讀時間先後堆放成一堆。這裡的閱讀時間,就是說我最近一次讀這本書是幾天之前。每次要看書的時候,我先在書桌上找,找到就直接可以讀了。讀完之後放在書堆的最上面。如果書桌上面沒有我要讀的書,就去地下室找。找來之後,我就把書桌上最久沒有閱讀的那本(也就是書堆裡面最下面的那本書)放回地下室。然後把我今天需要看的這本書放在書堆的最上面。上面這個比方,相信你可以看明白吧。這裡的地下室對應記憶體,書桌對應緩衝,書對應頁面。

二.缺頁次數

在一個採用頁式虛擬儲存管理的系統中,有一使用者作業,它依次要訪問的頁面序列是1,2,3,4,1,2,5,1,2,3,4,5.假定分配給該作業的頁數為3且作業初始時未裝載頁面,那麼採用FIFO調度演算法產生的缺頁中斷數為多少,採用LRU調度演算法產生的缺頁中斷數為多少?
 FIFO演算法:(First In First Out),先進先出,一般看到這類思想,首先想到的資料結構應當是隊列,但是我們這裡最好是用vector,因為調頁過程中需要遍曆隊列檢查該頁是否已存在,當演算法的儲存結構是隊列或棧,但實現過程中需要經常遍曆全隊列或全棧的內容時,最好用vector,這是《劍指Offer》面試題25給我的啟發。給出一個訪問序列的類比演算法到此應該非常簡單了,為了節省時間,下面僅給出題目計算步驟,代碼今後再補。
           訪問序列:1,2,3,4,1,2,5,1,2,3,4,5
                   1,2,3先調入記憶體,記憶體結構:3      2      1    缺頁次數:3  
                   4調入記憶體,1調出,  記憶體結構:4      3      2    缺頁次數:4
                   1調入記憶體,2調出,  記憶體結構:1      4      3    缺頁次數:5
                   2調入記憶體,3調出,  記憶體結構:2      1      4    缺頁次數:6
                   5調入記憶體,4調出,  記憶體結構:5      2      1    缺頁次數:7
                   1存在,記憶體結構不改變
                   2存在,記憶體結構不改變
                   3調入記憶體,1調出,  記憶體結構:3      5      2    缺頁次數:8
                   4調入記憶體,2調出,  記憶體結構:4      3      5    缺頁次數:9
                   5存在,記憶體結構不改變
            共缺頁9次,缺頁中斷率 = 缺頁中斷次數 / 總訪問頁數 = 9 / 12    


LRU演算法:最近最少使用(Least Recently Used),先看一下調頁過程
           訪問序列:1,2,3,4,1,2,5,1,2,3,4,5
                1,2,3先調入記憶體,記憶體結構:3      2      1    缺頁次數:3  
                4調入記憶體,1調出,  記憶體結構:4      3      2    缺頁次數:4
                1調入記憶體,2調出,  記憶體結構:1      4      3    缺頁次數:5
                2調入記憶體,3調出,  記憶體結構:2      1      4    缺頁次數:6
                5調入記憶體,4調出,  記憶體結構:5      2      1    缺頁次數:7
           到這一步其實和FIFO並沒有區別
              1調入記憶體,由於記憶體中存在1,故沒有缺頁中斷,但由於1最近被訪問過,所以要將其位置調換,
              使它最後一個被淘汰,記憶體結構:1      5      2
              2調入記憶體,沒有缺頁中斷,但記憶體位置要變化,記憶體結構:2      1      5
                  3調入記憶體,5調出,  記憶體結構:3      2      1    缺頁次數:8
                  4調入記憶體,1調出,  記憶體結構:4      3      2    缺頁次數:9
                  5調入記憶體,2調出,  記憶體結構:5      4      3    缺頁次數:10
           共缺頁10次,缺頁中斷率:10/12

FIFO調度演算法和LRU演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.