操作系統核心原理-6.外存管理(上)磁盤基礎


  計算機是處理數據的機器,而數據就需要有地方存放。在計算機中,可供數據存放的地方並不太多,除了內存之外,最主要的存儲數據的媒介就是磁盤。對於大多數計算機領域的人來說,磁盤通常被看做是一種外部設備。可是,對於現代操作系統來說,磁盤是不可或缺的。雖然早期的操作系統可以基於磁帶,但由於操作系統復雜性和性能的不斷提升,用磁帶作為操作系統的載體已經不合時宜,取而代之的是磁盤。由於操作系統需要存放在磁盤上,且操作系統內的文件系統也是基於磁盤,所以,從某種程度來說,磁盤是操作系統不可分割的一部分,理解磁盤將對理解操作系統的原理具有重要的意義。

一、磁盤的結構

1.1 什么是磁盤?

  通俗地講,磁盤就是以形狀像盤子一樣的磁性存儲介質

  (1)特性是持久,正常情況下數據存放在上面不會消失;

  (2)顯著特征是磁性圓形,因此被稱為磁盤;

  (3)價格低廉,因此可以大量使用;

1.2 磁盤的結構

  一塊磁盤實際上並不是只有一塊盤片,而是由多塊盤片組成,每塊盤片的正反兩面皆可以存放數據。下圖給出的是一個將磁盤外殼切開一塊所看到的結構圖:

  (1)每個盤面上都有一個讀寫磁頭,而所有讀寫磁頭都連在一根共享的磁臂上。

  (2)當磁臂運動時,所有的磁頭均作相同的運動,盤片則以常速不停地旋轉。

PS:盤片的旋轉速度通常為每分鍾3500~10000轉,即大約每6ms~17ms旋轉一圈。目前3500轉的磁盤已經看不到,對於筆記本來說,最低的都是5400轉了,一般都是7200轉,10000轉+已經是機械磁盤的極限。 

1.3 盤面的結構

  為了方便存儲數據,人們將每塊盤面又分為磁道扇面,如下圖所示:

  (1)磁道是一個個的同心環;

  (2)每個磁道又被分為若干個扇面(也稱為扇區),數據是以扇面進行存儲的,扇面也是磁盤I/O的最小單位;

  (3)扇面的內容通常分為3個部分:標題、數據部分和ECC糾錯信息,如下表所示:

二、磁盤驅動器的訪問速度

  磁盤在讀寫數據時的訪問速度稱為磁盤的動態屬性,這是衡量一個磁盤性能的重要數據。數據訪問時間或速度的計算並不簡單,而這種計算不僅依賴於磁盤的旋轉速度,還依賴於在訪問開始時讀寫磁頭所處的位置。數據訪問時間也有幾種衡量辦法:

2.1 尋道時間

  尋道時間(Seek Time)是指將讀寫磁頭移動到所要求的磁道位置所需要的平均時間。尋道時間通常在8ms~20ms以內,在近年來變化不大。

2.2 磁道到磁道的訪問時間

  磁道到磁道的訪問時間(Track-to-Track Time)衡量的是磁頭從一個磁道移動到一個相鄰磁道所需要的時間。這個時間通常在2ms~3ms以內,它也被稱為柱面切換時間或磁道切換時間。

2.3 旋轉延遲時間

  旋轉延遲時間指的是磁頭到達所要求的磁道位置后,等待所要求的扇面旋轉到磁頭下方的平均時間。當前磁盤驅動器的旋轉速度所處的范圍為每分鍾3500~10000轉,因此旋轉延遲的范圍在3ms~8.57ms內。

→ 平均訪問時間 = 尋道時間 + 旋轉延遲時間

三、磁盤調度算法

3.0 磁盤讀寫時間的影響因素

  (1)尋道時間

  (2)旋轉延遲時間

  (3)數據傳輸時間

  在以上3者中,前兩者為機械運動,數據傳輸主要為電子運動,機械運動的速度遠低於電子運動的速度。在兩個機械運動中,尋道時間又相對較長,因此,尋道時間居於支配地位。所以,為了提高磁盤的讀寫效率,需要降低磁盤的尋道時間,實現的手段則是磁盤調度。下面我們陸續來了解一下主要的磁盤調度算法。

3.1 先來先服務算法

  先來先服務是一種自然公平的調度策略,先來后到,誰也木有神馬特權!

  例如下圖中的一組磁盤請求,其中X表示需要讀寫的扇面,下面的數字為磁道號(這里不考慮旋轉延遲,數據所在的扇面號在此忽略)。假定磁頭的初始位置為10號位,而磁盤請求發生的順序為0、23、6、16、2、21、8、9、12。則在先來先服務調度下,總尋道的道數為:

  先來先服務追求自然公平,當然效率也十分低下,因此很少采納。

3.2 短任務優先算法

  短任務優先就是誰的磁盤讀寫數據量最少,誰就優先。由於磁盤的訪問時間主要取決於尋道和旋轉延遲,因此讀寫的數據量對於整個磁盤讀寫時間的影響並不大,因此這種策略意義不大。

3.3 短尋道優先算法

  短尋道優先則考慮當前磁頭離誰的數據最近,誰就優先。由於尋道在磁盤訪問時間中占的比重最大,因此此種策略能夠縮短磁盤訪問時間。

  例如繼續使用上面FCFS的例子,使用短尋道優先算法的訪問磁道號順序為:9、8、6、2、0、12、16、21、23,總尋道數為1+1+2+4+2+12+4+5+2=33,可以看到比FCFS的109個少了好幾倍。

  但是,這種縮短並不是絕對的,如果當前的磁盤讀寫操作如下圖所示,則磁盤讀寫請求的執行呈現的就是一種左右擺動的模式,這種情況下總尋道數=1+3+7+15+31=57。

  從上圖也可以看出,尋道執行呈現出一種左右擺動的情況,如果左右擺動的幅度越來越大,系統花費在尋道上的時間將會迅速增加。而改進的辦法就是不要左右擺動,而令其單向運動,這就是下面將要提到的電梯調度策略。

3.4 電梯調度算法

  電梯調度的核心思想是:先滿足一個方向的所有請求,再滿足所有反方向的請求,如此循環往復

  這里再次使用FCFS的例子來看,使用電梯調度時,磁頭往每個方向運動時皆會掃描到頭,如下圖所示:

  這里的總尋道數為:1+4+16+1+24+8=54,比短尋道優先節省了3個磁道的尋道時間。

  但是,電梯調度策略執行時,如果一個方向已經沒有需求了,它還是會掃描到末端才會掉頭,無法提前調度,也就影響了效率。因此,實現提前調度的電梯調度就是下面要介紹的提前查看電梯調度算法。

3.5 提前查看電梯調度算法

  提前查看電梯調度算法的核心思想是:如果一個方向的請求全部滿足后,立即反轉運行,而無需掃描到底。每次往某個方向移動時必須確保該方向還有請求未滿足,否則就立刻調轉方向,這樣也就提高了效率。

  還是使用FCFS的例子來看,使用提前查看電梯調度算法的總尋道數為:1+4+16+23+8=52,比普通的電梯調度算法節省了2個磁道的尋道時間,如下圖所示:

  這種正反兩個方向的交替運動並不一定最優,另一種改進辦法則是單向電梯調度:即只向一個方向掃描。當該方向沒有剩余請求時,則回到0道,再進行同樣的掃描。同樣,在FCFS的例子中,如果使用單向電梯調度策略,那么執行結果會如下所示,其總尋道數為:1+4+16+8=29,比提前查看電梯調度節省了23個磁道的尋道時間。

四、關於固態盤

  前面的介紹我們可以知道:磁盤低下的瓶頸在於尋道和旋轉延遲,而尋道和旋轉操作之所以效率低下的原因又在於它們都是機械運動(磁臂的直線來回運動和磁盤的旋轉運動)。目前,磁臂移動速度和磁盤旋轉速度已達或接近極限,再行提高會導致定位精度的降低。因此,提高磁盤的運行效率只能將機械運動從磁盤的結構中去除。

  回想一下我們之前提到的內存,不就是沒有機械運動的存儲介質嘛?於是,使用與內存介質相同或相仿的存儲介質構建的磁盤就是所謂的固態盤(Solid State Disk,SSD)橫空出世了。

  固態的原始意義是半導體驅動器,但在今天的存儲工業界已經演化為表示沒有機械運動部件的驅動器由於沒有移動的部件,整個驅動器似乎是固定的,因而也就被稱為固態盤

  由於木有移動的機械部件,固態盤具有一些機械盤所不具備的優點:

  (1)可靠性高,沒有噪音(沒有風扇);

  (2)訪問速度快,接近內存的訪問速度;

  (3)熱耗低於機械盤,且更省電;

  (4)不需要旋轉,其啟動時間更短;

  但是,固態盤最大的問題是成本,其單位容量成本大約為機械盤的10~20倍,這對於大容量的固態盤來說,這個成本十分可觀。對於小容量的固態盤來說,我們已經能夠承受。

參考資料

鄒恆明,《操作系統之哲學原理》,機械工業出版社

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM