硬碟的物理磁頭數量和邏輯磁頭編號

2021-05-23 10:40:07 字數 2265 閱讀 2241

【問題】

在解釋物理磁頭和邏輯磁頭之前,先列舉這樣一組資料:

cylinders          heads           sectors

2491                255               63

硬碟的容量=2491x255x63x512=19.08g

上面的引數是從乙個金鑽20g硬碟上得到的。很明顯它的柱面數是2491,磁頭數是255,每個磁軌上的扇區數為63。誤會由此開始了,如果我們對硬碟的物理結構不了解,我們會認為這個硬碟有255個磁頭。可是仔細想一下,便會發現它不成立。

一張單面的碟片需要乙個磁頭,雙面的碟片則需要兩個磁頭,假如全部都是雙面碟片,255個磁頭至少擁有128張碟片,而128張碟片疊起來的厚度比乙個硬碟要厚的多,這還沒有考慮碟片之間的間隙。

其實我們在bios中看到的硬碟的引數只是乙個邏輯值現在的硬碟大部分都是單碟,單磁頭。拿金鑽九代80g來說,就是單碟的。也就是說它只有乙個磁頭。

可是為什麼我們用測試軟體檢測的時候會顯示255個磁頭呢?答案要從很多年前說起了。

【推薦文章】

1)細說ide硬碟的容量限制

由於bios和硬碟介面規範(ata)對硬碟容量的限制而引起的硬碟識別問題,在歷史上出現過許多次,其中比較有名的有以下5個:

☆事件1:「504mb限制」

第1次容量限制大約出現在2023年,即著名的「504mb限制」。硬碟的識別受兩方面影響,一是bios中的int 13h(硬碟讀寫中斷,後面把它看作一種規範,便於理解和表述),另乙個是ata(ide)暫存器組的各個引數——chs(cylinder、h、sector,即柱面、磁頭和扇區)。這些限制類似「木桶效應」,只有它們都能認同的引數,最後才能得到確認。

限制型別 柱面 磁頭 扇區 總位數

int 13h 1024(10位) 256(8位) 64(6位) 24位

ata 65536(16位) 16(4位) 256(8位) 28位

int 13h限制硬碟可供儲存資料的最大柱面數、最大扇區數分別為1024和63;與此同時,ata最大磁頭數為16,兩類限制相疊加後所出現的容量限制就是1024×16×63×512(每扇區的位元組數)/1024×1024=504mb,那個時候估計很少有人能想像到,我們現在會擁有上百gb的硬碟空間吧。

解決辦法:

如果你還擁有如此古老的主機板,恭喜你!它的紀念意義遠超過使用價值,還是封存起來吧,我想你也不會把100gb的硬碟裝在它身上。

),向大家詳細講解如何讓你的硬碟爆發最大功效(maxblast,名字取得很貼切呀)。

對於那種bios能識別、但使用不正常的情況,可嘗試把硬碟先接到其他電腦上進行分割槽(分割槽大小不可超過bios可辨識範圍),然後在本機上安裝作業系統的「曲線救國」方式,成功機率也非常大。

如果還是無法正常使用,上面提及的「32gb」限制跳線就是最後的救命稻草,前提是主機板可辨認32gb的「小」硬碟(2023年前後出廠的主機板應該沒問題),操作步驟如下:在其他電腦上先分好區,每個分割槽容量不得大於32gb,按「32gb」方式進行跳線,然後安裝windows 2000/xp,作業系統可自己識別出全部的硬碟空間;雖然bios只把硬碟當作32gb的,但無關緊要,並不影響使用。

☆事件5:

隨著新的「恐龍級」硬碟的出現(比如威騰電子推出的250gb產品),另乙個bios瓶頸已來臨:目前的28位ata規範將硬碟最大容量限制為65536×16×255×512/1024×1024=131gb,按硬碟廠商的演算法就是137gb,這個限制已開始影響部分新使用者了。

解決辦法:

新的ata標準早已出台,48位的ata規範為未來的大容量硬碟鋪平了道路,由微軟、康柏和邁拓聯合支援的big drives規範,支援容量高達144 155 188gb的硬碟(數一數,看有多少位數字,不知夠不夠我們用到下個世紀)。不過受目前32bit作業系統影響,目前的系統暫時只能支援到2200gb。大多數新主機板都支援這一規範,以下是部分支援這一規範的南橋晶元:intel ich/ich2/ich4/ich5、via vt8233a/8235及以後、sis 961及以後等,採用這些南橋晶元的主機板,只要重新整理bios就可完美支援big drives。

硬碟的物理扇區

1980s早期,把硬碟的物理扇區製作成512位元組成為主流標準 1956年硬碟發明的時候扇區容積更小 1998年,nsic提出使用更大容積的物理扇區,因為傳統的512位元組的扇區標準對日益增長的磁碟密度已經是限制了 隨之而來的是advanced format.第一代advanced format選用...

Delphi讀取硬碟的物理序列號

因要用到硬碟的物理序列號,從網上找了很多,最終確定使用了以下的一段程式 function tfrmmain.getideserialnumber pchar stdcall const identify buffer size 512 type tideregs packed record bfea...

DELPHI中讀取硬碟的物理序列號

讀取硬碟的物理序列號 獲得硬碟序列號 function getideserialnumber pchar stdcall const identify buffer size 512 type tideregs packed record bfeaturesreg byte used for spe...