磁盤結構
- 盤面(Platter):一個磁盤有多個盤面;
- 磁道(Track):盤面上的圓形帶狀區域,一個盤面可以有多個磁道;
- 扇區(Track Sector):磁道上的一個弧段,一個磁道可以有多個扇區,它是最小的物理儲存單位,目前主要有 512 bytes 與 4 K 兩種大小;
- 磁頭(Head):與盤面非常接近,能夠將盤面上的磁場轉換爲電信號(讀),或者將電信號轉換爲盤面的磁場(寫);
- 制動手臂(Actuator arm):用於在磁道之間移動磁頭;
- 主軸(Spindle):使整個盤面轉動。
# 磁盤調度算法
讀寫一個磁盤塊的時間的影響因素有:
- 旋轉時間(主軸轉動盤面,使得磁頭移動到適當的扇區上)
- 尋道時間(制動手臂移動,使得磁頭移動到適當的磁道上)
- 實際的數據傳輸時間
其中,尋道時間最長,因此磁盤調度的主要目標是使磁盤的平均尋道時間最短。
1. 先來先服務
FCFS, First Come First Served
按照磁盤請求的順序進行調度。
優點是公平和簡單。缺點也很明顯,因爲未對尋道做任何優化,使平均尋道時間可能較長。
2. 最短尋道時間優先
SSTF, Shortest Seek Time First
優先調度與當前磁頭所在磁道距離最近的磁道。
雖然平均尋道時間比較低,但是不夠公平。如果新到達的磁道請求總是比一個在等待的磁道請求近,那麼在等待的磁道請求會一直等待下去,也就是出現飢餓現象。具體來說,兩端的磁道請求更容易出現飢餓現象。
3. 電梯算法
SCAN
電梯總是保持一個方向運行,直到該方向沒有請求爲止,然後改變運行方向。
電梯算法(掃描算法)和電梯的運行過程類似,總是按一個方向來進行磁盤調度,直到該方向上沒有未完成的磁盤請求,然後改變方向。
因爲考慮了移動方向,因此所有的磁盤請求都會被滿足,解決了 SSTF 的飢餓問題。