1 磁盤結構
我們先從個盤片結構講起输莺。如圖1所示答憔,圖中的一圈圈灰色同心圓為一條條磁道,從圓心向外畫直線彬伦,可以將磁道劃分為若干個弧段滔悉,每個磁道上一個弧段被稱之為一個扇區(qū)(圖踐綠色部分)。扇區(qū)是磁盤的最小組成單元单绑,通常是512字節(jié)回官。其中灰色的直線是間隙,用于分割扇區(qū),間隙大約占磁道的10%.
圖1 老式磁盤一個盤片的結構
圖2展示了由一個個盤片組成的磁盤立體結構,一個盤片上下兩面都是可讀寫的搂橙,圖中藍色部分叫柱面(cylinder)歉提。
盤片的每一面都對應一個磁頭,磁頭可以進行讀寫区转。磁頭根據磁臂可以伸縮找到相應的磁道苔巨。而磁片轉動可以找到相應的扇區(qū)。磁盤控制器控制磁頭和磁盤的轉動废离。一個磁盤控制器可以控制多個磁盤侄泽。
圖2 老式磁盤的整體結構
一個磁盤的容量計算公式為:
存儲容量 = 磁頭數 × 磁道(柱面)數 × 每道扇區(qū)數 × 每扇區(qū)字節(jié)數
2 讀寫磁盤
讀寫一個磁盤需要三個步驟,每一步都有相關的延遲:
- 磁盤控制器將磁頭組合定位在磁盤塊所在磁道的柱面上所需要的時間即尋道時間
- 磁盤控制器等待訪問塊的第一個扇區(qū)旋轉到磁頭下蜻韭。此時間稱為旋轉延遲
- 當磁盤控制器讀取或寫數據時悼尾,數據所在的扇區(qū)和扇區(qū)間的空隙經過磁頭柿扣,此時間稱為傳輸時間
尋道時間、旋轉延遲和傳輸時間的總和稱為磁盤的延遲诀豁。
讓我們計算一下讀16 384字節(jié)塊的最小窄刘、最大和平均時間。
最小時間僅計算傳輸時間舷胜。也就是說,磁頭已經定位在塊所在的磁道上活翩,而且塊的第一個扇區(qū)即將從磁頭下面通過烹骨。
由于Megatron 747的每個扇區(qū)有4096字節(jié)。所以該塊要占用4個扇區(qū)材泄。為此沮焕,磁頭必須越過4個扇區(qū)和扇區(qū)之間的3個間隙。間隙占圓周的10%拉宗,而扇區(qū)占其余的90%峦树。圍繞著圓周有256個間隙和256個扇區(qū)。由于間隙合在一起覆蓋36度圓弧旦事,而扇區(qū)覆蓋其余的324度圓弧魁巩,所以被3個間隙和4個扇區(qū)覆蓋的圓弧的總度數為:36 × 3 / 256 + 324 × 4 / 256 = 5.48度。傳輸時間是(5.48/360)×0.008 3=0.000 13s姐浮,即5.48/360得到該總度數占一個圓周的分數谷遂,而0.008 33s是旋轉360度所需的時間。
現(xiàn)在讓我們來看一下讀該塊的最大的可能時間卖鲤。在最壞的情況下肾扰,磁頭被定位于最內圈柱面,而我們要讀的塊是在最外圈柱面上(或者相反)蛋逾。這樣集晚,控制器必須做的第一件事就是移動磁頭。正如我們在前面已經知道的区匣,移動Megatron 747磁頭跨越全部柱面所花費的時間大約是17.38ms偷拔。這個數量就是讀盤的尋道時間。
當磁頭到達正確的柱面時沉颂,可能發(fā)生的最糟糕的事情是条摸,所需要的塊的起點剛好從磁頭下面越過。假定我們必須從塊的起點開始讀铸屉,實際上我們必須等待完整一圈的時間钉蒲,或者說8.33ms,使塊的起點再次到達磁頭下彻坛。一旦發(fā)生這種情況顷啼,我們必須等待的僅僅是讀整個塊的0.13ms傳輸時間的總量踏枣。這樣,最壞情況下的等待時間是17.38 +8.33+ 0.13 = 25.84ms钙蒙。最后讓我們來計算讀一個塊的平均時間茵瀑。等待時間的兩個要素是容易計算的:傳輸時間總是0.13ms,平均旋轉等待時間是磁盤旋轉半周所需要的時間躬厌,即4.17ms马昨。可以假定扛施,平均尋道時間正好是越過一半磁道所需要的時間鸿捧。然而,這樣計算并不很準確疙渣,因為通常磁頭起初是位于中間位置附近的某個位置匙奴,因此平均來說,磁頭到達所要求柱面需移動的距離小于跨越一半的磁道的距離妄荔。我們將它作為一個習題泼菌,說明平均移動距離是移過整個磁盤的1/3。
在Megatron 747的磁盤上移動1/3的距離需要1+(65 536/3)/4000=6.46ms啦租。因此哗伯,我們估算的平均延遲時間是6.46+4.17+0.13=10.76ms;上式中3個相加的數字分別表示平均尋道時間刷钢、平均旋轉延遲和平均傳輸時間笋颤。