磁碟讀寫的時間花費和排程演算法(作業系統)

2021-08-28 10:35:25 字數 2402 閱讀 2952

今天覆習了一下計算機組成原理,重新溫習了一下磁碟,發現有許多知識點不記得了,於是寫個筆記增強一下記憶。

硬碟的儲存容量公式:

儲存容量 = 磁頭數 × 磁軌(柱面)數 × 每道扇區數 × 每扇區位元組數

因此,結合此公式和上面的資料可知磁碟最大容量為:

255 * 1023 * 63 * 512 / 1048576 = 8024 gb ( 1m =1048576 bytes )或硬碟廠商常用的單位:

255 * 1023 * 63 * 512 / 1000000 = 8414 gb ( 1m =1000000 bytes )

在 chs 定址方式中, 磁頭, 柱面, 扇區的取值範圍分別為 0到 heads - 1,0 到 cylinders - 1, 1 到 

sectors (注意是從 1 開始).

讀寫資料過程:現代硬碟尋道都是採用chs(cylinder head sector)的方式,硬碟讀取資料時,讀寫磁頭沿徑向移動,移到要讀取的扇區所在磁軌的上方,這段時間稱為尋道時間(seek time)。因讀寫磁頭的起始位置與目標位置之間的距離不同,尋道時間也不同。磁頭到達指定磁軌後,然後通過碟片的旋轉,使得要讀取的扇區轉到讀寫磁頭的下方,這段時間稱為旋轉延遲時間(rotational latencytime)。然後再讀寫資料,讀寫資料也需要時間。

從磁碟的基本結構以及資料讀寫過程我們可以看出,磁碟上資料讀取和寫入所花費的時間可以分為尋道時間、旋轉延遲、傳輸時間三個部分。

1.尋道時間

所謂尋道時間,其實就是磁臂移動到指定磁軌所需要的時間,這部分時間又可以分為兩部分:

尋道時間=啟動磁臂的時間+常數*所需移動的磁軌數,其中常數和驅動器的的硬體相關,啟動磁臂的時間也和驅動器的硬體相關。

2.旋轉延遲

旋轉延遲指的是把扇區移動到磁頭下面的時間。這個時間和驅動器的轉數有關,我們通常所說的7200轉的硬碟的轉就是這個。

平均旋轉延遲=1/(2*轉數每秒),比如7200轉的硬碟的平均旋轉延遲等於1/2*120≈4.17ms。旋轉延遲只和硬體有關。

3.傳輸時間

傳輸時間指的是從磁碟讀出或將資料寫入磁碟的時間。傳輸時間=所需要讀寫的位元組數/每秒轉速*每扇區的位元組數。

通過上面硬碟讀寫資料所分的三部分時間不難看出,大部分引數是和硬體相關的,作業系統無力優化。只有所需移動的磁軌數是可以通過作業系統來進行控制的,所以減少所需移動的磁軌數是減少整個硬碟的讀寫時間的唯一辦法。

因為作業系統內可能會有很多程序需要呼叫磁碟進行讀寫,因此合理的安排磁頭的移動以減少尋道時間就是磁碟排程演算法的目的所在,幾種常見的磁碟排程演算法如下。

1.最短尋道時間演算法(ssft)

這種演算法優先執行所需讀寫的磁軌離當前磁頭最近的請求。這保證了平均尋道時間的最短,但缺點顯而易見:離當前磁頭比較遠的尋道請求有可能一直得不到執行,這也就是所謂的「飢餓現象」。

2.先來先服務演算法(fcfs)

這種演算法將對磁碟的io請求進行排隊,按照先後順序依次排程磁頭。此演算法的優點是公平、簡單,且每個程序的請求都能依次得到處理,不會出現某一程序的請求長期得不到滿足的情況。但由於此演算法未對尋道進行優化,在對磁碟的訪問請求比較多的情況下,此演算法將降低裝置服務的吞吐量,致使平均尋道時間可能較長,但各程序得到服務的響應時間的變化幅度較小。

適用場景:由於長作業會長時間佔據處理機,該演算法比較有利於長作業,而不利於短作業。即有利於cpu繁忙的作業,而不利於i/o繁忙的作業。

3.迴圈掃瞄演算法(cscan)

也就是俗稱的電梯演算法,這種演算法是對最短尋道時間演算法的改進。這種演算法就像電梯一樣,只能從1樓上到15樓,然後再從15樓下到1樓。這種演算法的磁頭排程也是如此,磁頭只能從最裡磁軌到磁碟最外層磁軌。然後再由最外層磁軌移動到最裡層磁軌,磁頭是單向移動的,在此基礎上,才執行和最短尋道時間演算法一樣的,離當前磁頭最近的尋道請求。這種演算法改善了scan演算法,消除了對兩端磁軌請求的不公平。 

4.掃瞄演算法(scan)

優點:掃瞄演算法不僅考慮到欲訪問的磁軌與當前磁軌的距離,更優先考慮的是磁頭的當前移動方向。這種演算法在磁頭的移動方向上選擇離當前磁頭所在磁軌最近的請求作為下一次服務物件,這種改進有效避免了飢餓現象(飢餓:當乙個程序一直無法得到自己的資源而一直無法進行後續的操作時(不一定是阻塞),我們稱這個程序會飢餓而死。),並且減少了尋道時間。

缺點:不利於最遠一端的磁軌訪問請求。

常見的磁碟排程演算法

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

幾種磁碟排程演算法的描述

一 磁碟排程主要思想 裝置的動態分配演算法與程序排程相似,也是基於一定的分配策略的。常用的分配策略有先請求先分配 優先順序高者先分配等策略。在多道程式系統中,低效率通常是由於磁碟類旋轉裝置使用不當造成的。作業系統中,對磁碟的訪問要求來自多方面,常常需要排隊。這時,對眾多的訪問要求按一定的次序響應,會...

基於掃瞄的磁碟排程演算法

當磁頭正在由里向外移動時,scan演算法所考慮的下乙個訪問物件應該是其欲訪問的磁軌既在當前磁軌之外,又是距離最近的。直到再無更外的磁軌需要訪問時,才將磁臂更換為自外向裡運動。掃瞄演算法存在這樣的問題 當磁頭剛從裡向外移動而越過了某條磁軌時,恰好又有一程序請求訪問此磁軌,這時,該程序必須等待,等待磁頭...