詳解硬碟內部結構及工作原理-零基礎也能看的懂

廢話不多,先上圖

=======================================================

純個人手打,替老師傳道,不求多大成就但願 能幫到大家,在閒暇的時間裡為大家共享一些工作經驗和各種技術資源文章,希望幫助大家共同進步 也希望我的發佈對你有所幫助,我的發佈裡有更多類似的文章可以查閱,喜歡的請點關注,謝謝。你們的關注是我不停發佈的最大動力

=======================================================

詳解硬盤內部結構及工作原理-零基礎也能看的懂

一: 物理結構:

1. 磁頭驅動器:音圈,馬達,永磁鐵組成。用來驅動磁頭進行工作

2. 盤片(磁片):用來存儲數據

3. 主軸:用來帶動磁盤片轉動

4. 高速緩存芯片:用來暫時存放硬盤與磁頭之間的讀寫數據,做中轉用,提高存取速度,

此芯片容量和質量是除轉速之外決定讀寫速度最重要之一。

5. 數據傳輸芯片:依據主控芯片發出的讀寫指令控制硬盤主軸電機和讀寫磁頭對盤片上

的數據進行讀取和寫入操作

6、讀寫指令:就是單位時間內讀寫數據量, 可以這樣理解:主控芯片對數據傳輸芯片

說“來你1毫秒之內給我讀一千個字節”,這個就叫做指令,1毫秒 就叫做單位時間。

7. 主控芯片:主要負責硬盤數據讀寫指令和數據傳輸工作,數據傳輸,DMA請求,中斷

請求等.

二: 邏輯結構

詳解硬盤內部結構及工作原理-零基礎也能看的懂

盤片的正面:圍成一個圓圈一個圓圈的叫做磁道,平面上兩個斜線構成的叫做扇區,盤的扇區和磁道構成的豎向叫做柱面下面介紹 盤面、磁道、柱面、扇區

下面介紹 盤面、磁道、柱面、扇區

1. 盤面

硬盤的盤片一般用鋁合金材料做基片,高速硬盤也可能用玻璃做基片。硬盤的每一個盤片都有兩個盤面(Side),即上、下盤面,一般每個盤面都會利用,都可以存儲數據,成為有效盤片,也有極個別的硬盤盤面數為單數。每一個這樣的有效盤面都有一個盤面號,按順序從上至下從“0”開始依次編號。在硬盤系統中,盤面號又叫磁頭號,因為每一個有效盤面都有一個對應的讀寫磁頭。硬盤的盤片組在2~14片不等,通常有2~3個盤片,故盤面號(磁頭號)為0~3或 0~5。

2. 磁道

磁盤在格式化時被劃分成許多同心圓,這些同心圓軌跡叫做磁道(Track)。磁道從外向內從0開始順序編號。硬盤的每一個盤面有300~1 024個磁道,新式大容量硬盤每面的磁道數更多。信息以脈衝串的形式記錄在這些軌跡中,這些同心圓不是連續記錄數據,而是被劃分成一段段的圓弧,這些圓弧的角速度一樣。由於徑向長度不一樣,所以,線速度也不一樣,外圈的線速度較內圈的線速度大,即同樣的轉速下,外圈在同樣時間段裡,劃過的圓弧長度要比內圈 劃過的圓弧長度大。每段圓弧叫做一個扇區,扇區從“1”開始編號,每個扇區中的數據作為一個單元同時讀出或寫入。一個標準的3.5寸硬盤盤面通常有幾百到幾千條磁道。磁道是“看”不見的,只是盤面上以特殊形式磁化了的一些磁化區,在磁盤格式化時就已規劃完畢。

3. 柱面

所有盤面上的同一磁道構成一個圓柱,通常稱做柱面(Cylinder),每個圓柱上的磁頭由上而下從“0”開始編號。數據的讀/寫按柱面進行,即磁 頭讀/寫數據時首先在同一柱面內從“0”磁頭開始進行操作,依次向下在同一柱面的不同盤面即磁頭上進行操作,只在同一柱面所有的磁頭全部讀/寫完畢後磁頭 才轉移到下一柱面(同心圓的再往裡的柱面),因為選取磁頭只需通過電子切換即可,而選取柱面則必須通過機械切換。電子切換相當快,比在機械上磁頭向鄰近磁道移動快得多,所以,數據的讀/寫按柱面進行,而不按盤面進行。也就是說,一個磁道寫滿數據後,就在同一柱面的下一個盤面來寫,一個柱面寫滿後,才移到下一個扇區開始寫數據。讀數據也按照這種方式進行,這樣就提高了硬盤的讀/寫效率。

一塊硬盤驅動器的圓柱數(或每個盤面的磁道數)既取決於每條磁道的寬窄(同樣,也與磁頭的大小有關),也取決於定位機構所決定的磁道間步距的大小。

4.扇區

磁盤上的每個磁道被等分成若干個弧段,這些弧段便是磁盤的扇區,硬盤的讀寫以扇區為基本單位

扇區為數據存儲的最小單元,每個扇區可存儲128×2的N次方(N=0.1.2.3)字節的數據(一般為512B)

有了扇區(sector),有了柱面(cylinder),有了磁頭(head),顯然可以定位數據了,這就是數據定位(尋址)方式之一,CHS(也稱3D),對早期的磁盤非常有效,知道用哪個磁頭,讀取哪個柱面上的第幾扇區就OK了。CHS模式支持的硬盤容量有限,用8bit來存儲磁頭地址,用10bit來存儲柱面地址,用6bit來存儲扇區地址,而一個扇區共有512Byte,這樣使用CHS尋址一塊硬盤最大容量為256 * 1024 * 63 * 512B = 8064 MB(1MB = 1048576B)(若按1MB=1000000B來算就是8.4GB)

詳解硬盤內部結構及工作原理-零基礎也能看的懂

柱面號:磁道,確定磁頭的徑向方向。

扇區號:在磁道上的位置。也叫塊號。確定了數據在盤片圓圈上的位置。

頭標中還包括一個字段,其中有顯示扇區是否能可靠存儲數據,或者是否已發現某個故障因而不宜使用的標記。有些硬盤控制器在扇區頭標中還記錄有指示字,可在原扇區出錯時指引磁盤轉到替換扇區或磁道。最後,扇區頭標以循環冗餘校驗(CRC)值作為結束,以供控制器檢驗扇區頭標的讀出情況,確保準確無誤。

扇區的第二個主要部分是存儲數據的數據段,可分為數據和保護數據的糾錯碼(ECC)。在初始準備期間,計算機用512個虛擬信息字節(實際數據的存放地)和與這些虛擬信息字節相應的ECC數字填入這個部分。

5. 訪盤請求完成過程 :

確定磁盤地址(柱面號,磁頭號,扇區號),內存地址(源/目):

當需要從磁盤讀取數據時,系統會將數據邏輯地址傳給磁盤,磁盤的控制電路按照尋址邏輯將邏輯地址翻譯成物理地址,即確定要讀的數據在哪個磁道,哪個扇區。為了讀取這個扇區的數據,需要將磁頭放到這個扇區上方,為了實現這一點:

1、首先必須找到柱面,即磁頭需要移動對準相應磁道,這個過程叫做尋道,所耗費時間叫做尋道時間,

2、然後目標扇區旋轉到磁頭下,即磁盤旋轉將目標扇區旋轉到磁頭下。這個過程耗費的時間叫做旋轉時間。

即一次訪盤請求(讀/寫)完成過程由三個動作組成:

1、尋道(時間):磁頭移動定位到指定磁道

2、旋轉延遲(時間):等待指定扇區從磁頭下旋轉經過

3、數據傳輸(時間):數據在磁盤與內存之間的實際傳輸

因此在磁盤上讀取扇區數據(一塊數據)所需時間:

Ti/o=tseek +tla + n *twm

其中:

tseek 為尋道時間

tla為旋轉時間

twm 為傳輸時間

三: 硬盤的讀寫原理

詳解硬盤內部結構及工作原理-零基礎也能看的懂

所有的盤片都固定在一個旋轉軸上,這個軸即盤片主軸。而所有盤片之間是絕對平行的,在每個盤片的存儲面上都有一個磁頭,磁頭與盤片之間的距離比頭髮 絲的直徑還小。所有的磁頭連在一個磁頭控制器上,由磁頭控制器負責各個磁頭的運動。磁頭可沿盤片的半徑方向動作,(實際是斜切向運動),每個磁頭同一時刻也必須是同軸的,即從正上方向下看,所有磁頭任何時候都是重疊的(不過目前已經有多磁頭獨立技術,可不受此限制)。而盤片以每分鐘數千轉到上萬轉的速度在高速旋轉,這樣磁頭就能對盤片上的指定位置進行數據的讀寫操作。

磁頭靠近主軸接觸的表面,即線速度最小的地方,是一個特殊的區域,它不存放任何數據,稱為啟停區或著陸區(LandingZone),啟停區外就是數據區。在最外圈,離主軸最遠的地方是“0”磁道,硬盤數據的存放就是從最外圈開始的。那麼,磁頭是如何找到“0”磁道的位置的 呢?在硬盤中還有一個叫“0”磁道檢測器的構件,它是用來完成硬盤的初始定位。“0”磁道是如此的重要,以致很多硬盤僅僅因為“0”磁道損壞就報廢,這是 非常可惜的。

早期的硬盤在每次關機之前需要運行一個被稱為Parking的程序,其作用是讓磁頭回到啟停區。現代硬盤在設計上已摒棄了這個雖不復雜卻很讓人不愉快的小缺陷。硬盤不工作時,磁頭停留在啟停區,當需要從硬盤讀寫數據時,磁盤開始旋轉。旋轉速度達到額定的高速時,磁頭就會因盤片旋轉產生的氣流而抬起, 這時磁頭才向盤片存放數據的區域移動。

盤片旋轉產生的氣流相當強,足以使磁頭托起,並與盤面保持一個微小的距離。這個距離越小,磁頭讀寫數據的靈敏度就越高,當然對硬盤各部件的要求也越 高。早期設計的磁盤驅動器使磁頭保持在盤面上方几微米處飛行。稍後一些設計使磁頭在盤面上的飛行高度降到約0.1μm~0.5μm,現在的水平已經達到 0.005μm~0.01μm,這只是人類頭髮直徑的千分之一。

氣流既能使磁頭脫離開盤面,又能使它保持在離盤面足夠近的地方,非常緊密地跟隨著磁盤表面呈起伏運動,使磁頭飛行處於嚴格受控狀態。磁頭必須飛行在盤面上方,而不是接觸盤面,這種位置可避免擦傷磁性塗層,而更重要的是不讓磁性塗層損傷磁頭。

但是,磁頭也不能離盤面太遠,否則,就不能使盤面達到足夠強的磁化,難以讀出盤上的磁化翻轉(磁極轉換形式,是磁盤上實際記錄數據的方式)。

硬盤驅動器磁頭的飛行懸浮高度低、速度快,一旦有小的塵埃進入硬盤密封腔內,或者一旦磁頭與盤體發生碰撞,就可能造成數據丟失,形成壞塊,甚至造成 磁頭和盤體的損壞。所以,硬盤系統的密封一定要可靠,在非專業條件下絕對不能開啟硬盤密封腔,否則,灰塵進入後會加速硬盤的損壞。另外,硬盤驅動器磁頭的尋道伺服電機多采用音圈式旋轉或直線運動步進電機,在伺服跟蹤的調節下精確地跟蹤盤片的磁道,所以,硬盤工作時不要有衝擊碰撞,搬動時要小心輕放。

這種硬盤就是採用溫徹斯特(Winchester)技術製造的硬盤,所以也被稱為溫盤,目前絕大多數硬盤都採用此技術

統將文件存儲到磁盤上時,按柱面、磁頭、扇區的方式進行,即最先是第1磁道的第一磁頭下(也就是第1盤面的第一磁道)的所有扇區,然後,是同一柱面的下一磁頭,……,一個柱面存儲滿後就推進到下一個柱面,直到把文件內容全部寫入磁盤。

(文件的記錄在同一盤組上存放是,應先集中放在一個柱面上,然後再順序存放在相鄰的柱面上,對應同一柱面,則應該按盤面的次序順序存放。)(從上到下,然後從外到內。數據的讀/寫按柱面進行,而不按盤面進行,先)

系統也以相同的順序讀出數據。讀出數據時通過告訴磁盤控制器要讀出扇區所在的柱面號、磁頭號和扇區號(物理地址的三個組成部分)進行。磁盤控制器則 直接使磁頭部件步進到相應的柱面,選通相應的磁頭,等待要求的扇區移動到磁頭下。在扇區到來時,磁盤控制器讀出每個扇區的頭標,把這些頭標中的地址信息與期待檢出的磁頭和柱面號做比較(即尋道),然後,尋找要求的扇區號。待磁盤控制器找到該扇區頭標時,根據其任務是寫扇區還是讀扇區,來決定是轉換寫電路, 還是讀出數據和尾部記錄。找到扇區後,磁盤控制器必須在繼續尋找下一個扇區之前對該扇區的信息進行後處理。如果是讀數據,控制器計算此數據的ECC碼,然 後,把ECC碼與已記錄的ECC碼相比較。如果是寫數據,控制器計算出此數據的ECC碼,與數據一起存儲。在控制器對此扇區中的數據進行必要處理期間,磁 盤繼續旋轉。

5、局部性原理與磁盤預讀

由於存儲介質的特性,磁盤本身存取就比主存慢很多,再加上機械運動耗費,磁盤的存取速度往往是主存的幾百分分之一,因此為了提高效率,要儘量減少磁盤I/O。為了達到這個目的,磁盤往往不是嚴格按需讀取,而是每次都會預讀,即使只需要一個字節,磁盤也會從這個位置開始,順序向後讀取一定長度的數據放入內存。這樣做的理論依據是計算機科學中著名的局部性原理:

當一個數據被用到時,其附近的數據也通常會馬上被使用。

程序運行期間所需要的數據通常比較集中。

由於磁盤順序讀取的效率很高(不需要尋道時間,只需很少的旋轉時間),因此對於具有局部性的程序來說,預讀可以提高I/O效率。

預讀的長度一般為頁(page)的整倍數。頁是計算機管理存儲器的邏輯塊,硬件及操作系統往往將主存和磁盤存儲區分割為連續的大小相等的塊,每個存儲塊稱為一頁(在許多操作系統中,頁得大小通常為4k),主存和磁盤以頁為單位交換數據。當程序要讀取的數據不在主存中時,會觸發一個缺頁異常,此時系統會向磁盤發出讀盤信號,磁盤會找到數據的起始位置並向後連續讀取一頁或幾頁載入內存中,然後異常返回,程序繼續運行。

6、磁盤碎片的產生

俗話說一圖勝千言,先用一張ACSII碼圖來解釋為什麼會產生磁盤碎片。

詳解硬盤內部結構及工作原理-零基礎也能看的懂

上面的ASCII圖表示磁盤文件系統,由於目前上面沒有任何數據文件,所以我把他表示成0。

在圖的最上側和左側各有a-z 26個字母,這是用來定位每個數據字節的具體位置,如第1行1列是aa,26行26列是zz。

我們創建一個新文件,理所當然的,我們的文件系統就產生了變化,現在是如圖所示:”內容表”(TOC)佔據了前四行,在TOC裡存貯著每件文件在系統裡所在的位置。在上圖,TOC包括了一個名字叫hello.txt的文件,其具體內容是”Hello, world”

詳解硬盤內部結構及工作原理-零基礎也能看的懂

在系統裡的位置是ae到le。接下來再新建一個文件

如圖,我們新建的文件bye.txt緊貼著第一個文件hello.txt。

其實這是最理想的系統結構,如果你將你的文件都按照上圖所表示的那樣一個挨著一個,緊緊的貼放在一起的話,那麼讀取他們將會非常的容易和迅速,這是因為在硬盤裡動得最慢的(相對來說)就是傳動手臂,少位移一些,讀取文件數據的時間就會快一些。

然而恰恰這就是問題的所在。現在我想在”Hello, World”後加上些感嘆號來表達我強烈的感情,現在的問題是:在這樣的系統上,文件所在的行就沒有地方讓我放這些感嘆號了,因為bye.txt佔據了剩下的位置。

現在有倆個方法可以選擇,但是沒有一個是完美的

1.我們從原位置刪除文件,重新建個文件重新寫上”Hello, World!!”. –這就無意中延長了文件系統的讀和寫的時間。

2.打碎文件,就是在別的空的地方寫上感嘆號,也就是”身首異處”–這個點子不錯,速度很快,而且方便,但是,這就同時意味著大大的減慢了讀取下一個新文件的時間。

如果你對上面的文字沒概念,上圖

詳解硬盤內部結構及工作原理-零基礎也能看的懂

這裡所說的方法二就像是我們的windows系統的存儲方式,每個文件都是緊挨著的,但如果其中某個文件要更改的話,那麼就意味著接下來的數據將會被放在磁盤其他的空餘的地方。

如果這個文件被刪除了,那麼就會在系統中留下空格,久而久之,我們的文件系統就會變得支離破碎,碎片就是這麼產生的


分享到:


相關文章: