操作系統原理第十一章:大容量存儲

1 磁盤結構

文件是放在磁盤上的,因此磁盤的性能是對操作文件有很大的影響。下圖是一個磁盤的結構示意圖,很多個磁盤platter圍繞着一個軸spindle旋轉,磁盤旁邊有磁柱arm assembly,磁柱上有磁臂arm,磁臂的末端有磁頭read-write head,每個磁頭就可以訪問盤面上的相關信息:
在這裏插入圖片描述
對磁盤劃分時,我們把磁盤劃分爲很多個同心的圓環叫做磁道track,每個磁道上又劃分了很多等大小的塊叫扇區sector,在各個同心圓環上同一個磁道上的磁盤叫做柱面cylinder

磁盤儲存數據的原理和盒式磁帶類似,只不過盒式磁帶上存儲是模擬格式的音樂,而硬盤上存儲的是數字格式的數據。寫入時,磁頭線圈上加電,在周圍產生磁場,磁化其下的磁性材料;電流的方向不同,所以磁場的方向也不同,可以表示 0 和 1 的區別。讀取時,磁頭線圈切割磁場線產生感應電流,磁性材料的磁場方向不同,所以產生的感應電流方向也不同。


磁盤由若干磁盤組成,繞樞軸高速旋轉,目前主流磁盤轉速7200轉/分;我們在定位磁盤上的某個記錄時,往往需要如下三個參數:

  • 柱面號:各盤面所有的讀寫頭同時移動,並定位在同樣的垂直位置的磁道上,這些磁道形成了一個柱面。由外向內是:0,1,2,……,L;
  • 磁頭號:磁盤的全部有效盤面從上到下依次編號:0,1,2,……,H。磁頭號與盤面號是相對應的;
  • 扇區號:將各盤面分割成若干大小相等的扇區,編號:0,1,2,3,……,n。

磁盤設備是以一種邏輯塊的一維大數組的形式編址的,這裏的邏輯塊是傳輸的最小單位。邏輯塊的一維數組映射到磁盤上一些相連的扇區。0扇區是最外邊柱面的第一個磁道的第一個扇區。數據首先都映射到一個磁道,其餘的數據映射到同一柱面的其他磁道,然後按照從外向裏的順序映射到其餘的柱面。

磁盤I/O速度的高低,將直接影響文件系統的性能。提高磁盤I/O速度的主要途徑有:

  • 選擇性能好的磁盤;
  • 設置磁盤高速緩衝區;
  • 採用好的磁盤調度算法。

前兩種方法都是在硬件上下功夫,最後一種方法是可以由操作系統來控制的,因此我們主要討論磁盤調度算法。

好的磁盤調度算法可以縮短磁盤的訪問時間,磁盤的訪問時間分爲如下三種:

  • 尋道時間Ts:把磁頭從當前位置移動到指定磁道上所經歷的時間,它與磁盤轉速、移動的磁道數有關;
  • 旋轉延遲時間Tr:指定扇區移動到磁頭下面所經歷的時間;
  • 傳輸時間Tt:指把數據從磁盤讀出,或向磁盤寫入數據所經歷的時間。

2 磁盤調度

在上面提到的磁盤訪問三個時間中,操作系統能夠改變的時間只有尋道時間,在設計磁盤調度算法時,目的就是爲了減少尋道時間(尋道距離)。

2.1 先來先服務(FCFS)

先來先服務調度算法的思想如字面意思一樣,這裏不再解釋,假設磁盤的請求序列爲 98, 183, 37, 122, 14, 124, 65, 67 ,且磁頭當前的位置在53,磁頭移動軌跡示意圖如下:
在這裏插入圖片描述
根據磁頭移動的軌跡圖,可以計算出磁頭總共移動了640個柱面的距離。

2.2 最短尋道時間優先(SSTF)

最短尋道時間優先的思想就是選擇從當前磁頭位置所需尋道時間最短的請求,假設磁盤的請求序列爲 98, 183, 37, 122, 14, 124, 65, 67 ,且磁頭當前的位置在53,磁頭移動軌跡示意圖如下:
在這裏插入圖片描述
根據磁頭移動的軌跡圖,可以計算出磁頭總共移動了208個柱面的距離。最短尋道時間優先算法思想類似於短作業優先算法,有可能引起某些請求的飢餓。

2.3 掃描算法(SCAN)

爲了解決最短尋道時間優先算法造成的飢餓問題,這裏引入了掃描算法,它不僅考慮到欲訪問的磁道與磁頭當前位置間的距離,更優先考慮的是磁頭當前的移動方向。算法所選擇的訪問對象應當是與磁頭當前的移動方向一致且距離最近的。具體來說就是磁頭從磁盤的一端開始向另一端移動,沿途響應訪問請求,直到到達了磁盤的另一端,此時磁頭反向移動並繼續響應服務請求。由於掃描算法類似於現實中的電梯工作過程,有時也稱爲電梯算法

假設磁盤的請求序列爲 98, 183, 37, 122, 14, 124, 65, 67 ,且磁頭當前的位置在53朝磁道號減小的方向移動,磁頭移動軌跡示意圖如下:
在這裏插入圖片描述
根據磁頭移動的軌跡圖,可以計算出磁頭總共移動了236個柱面的距離。掃描算法存在着等待問題,也就是若磁頭朝一個方向移動時,又來了大量另一方向的請求,那麼這些請求就要等待較長時間磁頭才能過來。


爲了解決這個問題,引入了 C-SCAN 算法,C的意思就是循環的意思,它提供比掃描算法更均衡的等待時間。它的辦法是磁頭從磁盤的一段向另一端移動,沿途響應請求。當它到了另一端,就立即回到磁盤的開始處,在返回的途中不響應任何請求。

假設磁盤的請求序列爲 98, 183, 37, 122, 14, 124, 65, 67 ,且磁頭當前的位置在53朝磁道號增加的方向移動,磁頭移動軌跡示意圖如下:
在這裏插入圖片描述


不管是 SCAN 算法還是 C-SCAN算法,都需要磁頭從一端移到另外一端,如上圖,其實沒有必要返回到 0 處,再到 14,爲了解決這個問題,引入了 LOOK算法,它的辦法是磁臂在每個方向上僅僅移動到最遠的請求位置,然後立即反向移動,而不需要移動到磁盤的一端。

假設磁盤的請求序列爲 98, 183, 37, 122, 14, 124, 65, 67 ,且磁頭當前的位置在53朝磁道號減小的方向移動,磁頭移動軌跡示意圖如下:
在這裏插入圖片描述
根據磁頭移動的軌跡圖,可以計算出磁頭總共移動了198個柱面的距離。


此外還有 C-LOOK 算法是對 C-SCAN 算法的改進,C-LOOK 的辦法是讓磁臂在每個方向上僅僅移動到最遠的請求位置,然後立即反向移動,而不需要移動到磁盤的一端。

假設磁盤的請求序列爲 98, 183, 37, 122, 14, 124, 65, 67 ,且磁頭當前的位置在53朝磁道號增加的方向移動,磁頭移動軌跡示意圖如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章