A. 硬碟讀寫有哪幾種方式
對電腦老「鳥」而言,對這種硬碟分區格式是最熟悉不過了,我們大都是通過這種分區格式認識和踏入電腦門檻的。它採用16位的文件分配表,能支持的最大分區為2gb,是目前應用最為廣泛和獲得操作系統支持最多的一種磁碟分區格式,幾乎所有的操作系統都支持這一種格式,從dos、win 3.x、win 95、win 97到現在的win 98、windows nt、win 2000,甚至火爆一時的linux都支持這種分區格式。
但是FAT16分區格式有一個最大的缺點,那就是硬碟的實際利用效率低。因為在dos和windows系統中,磁碟文件的分配是以簇為單位的,一個簇只分配給一個文件使用,不管這個文件佔用整個簇容量的多少。而且每簇的大小由硬碟分區的大小來決定,分區越大,簇就越大。例如1gb的硬碟若只分一個區,那麼簇的大小是32kb,也就是說,即使一個文件只有1位元組長,存儲時也要佔32kb的硬碟空間,剩餘的空間便全部閑置在那裡,這樣就導致了磁碟空間的極大浪費。FAT16支持的分區越大,磁碟上每個簇的容量也越大,造成的浪費也越大。所以隨著當前主流硬碟的容量越來越大,這種缺點變得越來越突出。為了克服FAT16的這個弱點,微軟公司在win 97操作系統中推出了一種全新的磁碟分區格式FAT32。
FAT32
對於win 98廣泛流行的今天,廣大電腦愛好者對這種分區格式也並不陌生。這種格式採用32位的文件分配表,使其對磁碟的管理能力大大增強,突破了FAT16對每一個分區的容量只有2gb的限制,運用FAT32的分區格式後,用戶可以將一個大硬碟定義成一個分區,而不必分為幾個分區使用,大大方便了對硬碟的管理工作。而且,FAT32還具有一個最大的優點是:在一個不超過8gb的分區中,FAT32分區格式的每個簇容量都固定為4kb,與FAT16相比,可以大大地減少硬碟空間的浪費,提高了硬碟利用效率。
目前,支持這一磁碟分區格式的操作系統有win 97、win 98和win 2000。但是,這種分區格式也有它的缺點,首先是採用FAT32格式分區的磁碟,由於文件分配表的擴大,運行速度比採用FAT16格式分區的硬碟要慢;另外,由於dos系統和某些早期的應用軟體不支持這種分區格式,所以採用這種分區格式後,就無法再使用老的dos操作系統和某些舊的應用軟體了。
NTFS
NTFS分區格式是一般電腦用戶感到陌生的,它是網路操作系統windows nt的硬碟分區格式,使用windows nt的用戶必須同這種分區格式打交道。其顯著的優點是安全性和穩定性極其出色,在使用中不易產生文件碎片,對硬碟的空間利用及軟體的運行速度都有好處。它能對用戶的操作進行記錄,通過對用戶許可權進行非常嚴格的限制,使每個用戶只能按照系統賦予的許可權進行操作,充分保護了網路系統與數據的安全。但是,目前支持這種分區格式的操作系統不多,除了windows nt外,剛剛上市的win 2000也支持這種硬碟分區格式。
不過與windows nt不同的是,win 2000使用的是NTFS 5.0分區格式。NTFS 5.0 的新特性有「磁碟限額」管理員可以限制磁碟使用者能使用的硬碟空間;「加密」在從磁碟讀取和寫入文件時,可以自動加密和解密文件數據等。隨著 win 2000的普及,廣大電腦用戶會逐漸熟悉這種分區格式的。
linux
linux操作系統是去年it媒體炒得最為火爆的操作系統。由於該系統為自由軟體,幾乎不用花錢就能裝入電腦,所以贏得了許多用戶。它的磁碟分區格式與其他操作系統完全不同,共有兩種格式:一種是linux native主分區,一種是linux swap交換分區。這兩種分區格式的安全性與穩定性極佳,結合linux操作系統後,死機的機會大大減少,能讓我們擺脫windows常常崩潰的噩夢。但是,目前支持這一分區格式的操作系統只有linux,對linux系統不感興趣的用戶也只能望洋興嘆了。
通過以上的介紹,我想你一定對常見的硬碟的分區格式有所了解了。那麼,趕快根據你所需要安裝的操作系統,給你的硬碟確定分區格式吧。
B. 硬碟的工作模式有幾種,區別是什麼!
盤容量目前早已遠遠超過了當年8.4GB的極限,為了超越這個容量限制,人們又定義了新的擴展INT 13 。新的INT 13 不使用操作系統的寄存器傳遞硬碟的定址參數,它使用存儲在操作系統內存里 的地址包。地址包里保存的是64位LBA地址,如果硬碟支持LBA定址,就把低28位直接傳遞給ATA介面,如果不支持,操作系統就先把LBA地址轉換為CHS地址,再傳遞給ATA介面。通過這種方式,在ATA匯流排基礎上CHS定址最大容量是136.9GB,而LBA 定址最大容量是137.4GB。
1957年IBM公司研製成功的IBM 350(RAMAC)是第一台真正意義上的硬碟存儲器,之後經歷了漫長的技術革新,於80年代初期引入PC(個人電腦),當時的容量僅為20-40M,而經過10幾年的發展,硬碟的容量逐步提高,而當時一些設計上的失誤就造成了今天可能出現的硬碟容量限制問題。(容量限制問題:就是系統無法完全識別或正常使用超過一定容量的硬碟)
容量限制問題的成因
要明白這個原因我們需要對IDE介面硬碟的工作方式做一個介紹,即使到現在我們今天的IDE硬碟驅動依舊使用早先的DOS-BIOS(磁碟操作系統-基本輸入/輸出系統)的分層結構上。它的基本工作模式就是:程序調用->DOS功能調用->文件管理設備->INT 13中斷管理(讀/寫)->BIOS磁碟服務->IDE(ATA)界面->磁碟控制器,也就是說我們如果需要對硬碟進行操作必須通過以上的一系列步驟才能完成,那麼我們以下一起來看看這一系列步驟的作用。
文件管理設備:其負責文件及其在磁碟上存儲位置之間的映射關系,不過需要通過磁碟讀寫中斷INT13執行讀寫命令來存儲、調入文件。當新文件被保存時,文件管理器決定它在當前目錄里的存儲位置,在文件分配表中為這個新文件添加文件目錄項,並把文件寫入磁碟。當讀文件時,文件管理器在FAT中找到文件在磁碟上的位置,接著就調入文件。
IDE(ATA) 界面:在介紹IDE(ATA)界面前,簡單說說硬碟的結構:硬碟分為一定數量的柱面(以硬碟中心為圓心的同心圓磁跡),每個柱面都需要磁頭來讀寫數據。另外,硬碟上的數據都是以每扇區512位元組的格式存儲的,所有的數據傳輸都是以扇區(柱面被等分的園弧磁跡)為單位的。IDE(ATA)界面是寄存器驅動式的並口匯流排。要傳輸數據,BIOS首先往IDE(ATA)里特定的寄存器寫入數據的開始地址和數據傳輸的長度,再把有關的讀/寫命令往特定的寄存器里發送從而開始數據傳輸。
現在的硬碟一般都支持邏輯塊定址(LBA)和柱面磁頭扇區定址(CHS),我們以CHS定址方式來舉例:數據傳輸的開始地址是寫到4個8位寄存器里的,分別是:
柱面低位寄存器
柱面高位寄存器
扇區寄存器
設備/磁頭寄存器
因此,柱面地址是16位[柱面低位寄存器(8位),柱面高位寄存器(8位)]。扇區地址是8位(注意:扇區寄存器里第一個扇區是1扇區,而不是0扇區)。而磁頭地址是4位(沒有完全佔用8位)。因此,硬碟柱面的最大數是65,536(2的16次方),磁頭的最大數是16(2的4次方),扇區的最大數是255(2的8次方-1,注意剛剛我們提到的扇區寄存器問題)。所以,能定址的最大扇區數是267,386,880 (65,536x16x255)。一扇區又是512位元組,也就是說如果以CHS定址方式,IDE硬碟的最大容量為136.9GB。LBA定址方式,上述的總共28位可用的寄存器空間(16+8+4)被看作一個完整的LBA地址,因為包括位0(CHS里扇區不能從0開始計算),其能定址的扇區數是268,435,456 (65,536x16x256),這時IDE硬碟的最大容量為137.4GB。
INT 13管理:INT 13管理其實也是按照寄存器的模式來設計的,它的高層即文件管理器層發布數據讀寫命令和有關的參數給CPU,然後觸發INT 13中斷的進行,激活BIOS的磁碟服務來執行數據傳輸。數據的開始地址被寫到3個8位寄存器里,分別是:
柱面低位寄存器
柱面高位/扇區寄存器
磁頭寄存器
柱面地址是10位(柱面低位寄存器佔用8位、柱面高位寄存器佔用2位),扇區地址為6位(8位-已經被計算過的高位寄存器的2位)。磁頭寄存器為8位。因此如果這樣的話:柱面的最大數是1024(2的10次方) ,磁頭的最大數是256(2的8次方),扇區的最大數是63(2的6次方-1)。所以,通過INT 13管理能定址的扇區數是16,515,072 (1,024x256x63)。一扇區是512位元組,也就是說如果以CHS定址方式,IDE硬碟的最大容量為8.456GB。LBA定址方式能定址的扇區數是16,777,216(1024x256x64),這時IDE硬碟的最大容量為8.601GB。
看到這里,我們應該感到硬碟容量限制的成因有了一些「眉目」了吧,那麼我們具體來到底是什麼讓硬碟出現了所謂的限制:
1.528MB的容量限制:
由於早先的硬碟容量比較小,因此設計的BIOS的時候當把地址從Int 13的地址寄存器轉換為IDE(ATA)的地址寄存器時,僅僅把INT 13管理中10位的柱面地址用來對應IDE(ATA)界面中的16位柱面寄存器,而把沒有用到的6位(高位寄存器)地址都設定為0。並且也僅把6位的扇區地址來對應IDE(ATA)界面的8位扇區寄存器,其中沒有用到的2位設置為0。並且INT 13管理的磁頭寄存器4位(又去掉了4位)來對應IDE(ATA)。因此,此時的磁碟柱面最大數為1024(2的10次方),磁頭的最大數是16(2的4次方),扇區的最大數是63(2的6次方-1)。因此能定址的扇區數就成了1,032,192(1,024x16x63)。一個扇區的容量是512位元組,也就是說如果以CHS定址方式,IDE硬碟的最大容量為528.4MB。因此528MB的硬碟容量限制就出現了。
2.1GB的容量限制:
這里分為兩個部分,一部分是由磁碟服務的限製造成的,另外一個是由於磁碟格式造成的,通常我們把前者稱為2.1GB的硬體容量限制,後一種稱為2.1GB的軟體容量限制。
硬體容量硬體
當時,為了528MB容量限制的問題,人們提出一些不同的辦法,其中一個辦法就是INT 13服務的磁頭寄存器沒有用到的4位中的2位(確切的說是高2位)保留給柱面數的第11、12位使用。這樣,最大的磁頭數就是64(2的6次方)。但是,當時的操作系統不使用這種轉換方法,其認為磁頭寄存器的所有位數只可能記錄磁頭數。比如,為了正確地轉換柱面數為2,048、磁頭數為64的硬碟,就需要操作系統把柱面數除以4(512個邏輯柱面數),磁頭數乘以4(256個邏輯磁頭數)。不過由於BIOS中並沒有開放所有的磁頭數寄存器,當然無法記錄這樣的磁頭數。因此遇到這種運行機制的BIOS,在系統自檢的時候就會造成系統當機。
軟體容量限制
當時DOS分區的限制是由文件分配表(FAT)決定的。FAT處理存儲空間是以簇為單位的,它處理一簇的最大長度是32,768位元組,最多能處理65,536個簇,如果將兩個數字相乘,就會得到DOS的最大分區界限值是2,147,483,648位元組或2,048MB(2,147,483,648 /1,0242)。因此超過這個容量的硬碟,如果使用FAT格式,就最大隻能識別2.048GB的硬碟容量。
3.2GB的容量限制:
一些版本的BIOS不能識別超過6322柱面的硬碟,不過這種BIOS比較少見,由於柱面有限制,其最高支持扇區數為6,372,576(6322x16x63),如果乘以512扇區容量的話,其最高支持容量為6,372,576x512=3,262,758,912/1024=3.18GB。
4.2GB的硬碟容量限制:
當時一些操作系統使用8位寄存器來存儲磁頭數,這樣當BIOS報告硬碟的磁頭數等於256(最高容量)時,只有磁頭數的最先一位(即0)被系統保存,從而導致硬碟配置錯誤。一旦硬碟的磁頭數是16,柱面數大於8,192(2的13次方,由於後三位寄存器已經被磁頭寄存器借用,其實這里牽涉到一個突破528MB容量限制的轉換做法的問題,由於這一段比較負責,在這里就不詳細介紹了,我們只要明白有這個限制就夠了),系統就無法正常識別了,因此其最大的容量就被限制在了4.2GB=8192x16x63x512/1024。
8.4GB的容量限制
我們已經知道INT 13服務的定址方式最高可以支持8.4GB以下的容量(柱面數、磁頭數、扇區數的最大值分別是16,383、16和63,而三者相乘就是8.456GB)。因此,這個容量限制出現是遲早的問題了。所以,這個限制是我們目前最常遇到的容量限制。為了解決這個問題,一些廠商定義了新的擴展INT 13服務擴展標准。新的INT 13服務擴展標准不使用操作系統的寄存器傳遞硬碟的定址參數,它使用存儲在操作系統內存里的地址包。地址包里保存的是64位LBA地址,如果硬碟支持LBA定址,就把低28位直接傳遞給ATA界面,如果不支持,操作系統就先把LBA地址轉換為CHS地址,再傳遞給ATA界面。通過這種方式,能實現在ATA匯流排基礎上CHS定址最大容量是136.9 GB,而LBA定址最大容量是137.4GB。
33.8GB的容量限制
在CHS定址中,由於IDE(ATA)界面的限制,柱面數最高支持65,535(2的16次方-1),所以,當遇到柱面數大於65,535的時候,系統就無法識別這種硬碟了,不過LBA由於獨特的定址模式就不存在這個問題,這個容量限制具體為:65535x16x63x512/1024=33.8GB。
137GB的容量限制
相信這個問題就不用提了,目前的磁碟工作方式就註定IDE硬碟存在這個問題,前面介紹IDE(ATA)界面的時候,這個問題就已經出現了 那麼遇到容量限制問題的時候,系統會出現什麼狀況呢?並且遇到這些問題如何解決呢?
容量限制的症狀和解決方法:
528 MB
症狀:無論硬碟容量有多大,操作系統識別不超過528MB。
解決方法:LBA模式設置硬碟,不過當時很多硬碟和BIOS都不支持這種設置,因此只能更換主板
2.1 GB
硬體問題
症狀:在加電自檢時當機
解決方法:升級BIOS、強制硬碟跳線、LBA模式設置硬碟
軟體問題
症狀:分區的時候發現主分區劃分2.1GB的容量
解決方法:更換FAT 32文件分配(不過早先的一些軟體就無法使用了,並且不支持這個文件格式的操作系統也無法使用)劃分多個分區
3.2GB
症狀:在加電自檢時當機
解決方法:升級BIOS、LBA模式設置硬碟
4.2GB
症狀:在硬碟上創建分區後,再啟動機器時當機。
解決方法:升級BIOS、LBA模式設置硬碟
8.4GB
症狀:系統報告硬碟容量不超過8.4GB,在BIOS自檢的時候可能會報硬碟參數錯誤並當機
解決方法:升級BIOS、採用專用的分區軟體
33.8GB
症狀:系統自檢的時候當機
解決方法:升級BIOS,使用專用的硬碟管理軟體、強制硬碟跳線、使用LBA模式管理硬碟
137GB
症狀:無法識別硬碟或者系統自檢的時候當機
解決方法:需要硬碟和主板(可以用ATA 133控制卡來支持)都支持最新的ATA 133規范(ATA 133規范是剛剛由Maxtor提出的一種新的硬碟傳輸規范,其把目前最高的28位可用的寄存器空間提高到48位,從而支持更大的硬碟)
解決方案的要點:
硬體解決方法:
從硬體思路上來看,既然很多問題都是由BIOS引起的,那麼升級到合適的版本也就可以突破很多容量限制了,比如:3.2GB、4.2GB、8.4GB、33.8GB,這也是目前解決硬碟容量限制最簡單的辦法了。
另外選擇BIOS擴展卡也是一個解決方法,不過此方法用於老主板上,目前的主板的BIOS都支持擦寫,BIOS擴展卡使用起來即麻煩又要我們多投入一些金錢。
軟體解決方法
從上面的解決方法來看,很多方法就是只要硬碟支持LBA定址模式就可以解決問題了,因此一些公司推出了針對這個問題修補方法,其中最優秀的就是Maxtor的MaxBlast和Western Digital的EZ Drive了,這兩種解決方法其實就是軟體解決方法,它們可以轉換大容量硬碟的各個參數,從而達到全容量使用硬碟的目的。不過這類軟體並不是在操作系統啟動後才載入的(在磁碟分區建立一個磁碟的管理BIOS,通過它來同系統BIOS進行聯系),而是在BIOS啟動後、操作系統啟動前載入的,所以實現也比較簡單。
另外使用專用的硬碟分區軟體也是一個不錯的解決方法,由於新版本的硬碟分區軟體已經附帶了INT 13擴展標准因此可以支持更大容量的硬碟,不過它也是同MaxBlast和EZ Drive一樣會系統啟動後載入INT 13擴展,當遇到硬碟分區表破壞或者覆蓋後,磁碟使用會再次出現問題。
操作系統的限制:
目前又幾種操作系統不支持大容量的硬碟:DOS 6.22或更低的版本,不支持大於8.4 GB的硬碟,並且沒有辦法解決。Windows 95(NT 3.5x)支持INT 13擴展、支持更大容量的硬碟,不過FAT 16限制其每分區最大支持的容量僅為2GB。另外以上兩種操作系統都不支持FAT 32格式,因此要使用大硬碟盡量不要採用以上的操作系統。Windows NT 4.0存在一個奇怪的問題:當啟動分區的容量大於8.4 GB時,NT就不能使用超過8.4 GB的其它硬碟空間了,因此使用此操作系統要注意。
綜上所說,大家應該對磁碟容量限制的成因和解決方法有一個比較感性的認識了吧,一般來說避免容量限制問題的出現就是:更新BIOS,盡量不是用CHS硬碟定址模式。以上兩點是解決容量限制最簡單和有效的辦法,因為我們無需投入任何費用,並且對所有用硬碟都適用,並且無須進行煩瑣的軟體設置或安裝。
附:一種新的8.4GB容量限制問題解決方法:
一大容量硬碟,在BIOS中限制僅為8.4GB大小,不管它,保存CMOS信息,啟動系統執行FDISK,在系統認出的8.4GB硬碟上先分出一個分區(即為C盤,大小隨意),在分出的分區(C盤)上將WINDOWS系統裝好。(注意,只能先分出一個分區)然後,將此大硬碟接在能認出大硬碟全部容量的電腦上,將剩下的容量全部分完(注意,每個邏輯分區容量不能大於8.4GB),最後,再將此大硬碟接回不能識別8.4GB以上容量的電腦上,CMOS仍將此硬碟認為8.4GB,不管他,保存CMOS信息後重啟系統,進入WINDOWS系統,發現所有的邏輯盤全部存在,格式化後即可使用。