什么是CHS尋址,硬盤的尋址方式
什么是CHS尋址
很久以前, 硬盤的容量還非常小的時(shí)候,人們采用與軟盤類似的結(jié)構(gòu)生產(chǎn)硬盤。也就是硬盤盤片的每一條磁道都具有相同的扇區(qū)數(shù)。由此產(chǎn)生了所謂的CSH 3D參數(shù) (Disk Geometry)。即磁頭數(shù)(Heads),柱面數(shù)(Cylinders),扇區(qū)數(shù)(Sectors),以及相應(yīng)CHS尋址方式。
CHS尋址模式將硬盤劃分為磁頭(Heads)、柱面(Cylinder)、扇區(qū)(Sector)。
磁頭(Heads):每張磁片的正反兩面各有一個(gè)磁頭,一個(gè)磁頭對(duì)應(yīng)一張磁片的一個(gè)面。因此,用第幾磁 頭就可以表示數(shù)據(jù)在哪個(gè)磁面。
柱面(Cylinder):所有磁片中半徑相同的同心磁道構(gòu)成“柱面",意思是這一系列的磁道垂直疊在一起,就形成一個(gè)柱面的形狀。簡單地理解,柱面數(shù)=磁道數(shù)。
扇區(qū)(Sector):將磁道劃分為若干個(gè)小的區(qū)段,就是扇區(qū)。雖然很小,但實(shí)際是一個(gè)扇子的形狀,故稱為扇區(qū)。每個(gè)扇區(qū)的容量為512字節(jié)。
下面的圖可能能更好的幫助理解:
CHS尋址的最大容量
CHS尋址方式的容量由CHS三個(gè)參數(shù)決定:
磁頭數(shù)最大為255 (用 8 個(gè)二進(jìn)制位存儲(chǔ))。從0開始編號(hào)。
柱面數(shù)最大為1023(用 10 個(gè)二進(jìn)制位存儲(chǔ))。從0開始編號(hào)。
扇區(qū)數(shù)最大數(shù) 63(用 6個(gè)二進(jìn)制位存儲(chǔ))。從1始編號(hào)。
所以CHS尋址方式的最大尋址范圍為:
255 * 1023 * 63 * 512 / 1048576 = 7.837 GB ( 1M =1048576 Bytes )
或硬盤廠商常用的單位:
255 * 1023 * 63 * 512 / 1000000 = 8.414 GB ( 1M =1000000 Bytes )
CHS尋址的缺點(diǎn)
顯然,由于要求每個(gè)磁道的扇區(qū)數(shù)相等,而外道的周長要大于內(nèi)道,所以外道的記錄密度要遠(yuǎn)低于內(nèi)道,不僅造成了硬盤空間的浪費(fèi),也限制了硬盤的容量。為了解決這一問題,進(jìn)一步提高硬盤容量,人們改用等密度結(jié)構(gòu)生產(chǎn)硬盤。也就是說,外圈磁道的扇區(qū)比內(nèi)圈磁道多,采用這種結(jié)構(gòu)后,硬盤不再具有實(shí)際的CHS參數(shù),尋址方式也改為線性尋址,即以扇區(qū)為單位進(jìn)行尋址。
但一些古老的軟件仍然使用CHS尋址方式(如使用BIOSInt13H接口的軟件),為了兼容這樣的程序,在硬盤控制器內(nèi)部安裝了一個(gè)地址翻譯器,可以通過它將老式CHS參數(shù)翻譯成新的線性參數(shù)。
?
LBA(Logical Block Addressing)邏輯塊尋址模式。在 LBA 模式下,我們知道硬盤上的一個(gè)數(shù)據(jù)區(qū)域由它所在的磁頭、柱面(也就是磁道)和扇區(qū)所唯一確定。早期系統(tǒng)就是直接使用磁頭柱面和扇區(qū)來對(duì)硬盤進(jìn)行尋址(這稱 為CHS尋址),這需要分別存儲(chǔ)每個(gè)區(qū)域的三個(gè)參數(shù)(這稱為3D參數(shù)),使用時(shí)再分別讀取三個(gè)參數(shù),然后在送到磁盤控制器去執(zhí)行。由于系統(tǒng)用8b來存儲(chǔ)磁 頭地址,用10b來存儲(chǔ)柱面地址,用6b來存儲(chǔ)扇區(qū)地址,而一個(gè)扇區(qū)共有512B,這樣使用CHS尋址一塊硬盤最大容量為256 * 1024 * 63 * 512B = 8064 MB(1MB = 1048576B)(若按1MB=1000000B來算就是8.4GB)。隨著硬盤技術(shù)的進(jìn)步,硬盤容量越來越大,CHS模式無法管理超過8064 MB的硬盤,因此工程師們發(fā)明了更加簡便的LBA尋址方式。在LBA地址中,地址不再表示實(shí)際硬盤的實(shí)際物理地址(柱面、磁頭和扇區(qū))。LBA編址方式將 CHS這種三維尋址方式轉(zhuǎn)變?yōu)橐痪S的線性尋址,它把硬盤所有的物理扇區(qū)的C/H/S編號(hào)通過一定的規(guī)則轉(zhuǎn)變?yōu)橐痪€性的編號(hào),系統(tǒng)效率得到大大提高,避免了 煩瑣的磁頭/柱面/扇區(qū)的尋址方式。在訪問硬盤時(shí),由硬盤控制器再這種邏輯地址轉(zhuǎn)換為實(shí)際硬盤的物理地址。
LARGE 大硬盤模式,在硬盤的柱面超過 1024 而又不為 LBA 支持時(shí)采用。LARGE 模式采用的方法是把柱面數(shù)除以 2,把磁頭數(shù)乘以 2,其結(jié)果總?cè)萘坎蛔儭?/p>
在這三種硬盤模式中,現(xiàn)在 LBA 模式使用最多。
LBA與C/H/S 之間的轉(zhuǎn)換:
設(shè)NS為每磁道扇區(qū)數(shù),NH為磁頭數(shù),C、H、S分別表示磁盤的柱面、磁頭和扇區(qū)編號(hào),LBA表示邏輯扇區(qū)號(hào),div為整除計(jì)算,mod為求余計(jì)算,則:
LBA=NH×NS×C+NS×H+S-1;
C=(LBA div NS)div NH;
H=(LBA div NS)mod NH;
S=(LBA mod NS)+1
例如 LBA = 0 則 CHS = 0/0/1
從C/H/S到LBA的計(jì)算公式:
LBA=(C-CS)*PH*PS+(H-HS)*PS+(S-SS)