FIFO:先進先出調度算法
LRU:最近最久未使用調度算法
兩者都是緩存調度算法,經常用作內存的頁面置換算法。
打一個比方,幫助你理解。
你有很多的書,比如說10000本。
由於你的書實在太多了,你只能放在地下室里面。
你看書的時候不會在地下室看書,而是在書房看書。
每次,你想看書都必須跑到地下室去找出來你想看的書,
然后抱回來放到書桌上,之后才開始看。
還有就是,有一些書你會反復的看,今天看了也許過幾天又要看。
總之,你自己是不知道你哪天會需要看哪本書的。
你的老師每天下課的時候會給你布置一個書單,讓你晚上回去去看哪本書。
(假設你老師讓你看的書在你的地下室里面都有)
跑地下室當然是非常麻煩的,所以你希望你的經常看的那些書最好放在書桌上。
但是你的書房的書桌同時只能擺放10本書(這個是假設的啊)。
那么,問題來了。
到底把哪些說留在書桌上最好呢?
這里說的最好,就是說你盡量少的跑地下室去找書。
為了解決這個問題,人們發明了很多的算法。
其中,比較常見的就是上面這兩種:FIFO算法和LRU算法。
先進先出(FIFO)算法可以這么理解:
很簡單,我把書桌上的10本書按照放置時間先后堆放成一堆。
這里的放置時間,就是說這本書在我的書桌上放了幾天了。
每次要看書的時候,我先在書桌上找,找到就直接可以讀了。
讀完之后放回原來的位置就可以,不打亂順序。
如果書桌上面沒有我要讀的書,就去地下室找。
找來之后,我就把書桌上放的時間最長的那本(也就是
書堆里面最下面的那本書)放回地下室。
然后把我今天需要看的這本書放在書堆的最上面。
最近最久未使用(LRU)算法可以這么理解:
我把書桌上的10本書按照閱讀時間先后堆放成一堆。
這里的閱讀時間,就是說我最近一次讀這本書是幾天之前。
每次要看書的時候,我先在書桌上找,找到就直接可以讀了。
讀完之后放在書堆的最上面。
如果書桌上面沒有我要讀的書,就去地下室找。
找來之后,我就把書桌上最久沒有閱讀的那本
(也就是書堆里面最下面的那本書)放回地下室。
然后把我今天需要看的這本書放在書堆的最上面。
上面這個比方,相信你可以看明白吧。
這里的地下室對應內存,書桌對應緩存,書對應頁面。
