1. 程式人生 > >磁碟排程演算法

磁碟排程演算法

1)先來先服務(FCFS)演算法

       FCFS 演算法根據程序請求訪問磁碟的先後順序進行排程,這是一種最簡單的排程演算法。該演算法的優點是具有公平性。如果只有少量程序需要訪問,且大部分請求都是訪問簇聚的檔案扇區,則有望達到較好的效能;如果有大量程序競爭使用磁碟,那麼這種演算法在效能上往往接近於隨機排程。所以,實際磁碟排程中考慮一些更為複雜的排程演算法。 

2)最短尋找時間優先(SSTF)演算法

        SSTF演算法選擇排程處理的磁軌是與當前磁頭所在磁軌距離最近的磁軌,以使每次的尋找時間最短。當然,總是選擇最小尋找時間並不能保證平均尋找時間最小,但是能提供比 FCFS 演算法更好的效能。這種演算法會產生“飢餓”現象。

3)掃描(SCAN)演算法(又稱為電梯演算法)

        SCAN演算法在磁頭當前移動方向上選擇與當前磁頭所在磁軌最近的請求作為下一次服務的物件,實際上就是在最短尋道時間優先演算法的基礎上規定了磁頭運動的方向。由於磁頭移動規律與電梯執行相似,又稱為電梯排程演算法。SCAN 演算法對最近掃描過的區域不公平,因此,它在訪問區域性性方面不如 FCFS 演算法和SSTF 演算法好。

         補充:採用 SCAN 演算法時,不但要知道磁頭的當前位置,還要知道磁頭的移動方向。沒有前進方向上的請求時才改變方向。

4)迴圈掃描(C-SCAN)演算法

        在掃描演算法的基礎上規定磁頭單向移動來提供服務,回返時直接快速移動至起始端而不是服務任何請求。由於SCAN 演算法偏向於處理那些接近最裡或最外的磁軌的訪問請求,所以使用改進型的 C-SCAN 演算法來避免這個問題。

       採用 SCAN 演算法和 C-SCAN 演算法時磁頭總是嚴格地遵循從盤面的一端到另一端,顯然,在使用時還可以改進,即磁頭移動只需要到達最遠端的一個請求即可返回,不需要到達磁碟端點。這種形式的 SCAN 演算法和 C-SCAN 演算法稱為 LOOK 和 C-LOOK 排程。這是因為它們在朝一個給定方向前會檢視是否有請求。

    注意,若無特別說明,也可以預設 SCAN 演算法和 C-SCAN 演算法為LOOK 和 C-LOOK 排程。