天天看點

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

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

計算機是處理資料的機器,而資料就需要有地方存放。在計算機中,可供資料存放的地方并不太多,除了記憶體之外,最主要的存儲資料的媒介就是磁盤。對于大多數計算機領域的人來說,磁盤通常被看做是一種外部裝置。可是,對于現代作業系統來說,磁盤是不可或缺的。雖然早期的作業系統可以基于錄音帶,但由于作業系統複雜性和性能的不斷提升,用錄音帶作為作業系統的載體已經不合時宜,取而代之的是磁盤。由于作業系統需要存放在磁盤上,且作業系統内的檔案系統也是基于磁盤,是以,從某種程度來說,磁盤是作業系統不可分割的一部分,了解磁盤将對了解作業系統的原理具有重要的意義。

  計算機是處理資料的機器,而資料就需要有地方存放。在計算機中,可供資料存放的地方并不太多,除了記憶體之外,最主要的存儲資料的媒介就是磁盤。對于大多數計算機領域的人來說,磁盤通常被看做是一種外部裝置。可是,對于現代作業系統來說,磁盤是不可或缺的。雖然早期的作業系統可以基于錄音帶,但由于作業系統複雜性和性能的不斷提升,用錄音帶作為作業系統的載體已經不合時宜,取而代之的是磁盤。由于作業系統需要存放在磁盤上,且作業系統内的檔案系統也是基于磁盤,是以,從某種程度來說,磁盤是作業系統不可分割的一部分,了解磁盤将對了解作業系統的原理具有重要的意義。

一、磁盤的結構

1.1 什麼是磁盤?

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

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

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

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

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

1.2 磁盤的結構

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

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

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

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

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

1.3 盤面的結構

  為了友善存儲資料,人們将每塊盤面又分為磁道和扇面,如下圖所示:

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

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

  (2)每個磁道又被分為若幹個扇面(也稱為扇區),資料是以扇面進行存儲的,扇面也是磁盤I/O的最小機關;

  (3)扇面的内容通常分為3個部分:标題、資料部分和ECC糾錯資訊,如下表所示:

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

二、磁盤驅動器的通路速度

  磁盤在讀寫資料時的通路速度稱為磁盤的動态屬性,這是衡量一個磁盤性能的重要資料。資料通路時間或速度的計算并不簡單,而這種計算不僅依賴于磁盤的旋轉速度,還依賴于在通路開始時讀寫磁頭所處的位置。資料通路時間也有幾種衡量辦法:

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。則在先來先服務排程下,總尋道的道數為:

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

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

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。

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

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

3.4 電梯排程算法

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

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

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

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

  但是,電梯排程政策執行時,如果一個方向已經沒有需求了,它還是會掃描到末端才會掉頭,無法提前排程,也就影響了效率。是以,實作提前排程的電梯排程就是下面要介紹的提前檢視電梯排程算法。

3.5 提前檢視電梯排程算法

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

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

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

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

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

四、關于固态盤

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

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

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

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

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

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

  (2)通路速度快,接近記憶體的通路速度;

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

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

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

參考資料

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

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

作者:周旭龍

出處:http://edisonchou.cnblogs.com

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連結。

繼續閱讀