磁碟排程演算法

2021-08-15 18:04:11 字數 2748 閱讀 4810

一次磁碟讀寫操作的時間由尋找(尋道)時間延遲時間傳輸時間決定。

(1)、尋找時間ts: 活動頭磁碟在讀寫資訊前,將磁頭移動到指定磁軌所需的時間。這個時間除跨越 n 條磁軌的時間外,還包括啟動磁臂的時間 s ,

即   ts = m * n + s 

備註:m 是與磁碟驅動器速度有關的常數,約為 0.2ms ,磁臂的啟動時間約為 2ms

(2)、延遲時間 tr:磁頭定位到某一磁軌的扇區(塊號)所需要的時間,設磁碟的旋轉速度為 r ,則

tr = 1 / 2r 

對於硬碟,典型的旋轉速度為  5400 r/m ,相當於一周 11.1 ms ,則 tr 為 5.55 ms ;對於軟盤,其旋轉速度在 300 ~ 600 r/m之間,則  tr 為

50 ~ 100 ms

(3)、傳輸時間 tt:從磁碟讀出或向磁碟寫入資料所經歷的時間的,這個時間取決於每次所讀 / 寫 的位元組數 b 和i磁碟的旋轉速度:

tt = b / rn

備註:r 為磁碟每秒鐘的轉數;n 為乙個磁軌上的位元組數

在磁碟訪問時間的計算中,尋道時間和磁碟排程演算法相關,下面將介紹分析幾種演算法,而延遲時間和傳輸時間都與磁碟旋轉速度相關,且為線性

相關,所以在硬體上,轉速是磁碟效能的乙個非常重要的引數。

總平均訪問時間   ta 可以表示為:

ta = ts + 1 / 2r + b / rn

雖然這裡給出了總平均訪問時間的公式,但是這個平均值是沒有太大的實際意義的,因為在實際的磁碟 i / o 操作中,訪問時間和磁碟排程演算法

密切相關。排程演算法直接決定尋找時間,從而決定了總的訪問時間

目前常用的磁碟排程演算法有以下幾種:

(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 排程。

對於作業系統整體框架不太熟悉的讀者經常會混淆磁碟排程演算法中的迴圈掃瞄演算法和頁面排程演算法中的 clock 演算法,請讀者注意區分。

對比以上幾種磁碟排程演算法,fcfs 演算法過於簡單,效能較差,僅在請求佇列長度接近於 1 時才較為合理;sstf 演算法較為通用和自然;scan 演算法和 c-scan

演算法在磁碟負載較大時比較佔優勢,它們之間的比較見下表:

除了減少尋找時間外,減少延遲時間也是提高磁碟傳輸效率的重要因素。可以對磁碟扇區進行交替編號,對磁碟片組中的不同盤面錯位命名

磁碟是連續自轉裝置,磁頭讀 / 寫乙個物理塊後,需要警告過短暫的處理時間才能開始讀 / 寫下一塊。假設邏輯記錄資料連存放在磁碟空間中,

若在盤面上按扇區交替編號連續存放,則連續 讀 / 寫多少個記錄時能減少磁頭的延遲時間;同柱面不同盤面的扇區若能錯位編號,連續 讀 / 寫 相鄰

兩個盤面的邏輯記錄時也能減少磁頭延遲時間。

磁碟尋塊時間分為三部分,尋道時間、延遲時間和傳輸時間,尋道時間和延遲時間屬於「找」的時間,凡是「找」的時間都可以通過一定的方法削減,但

傳輸時間是磁碟本身效能所決定的,不能通過一定的措施減少。         

磁碟排程演算法

磁碟排程在多道程式設計的計算機系統中,各個程序可能會不斷提出不同的對磁碟進行讀 寫操作的請求。由於有時候這些程序的傳送請求的速度比磁碟響應的還要快,因此我們有必要為每個磁碟裝置建立乙個等待佇列,常用的磁碟排程演算法有以下四種 先來先服務演算法 fcfs 最短尋道時間優先演算法 sstf 掃瞄演算法 ...

磁碟排程演算法

一次磁碟讀寫操作的時間由尋找 尋道 時間 延遲時間和傳輸時間決定 1 尋找時間ts 活動頭磁碟在讀寫資訊前,將磁頭移動到指定磁軌所需要的時間。這個時間除跨越n條磁軌的時間外,還包括啟動磁臂的時間s,即 ts m n s。式中,m是與磁碟驅動器速度有關的常數,約為0.2ms,磁臂的啟動時間約為2ms。...

磁碟排程演算法

include include include include define n 8 int init int arr 隨機產生磁軌 printf n return arr void two part int arr 把產生產生的隨機磁軌分為從小到大 從大到小兩個部分排序 j 0 for i 0 i...