常見的磁碟排程演算法
阿新 • • 發佈:2018-11-26
早期的磁碟排程演算法
先來先服務
顧名思義,先來先服務就是按照請求訪問磁軌的順序來訪問磁軌。
我們來看一個例項
從 100 開始,按照請求的順序,依次訪問 55,58 … 等磁軌。
移動距離是上一個磁軌到下一個磁軌的距離。
- 優點:公平,避免飢餓現象發生
- 缺點:尋道時間長
最短尋道時間優先(SSTF)
SSTF 的原理是訪問的下一個磁軌是距離現在這個磁軌最近的那一個磁軌。
可以看到 90 這個磁軌是距離 100 這個磁軌距離最近的磁軌,所以先訪問。
而 58 這個磁軌是距離 90 這個磁軌距離最近的,所以是接下來訪問。
-
優點:比先來先演算法效能更好
-
缺點:容易造成飢餓現象
為什麼會造成飢餓現象
因為磁軌的請求時動態的,隨時都會有新的磁軌請求加入,如果,一段時間內,所請求的磁軌數都是在當前磁軌數附近,那麼早期請求但是距離當前磁軌遠的磁軌將長時間得不到滿足,造成飢餓現象。
基於掃描的磁碟排程演算法
掃描演算法(電梯排程演算法)
我們看到 SSTF 演算法雖然效能好,但是容易造成飢餓現象,本質上就是磁頭一直處在當前
磁軌的小範圍內。所以掃描演算法就是用來解決這個問題的。
掃描演算法的解決方式是,讓磁頭按照一定方向一直移動(先選擇距離當前磁軌最近的方向
,從裡到外,在從外到裡)
迴圈掃描演算法
掃描演算法也同樣存在問題,那就是,如果我按照向外的方向,剛走過假設是 100 的磁軌, 此時新請求是 99 磁軌,但是因為需要繼續向外,所以不能訪問 99 磁軌,這就造成了一定 的開銷。 而迴圈掃描演算法就是按照下一個最近的磁軌方向(如,向外掃描,到最外層後,重新從內 向外掃描)