摘要:硬盤組織和存儲結構的知識對于了解硬盤中數據的組織與存儲,對于硬盤中數據的維護與修復,都很重要。
關鍵詞:計算機:硬盤;存儲結構
一、硬盤存儲器概述
從1957年IBM公司研制成功第一臺真正意義上的硬盤存儲器到風在,在這短短的幾十年時間里,硬盤逐漸成為電腦不可缺少的外部存儲設備,被廣泛應用。硬盤的容量成千上萬倍地增長,從當初的數十MB發(fā)展到現在的數百GB,甚至達TB量級。硬盤容量的大幅度增加,其尋址模式也隨之不斷變化。最早采用的是C/H/S(Cylinder/Head/Sector)尋址模式,它依據磁頭數(Heads)、柱面數(Cylinders)和扇區(qū)數(Sectors)構成的絕對地址來尋址的,也稱為物理磁盤地址。通常DOS將“柱面/磁頭/扇區(qū)”這樣表示法稱為“絕對扇區(qū)”表示法,但DOS不能直接使用絕對扇區(qū)進行磁盤上的信息管理,而是用所謂“相對扇區(qū)”或“DOS扇區(qū)”——即按扇區(qū)號,磁頭號,柱面號(磁道號)增長的順序連續(xù)地分配DOS扇區(qū)號。
在早期的硬盤中,由于每個磁道的扇區(qū)數相等,外磁道的記錄密度遠低于內磁道,因此造成很多磁盤空間的浪費。為了解決這一問題,人們改用等密度結構,即外圈磁道的扇區(qū)比內圈磁道多。此種結構的硬盤不再具有實際的3D參數,尋址方式也改為以扇區(qū)為單位的線性尋址,這種尋址模式便是LBA(Logic Block Address,邏輯塊地址)。在這種模式下,硬盤的物理地址與邏輯地址的轉換問題有一定必要性和復雜性,本文對此進行討論,希望對感興趣的讀者有所幫助。
二、硬盤的物理地址與邏輯地址的互相轉換過程
所謂邏輯扇區(qū)是物理扇區(qū)的一組連續(xù)數字的編號,操作系統(tǒng)采用的一種扇區(qū)編號方式。其編號是從0開始到某個最大值方式排列。并連成一條線。使用邏輯扇區(qū)主要有以下兩個優(yōu)點:第一,邏輯扇區(qū)的概念使硬盤的讀寫操作脫離了柱面、磁頭和扇區(qū)的硬件參數;第二,在硬盤中每一定數目的扇區(qū)組成了數據文件的最小單位——簇,在對一個具體的簇進行讀寫操作時。操作系統(tǒng)劃分一個一維的邏輯扇區(qū)號要比使用三維物理扇區(qū)號簡單得多,如果—個簇的扇區(qū)跨越在兩個盤片,則使用“柱面、磁頭和扇區(qū)”的表示方法就更加復雜了。那么硬盤的物理地址和邏輯地址是如何轉換的呢?下面具體介紹其相互轉換方法。
1.硬盤物理地址轉換為邏輯地址
首先來了解一下從C/H/S到LBA線性地址的轉換規(guī)則。為了與使用C/H/S尋址的老軟件兼容,于是在硬盤控制器內部安裝了一個地址翻譯器,它負責將C/H/S參數翻譯成LBA地址。同時,由于系統(tǒng)在寫人數據時是按照從柱面到柱面的方式,當上一個柱面寫滿數據后才移動磁頭到下一個柱面,而且是從柱面的第一個磁頭的第一個扇區(qū)開始寫入,從而使磁盤性能最優(yōu)。那么在對物理扇區(qū)進行線性編址時,也是按照這種方式進行。即把第一柱面(0柱)第一磁頭(0面)的第一扇區(qū)(1扇區(qū))編為邏輯“0”扇區(qū),把第一柱面(0柱)第一磁頭(0)面的第二扇區(qū)(2扇區(qū))編為邏輯“1”扇區(qū),直至第一柱面(0柱)第一磁頭(0面)的第63扇區(qū)(63扇區(qū))編為邏輯“62”扇區(qū),然后將磁頭轉到第一柱面(0柱)第二磁頭(1面)的第一扇區(qū)(1扇區(qū)),接著上面其對應的邏輯編號為第“63”扇區(qū),0柱面所有扇區(qū)編號完畢后才轉到1柱面的0磁頭1扇區(qū),依次向下進行,直到將所有的扇區(qū)都編上號。我們需要注意的是,物理扇區(qū)C/H/S中的扇區(qū)編號是從“1”至“63”,而邏輯扇區(qū)LBA方式下扇區(qū)是從“0”開始編號,所有扇區(qū)編號按順序進行。
在此轉換過程中,我們必須要知道的物理量有:
Cl-起始扇區(qū)的柱面號
Hl-起始扇區(qū)的磁頭號
sl-起始扇區(qū)的扇區(qū)號
NS-每磁道的扇區(qū)數
NH-硬盤每柱面磁道數
C、H、S表示硬盤當前的柱面號、磁頭號和扇區(qū)號,則計算柱而C、磁頭H、扇區(qū)S對應的相對邏輯扇區(qū)號RS的公式為:
邏輯扇區(qū)BS=NH×NS×(C-Cl)+NS×(H-Hl)+(S-Sl),為驗證此公式,下面我們來舉個例子。
實例:已知有一個4磁頭(硬盤每柱面的磁道數為4),每磁道有17個扇區(qū)的硬盤,其中有一個邏輯硬盤D,它的第一個扇區(qū)在硬盤的柱面號為120,磁頭號為1,扇區(qū)號為1的位置,則計算柱面號為160,磁頭號為3,扇區(qū)號為6的邏輯扇區(qū)號RS是多少?
分析:根據前面的說明,已知條件有:C1=120,Hl=1,Sl=1,NS=17,NH=4,C=160,H=3,S=6,則代入上面公式可得到邏輯扇區(qū)號RS=4×17×(160-120)+17×(3-1)+(6-1)=2759,即硬盤柱面號為160,磁頭號為3,扇區(qū)號為6的邏輯扇區(qū)號為2759。
2.硬盤邏輯地址轉換為物理地址
在對硬盤進行故障維護或者進行相關軟件開發(fā)時,不僅需要將硬盤的物理地址轉換成邏輯地址,有時還需要知道邏輯地址轉換為物理地整理提供址的方法。
根據計算機中符號的常用法則,我們用“div”表示除法運算,用“mod”表示取余數運算,其他參數如C、H、S依然表示硬盤當前的柱面、磁頭和扇區(qū)號,Cl、Hl、Sl、NS和NH含義也和上面一致。在已知硬盤邏輯地址即邏輯扇區(qū)號LS的情況下,求硬盤對應的物理地址的柱面號c、磁頭號H和扇區(qū)號s的方法如下:
C=((Ls div NS)div NH)+Cl
H=((LS div NS)mod
NH)+
Hl
S=(Ls mod NH)+
Sl
實例:設硬盤的磁頭號為4,每磁道17個扇區(qū),其中邏輯硬盤D的第一個扇區(qū)在硬盤的柱面120、磁頭1、扇區(qū)1上,求邏輯D盤上邏輯扇區(qū)為2757編號對應的物理地址是多少?
分析:根據上面的已知條件,我們可知Cl=120,H1=1,S=1,NS=17,NH=4,Ls=2757,則將這些數據代入上面的公式可得:
C=((2757 div 17)div 4)+120=160
H=((2757 div 17)mod 4)+1=3
S=(2757 mod 17)+1=4
即邏輯扇區(qū)號Ls為2757的硬盤對應的物理地址為柱面號是160、磁頭號是3和扇區(qū)號為4。
以上是本人的一些教學經驗總結,有可能還存在一些不完善的地方。我深知,關于硬盤的這一塊知識還有很多有待于我們去進一步地探索和積累,所以希望大家對于以上的內容提出寶貴的意見,以更好地促進我們的教學。
參考文獻:
[1]張鐘澍.大容量硬盤修復技術及數據管理.電子科技大學出版社,2008.
[2]范國渠.計算機組裝與維護.北京:北京交通大學出版社,2008.
[3]杜樹杰.計算機組裝與維護.北京:中國鐵道出版社.www.51lunwen.com,2009.
[4]林俊豪,劉丹.DIY硬盤管理/數據備份/系統(tǒng)恢復.人民郵電出版社,2008.
(作者單位 吉林女子學校)