怎么才能簡單理解操作系統中的 先進先出(FIFO) 和 最近最久未使用(LRU) 調度算法


FIFO:先進先出調度算法
LRU:最近最久未使用調度算法

兩者都是緩存調度算法,經常用作內存的頁面置換算法。

打一個比方,幫助你理解。

你有很多的書,比如說10000本。
由於你的書實在太多了,你只能放在地下室里面。
你看書的時候不會在地下室看書,而是在書房看書。
每次,你想看書都必須跑到地下室去找出來你想看的書,
然后抱回來放到書桌上,之后才開始看。
還有就是,有一些書你會反復的看,今天看了也許過幾天又要看。
總之,你自己是不知道你哪天會需要看哪本書的。
你的老師每天下課的時候會給你布置一個書單,讓你晚上回去去看哪本書。
(假設你老師讓你看的書在你的地下室里面都有)

跑地下室當然是非常麻煩的,所以你希望你的經常看的那些書最好放在書桌上。
但是你的書房的書桌同時只能擺放10本書(這個是假設的啊)。
那么,問題來了。
到底把哪些說留在書桌上最好呢?
這里說的最好,就是說你盡量少的跑地下室去找書。

為了解決這個問題,人們發明了很多的算法。
其中,比較常見的就是上面這兩種:FIFO算法和LRU算法。

先進先出(FIFO)算法可以這么理解:

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

最近最久未使用(LRU)算法可以這么理解:

我把書桌上的10本書按照閱讀時間先后堆放成一堆。
這里的閱讀時間,就是說我最近一次讀這本書是幾天之前。
每次要看書的時候,我先在書桌上找,找到就直接可以讀了。
讀完之后放在書堆的最上面。
如果書桌上面沒有我要讀的書,就去地下室找。
找來之后,我就把書桌上最久沒有閱讀的那本
(也就是書堆里面最下面的那本書)放回地下室。
然后把我今天需要看的這本書放在書堆的最上面。

上面這個比方,相信你可以看明白吧。
這里的地下室對應內存,書桌對應緩存,書對應頁面。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM