磁碟排程演算法

2021-07-12 00:26:40 字數 2767 閱讀 6663

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

1) 尋找時間ts:活動頭磁碟在讀寫資訊前,將磁頭移動到指定磁軌所需要的時間。這個時間除跨越n條磁軌的時間外,還包括啟動磁臂的時間s,即:ts = m * n + s。式中,m是與磁碟驅動器速度有關的常數,約為0.2ms,磁臂的啟動時間約為2ms。

2)延遲時間tr:磁頭定位到某一磁軌的扇區(塊號)所需要的時間,設磁碟的旋轉速度為r,則:tr = 1 / (2 * r)。對於硬碟,典型的旋轉速度為5400r/m,相當於一周11.1ms,則tr為5.55ms;對於軟盤,其旋轉速度在300~600r/m之間,則tr為50~100ms。

3) 傳輸時間tt:從磁碟讀出或向磁碟寫入資料所經歷的時間,這個時間取決於每次所讀/寫的位元組數b和磁碟的旋轉速度:tt = b / (r * n)。式中,r為磁碟每秒鐘的轉數;n為乙個磁軌上的位元組數。

在磁碟訪問時間的計算中,尋道時間與磁碟排程演算法相關,下面將會介紹分析幾種演算法,而延遲時間和傳輸時間都與磁碟旋轉速度相關,且為線性相關,所以在硬體上,轉速是磁碟效能的乙個非常重要的引數。

總平均訪問時間ta可以表示為:ta = ts + tr + tt。

(1)先來先服務(fcfs)

按請求者的先後次序啟動磁碟驅動器,而不考慮它們要訪問的物理位置。

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

1、演算法思想:按訪問請求到達的先後次序服務。

2、優點:簡單,公平。

3、缺點:效率不高,相鄰兩次請求可能會造成最內到最外的柱面尋道,使磁頭反覆移動,增加了服務時間,對機械也不利。

4、例子:

假設磁碟訪問序列:98,183,37,122,14,124,65,67。讀寫頭起始位置:53。求:磁頭服務序列和磁頭移動總距離(道數)。

由題意和先來先服務演算法的思想,得到下圖所示的磁頭移動軌跡。由此:

磁頭服務序列為:98,183,37,122,14,124,65,67

磁頭移動總距離=(98-53)+(183-98)+|37-183|+(122-37)+|14-122|+(124-14)+|65-124|+(67-65)=640(磁軌)

(2)最短尋道時間優先(sstf)

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

1、演算法思想:優先選擇距當前磁頭最近的訪問請求進行服務,主要考慮尋道優先。

2、優點:改善了磁碟平均服務時間。

3、缺點:造成某些訪問請求長期等待得不到服務,即出現「飢餓」現象。

4、例子:對上例的磁碟訪問序列,可得磁頭移動的軌跡如下圖。

磁頭服務序列為:65,67,37,14,98,122,124,183

磁頭移動總距離=12 + 2 + 30 +23 + 84 + 24 + 2 + 59 = 236 (磁軌)

(3)掃瞄演算法(scan)或電梯排程演算法

scan演算法在磁頭當前移動方向上選擇與當前磁頭所在磁軌距離最近的請求作為下一次服務的物件。由於磁頭移動規律與電梯執行相似,故又稱為電梯排程演算法。scan演算法對最近掃瞄過的區域不公平,因此,它在訪問區域性性方面不如fcfs演算法和sstf演算法好。

演算法思想:當裝置無訪問請求時,磁頭不動;當有訪問請求時,磁頭按乙個方向移動,在移動過程中對遇到的訪問請求進行服務,然後判斷該方向上是否還有訪問請求,如果有則繼續掃瞄;否則改變移動方向,並為經過的訪問請求服務,如此反覆。

掃瞄演算法(電梯演算法)的磁頭移動軌跡

優點:克服了最短尋道優先的缺點,既考慮了距離,同時又考慮了方向

缺點:存在乙個請求剛好被錯過而需要等待較長時間的問題。

上例中,假設磁頭朝0方向移動

磁頭服務序列為:37,14,65,67,98,122,124,183

磁頭移動總距離=16 + 23 + 51 + 2 + 31 + 24 + 2 + 59 = 208 (磁軌)

(4)迴圈掃瞄演算法(cscan)

迴圈掃瞄排程演算法是在掃瞄演算法的基礎上改進的,為了減少延遲,規定磁頭單向移動,例如,只是自里向外移動,從當前位置開始沿磁頭的移動方向去選擇離當前磁頭最近的那個柱面訪問,如果沿磁頭的方向無請求時,磁頭立即返回到最裡面的欲訪問的柱面,再亦即將最小柱面號緊接著最大柱面號構成迴圈。

優點:兼顧較好的尋道效能和防止飢餓現象,同時減少乙個請求可能等待的最長時間。

缺點:可能出現磁頭停留在某處不動的情況(磁臂黏著)

上例中,假設磁頭移動的方向是從柱面0到柱面199方向。

磁頭服務序列為:65,67,98,122,124,183,14,37

磁頭移動總距離=12 + 2 + 31 + 24 + 2 + 59 + 169 + 23= 298 (磁軌)

磁碟排程演算法

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

磁碟排程演算法

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