1. 程式人生 > >【轉】硬碟CHS模式與LBA模式

【轉】硬碟CHS模式與LBA模式

硬碟的chs模式是指chs(Cylinder/Head/Sector)模式,很久以前, 硬碟的容量還非常小的時候, 人們採用與軟盤類似的結構生產硬碟. 也就是硬碟碟片的每一條磁軌都具有相同的扇區數. 由此產生了所謂的3D引數 (Disk Geometry). 既磁頭數(Heads), 柱面數(Cylinders), 扇區數(Sectors per track),以及相應的定址方式.
其中: 磁頭數(Heads) 表示硬碟總共有幾個磁頭,也就是有幾面盤片, 最大為 256 (用 8 個二進位制位儲存);柱面數(Cylinders) 表示硬碟每一面碟片上有幾條磁軌, 最大為 1024(用 10 個二進位制位儲存); 扇區數(Sectors per track) 表示每一條磁軌上有幾個扇區, 最大為63 (用 6 個二進位制位儲存). 每個扇區一般是 512個位元組, 理論上講這不是必須的, 但好象沒有取別的值的. 所以磁碟最大容量為: 256 * 1024 * 63 * 512 / 1048576 = 8064 MB ( 1M = 1048576 Bytes)或硬碟廠商常用的單位:256 * 1024 * 63 * 512 / 1000000 = 8455 MB ( 1M = 1000000 Bytes )在 CHS 定址方式中, 磁頭, 柱面, 扇區的取值範圍分別為 0 到 Heads-1,0 到 Cylinders-1, 1 到 Sectors per track (注意是從 1 開始).在 CHS 定址方式中, 有以下幾種尺寸單位:扇區 (Sector) = 512 位元組 (一般情況下)磁軌 (Track) = (Sectors per track) 扇區
柱面 (Cylinder)= (Sectors per track) * Heads 扇區
這種方式會浪費很多磁碟空間 (與軟盤一樣). 為了解決這一問題, 進一步提高硬碟容量, 人們改用等密度結構生產硬碟. 也就是說,
外圈磁軌的扇區比內圈磁軌多. 採用這種結構後, 硬碟不再具有實際的3D引數, 定址方式也改為線性定址, 即以扇區為單位進行定址.
為了與使用3D定址的老軟體相容 (如使用BIOS Int13H介面的軟體), 在硬碟控制器內部安裝了一個地址翻譯器, 由它負責將老式3D引數翻譯成新的線性引數. 這也是為什麼現在硬碟的3D引數可以有多種選擇的原因 (不同的工作模式, 對應不同的3D引數,如 LBA, LARGE, NORMAL). CHS模式只能識別大硬碟的前面8G.lba使用的線性定址,突破了1024柱面的限制,能訪問8G以外的空間了。

==================================================================
硬碟的每個碟片都有兩個盤面(Side),即上、下盤盤面,安照順序從上至下從“0”開始依次編號。磁碟在格式化時被劃分成許多同心圓,這些同心圓軌跡叫磁軌(Track)。磁軌從外向內從0開始順序編號。所有盤面上的同一磁軌構成的一個圓柱,通常稱做柱面(Cylinder),每個柱面上的磁頭由上而下從“0”開始編號。 作業系統以扇區(Sector)形式將資訊儲存在硬碟上,每個扇區包括512個位元組的資料和一些其他資訊。 這些通常用來表示硬碟的實體地址,現在隨著硬碟容量增大我們用邏輯地址即線性地址(LBA)。因此我們需要了解CHS與LBA之間的轉換。 C/H/S與LBA地址的對應關係: 從CHS到LBA 假設用C表示當前柱面號,H表示當前磁頭號,Cs表示起始柱面號,Hs表示起始磁頭號,Ss表示起始扇區號,PS表示每磁軌有多少個扇區,PH表示每柱面有多少個磁軌,則有以下對應關係: LBA=(C-Cs)*PH*PS+(H-Hs)*PS+(S-Ss)

一般情況下,CS=0、HS=0、SS=1;PS=63、PH=255

那麼以下可以根據公司計算,如下:

C/H/S=0/0/1,代入上述公式中得到LBA=0

C/H/S=0/0/63,代入上述公式中得到LBA=62

C/H/S=1/0/1,代入上述公式中得到LBA=63

C/H/S=220/156/18,代入上述公式中得到LBA=3544145 從LBA到CHS 在這裡先介紹兩種運算DIV和MOD。DIV做整除運算,即被除數除以除數所得的商的整數部分;比如5 DIV 3=1,33 DIV 6=5。

MOD是餘運算,MOD運算則取商的餘數;比如:5 MOD 3=2,33 MOD 6=3。

DIV和MOD是一對搭檔,一個取整一個取餘。各個變數按照上面的進行假設,那麼有:

C=LBA DIV (PH*PS) + Cs

H=(LBA DIV PS) MOD PH + Hs

S=LBA MOD PS + Ss 假如上述不用MOD運算,只用DIV運算可以如下:

C= LBA DIV (PH*PS) + Cs

H=LBA DIV PS –(C-Cs) * Ps + Ss

S=LBA- (C-Cs) * PH * PS - (H-Hs) * PS + Ss 那麼按照這個規律則有:

LBA=0,相應地C/H/S=0/0/1

LBA=62,相應地C/H/S=0/0/63

LBA=63,相應地C/H/S=1/0/1

LBA=62,相應地C/H/S=0/0/63

LBA=3544145,相應地C/H/S=220/156/18, 通過以上轉換,大家對CHS與LBA之間的轉換有一定的瞭解了