當前位置:首頁 » 服務存儲 » 位元組怎樣在硬碟上存儲
擴展閱讀
求每行c語言最大值 2022-05-19 17:09:26
強制刷新圖片緩存辦法 2022-05-19 16:54:46

位元組怎樣在硬碟上存儲

發布時間: 2022-05-14 19:59:06

硬碟存儲方式是怎麼樣的呢

你說的是存儲容量吧~
一般是1GB=1024MB=1034*1024KB=1024*1024*1024B
這里的B指的是位元組,即Byte

硬碟是磁性材料存儲器,是最主要的輔助存儲器。通常,硬碟由多個碟片組成,碟片的每一面都有一個讀寫磁頭。硬碟在使用時,要對碟片格式化成若干個磁軌(稱為柱面),每個磁軌再劃分為若干個扇區。

硬碟按直徑大小可分為3.5英寸、2.5英寸、1.8英寸等。

評價硬碟的性能,主要有四個標准:硬碟轉速,存儲容量,緩存容量,介面類型。

硬碟的存儲容量計算:存儲容量=磁頭數×柱面數×扇區數×每扇區位元組數(512B )

硬碟的容量正在不斷的提高,現在的單碟片的硬碟已經可以達到100G以上,轉速已經可以達到每分鍾上萬轉

Ⅱ 我想了解文件在硬碟中的存儲形式

有兩種形式

Ⅲ 硬碟如何實現信息的存儲

一塊小小的硬碟,儲存的信息幾乎可以相當於全世界圖書館的總和,是怎麼做到的?

雖然硬碟在我們生活中已經隨處可見,但他的儲存方法和原理,卻不是每人都了解的。

想像一架飛機以離地面1毫米的高度飛行,每25秒繞地球一圈,還能覆蓋每一寸表面。

再將其縮小成手掌大小,你就會得到和現代硬碟差不多的東西,它所包含的信息比你們當地圖書館還要多。

那麼它是如何在這么小的空間 儲存這么多的信息呢?

多虧了一代又一代工程師,材料科學家,還有量子物理學家們的共同努力,這個擁有不可思議的能量, 無比精確的小工具才能在你手掌中旋轉。

歡迎關注微信公眾號infoVision,更多精彩科普動畫等著你!

Ⅳ 硬碟存儲數據的形式原理是什麼

硬碟的數據結構

1.MBR區

MBR(Main Boot Record 主引導記錄區)�位於整個硬碟的0磁軌0柱面1扇區。不過,在總共512位元組的主引導扇區中,MBR只佔用了其中的446個位元組,另外的64個位元組交給了DPT(Disk Partition Table硬碟分區表)(見表),最後兩個位元組「55,AA」是分區的結束標志。這個整體構成了硬碟的主引導扇區。(圖)

主引導記錄中包含了硬碟的一系列參數和一段引導程序。其中的硬碟引導程序的主要作用是檢查分區表是否正確並且在系統硬體完成自檢以後引導具有激活標志的分區上的操作系統,並將控制權交給啟動程序。MBR是由分區程序(如Fdisk.exe)所產生的,它不依賴任何操作系統,而且硬碟引導程序也是可以改變的,從而實現多系統共存。

下面,我們以一個實例讓大家更直觀地來了解主引導記錄:

例:80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00

在這里我們可以看到,最前面的「80」是一個分區的激活標志,表示系統可引導;「01 01 00」表示分區開始的磁頭號為01,開始的扇區號為01,開始的柱面號為00;「0B」表示分區的系統類型是FAT32,其他比較常用的有04(FAT16)、07(NTFS);「FE BF FC」表示分區結束的磁頭號為254,分區結束的扇區號為63、分區結束的柱面號為764;「3F 00 00 00」表示首扇區的相對扇區號為63;「7E 86 BB 00」表示總扇區數為12289622。

2.DBR區

DBR(Dos Boot Record)是操作系統引導記錄區的意思。它通常位於硬碟的0磁軌1柱面1扇區,是操作系統可以直接訪問的第一個扇區,它包括一個引導程序和一個被稱為BPB(Bios Parameter Block)的本分區參數記錄表。引導程序的主要任務是當MBR將系統控制權交給它時,判斷本分區跟目錄前兩個文件是不是操作系統的引導文件(以DOS為例,即是Io.sys和Msdos.sys)。如果確定存在,就把它讀入內存,並把控制權 交給該文件。BPB參數塊記錄著本分區的起始扇區、結束扇區、文件存儲格式、硬碟介質描述符、根目錄大小、FAT個數,分配單元的大小等重要參數。DBR是由高級格式化程序(即Format.com等程序)所產生的。

3.FAT區

在DBR之後的是我們比較熟悉的FAT(File Allocation Table文件分配表)區。在解釋文件分配表的概念之前,我們先來談談簇(Cluster)的概念。文件佔用磁碟空間時,基本單位不是位元組而是簇。一般情況下,軟盤每簇是1個扇區,硬碟每簇的扇區數與硬碟的總容量大小有關,可能是4、8、16、32、64……

同一個文件的數據並不一定完整地存放在磁碟的一個連續的區域內,而往往會分成若干段,像一條鏈子一樣存放。這種存儲方式稱為文件的鏈式存儲。由於硬碟上保存著段與段之間的連接信息(即FAT),操作系統在讀取文件時,總是能夠准確地找到各段的位置並正確讀出。

為了實現文件的鏈式存儲,硬碟上必須准確地記錄哪些簇已經被文件佔用,還必須為每個已經佔用的簇指明存儲後繼內容的下一個簇的簇號。對一個文件的最後一簇,則要指明本簇無後繼簇。這些都是由FAT表來保存的,表中有很多表項,每項記錄一個簇的信息。由於FAT對於文件管理的重要性,所以FAT有一個備份,即在原FAT的後面再建一個同樣的FAT。初形成的FAT中所有項都標明為「未佔用」,但如果磁碟有局部損壞,那麼格式化程序會檢測出損壞的簇,在相應的項中標為「壞簇」,以後存文件時就不會再使用這個簇了。FAT的項數與硬碟上的總簇數相當,每一項佔用的位元組數也要與總簇數相適應,因為其中需要存放簇號。FAT的格式有多種,最為常見的是FAT16和FAT32。

4.DIR區

DIR(Directory)是根目錄區,緊接著第二FAT表(即備份的FAT表)之後,記錄著根目錄下每個文件(目錄)的起始單元,文件的屬性等。定位文件位置時,操作系統根據DIR中的起始單元,結合FAT表就可以知道文件在硬碟中的具體位置和大小了。

5.數據(DATA)區

數據區是真正意義上的數據存儲的地方,位於DIR區之後,占據硬碟上的大部分數據空間。

磁碟的文件系統
經常聽高手們說到FAT16、FAT32、NTFS等名詞,朋友們可能隱約知道這是文件系統的意思。可是,究竟這么多文件系統分別代表什麼含義呢?今天,我們就一起來學習學習:

1.什麼是文件系統?
所謂文件系統,它是操作系統中藉以組織、存儲和命名文件的結構。磁碟或分區和它所包括的文件系統的不同是很重要的,大部分應用程序都基於文件系統進行操作,在不同種文件系統上是不能工作的。

2.文件系統大家族
常用的文件系統有很多,MS-DOS和Windows 3.x使用FAT16文件系統,默認情況下Windows 98也使用FAT16,Windows 98和Me可以同時支持FAT16、FAT32兩種文件系統,Windows NT則支持FAT16、NTFS兩種文件系統,Windows 2000可以支持FAT16、FAT32、NTFS三種文件系統,Linux則可以支持多種文件系統,如FAT16、FAT32、NTFS、Minix、ext、ext2、xiafs、HPFS、VFAT等,不過Linux一般都使用ext2文件系統。下面,筆者就簡要介紹這些文件系統的有關情況:

(1)FAT16
FAT的全稱是「File Allocation Table(文件分配表系統)」,最早於1982年開始應用於MS-DOS中。FAT文件系統主要的優點就是它可以允許多種操作系統訪問,如MS-DOS、Windows 3.x、Windows 9x、Windows NT和OS/2等。這一文件系統在使用時遵循8.3命名規則(即文件名最多為8個字元,擴展名為3個字元)。

(2)VFAT
VFAT是「擴展文件分配表系統」的意思,主要應用於在Windows 95中。它對FAT16文件系統進行擴展,並提供支持長文件名,文件名可長達255個字元,VFAT仍保留有擴展名,而且支持文件日期和時間屬性,為每個文件保留了文件創建日期/時間、文件最近被修改的日期/時間和文件最近被打開的日期/時間這三個日期/時間。

(3)FAT32
FAT32主要應用於Windows 98系統,它可以增強磁碟性能並增加可用磁碟空間。因為與FAT16相比,它的一個簇的大小要比FAT16小很多,所以可以節省磁碟空間。而且它支持2G以上的分區大小。朋友們從附表中可以看出FAT16與FAT32的一不同。

(4)HPFS
高性能文件系統。OS/2的高性能文件系統(HPFS)主要克服了FAT文件系統不適合於高檔操作系統這一缺點,HPFS支持長文件名,比FAT文件系統有更強的糾錯能力。Windows NT也支持HPFS,使得從OS/2到Windows NT的過渡更為容易。HPFS和NTFS有包括長文件名在內的許多相同特性,但使用可靠性較差。

(5)NTFS
NTFS是專用於Windows NT/2000操作系統的高級文件系統,它支持文件系統故障恢復,尤其是大存儲媒體、長文件名。NTFS的主要弱點是它只能被Windows NT/2000所識別,雖然它可以讀取FAT文件系統和HPFS文件系統的文件,但其文件卻不能被FAT文件系統和HPFS文件系統所存取,因此兼容性方面比較成問題。

ext2
這是Linux中使用最多的一種文件系統,因為它是專門為Linux設計,擁有最快的速度和最小的CPU佔用率。ext2既可以用於標準的塊設備(如硬碟),也被應用在軟盤等移動存儲設備上。現在已經有新一代的Linux文件系統如SGI公司的XFS、ReiserFS、ext3文件系統等出現。

小結:雖然上面筆者介紹了6種文件系統,但占統治地位的卻是FAT16/32、NTFS等少數幾種,使用最多的當然就是FAT32啦。只要在「我的電腦」中右擊某個驅動器的屬性,就可以在「常規」選項中(圖)看到所使用的文件系統。

明明白白識別硬碟編號
目前,電子市場上硬碟品牌最讓大家熟悉的無非是IBM、昆騰(Quantum)、希捷(Seagate),邁拓(Maxtor)等「老字型大小」。而這些硬碟型號的編號則各不相同,令人眼花繚亂。其實,這些編號均有一定的規律,表示一些特定?的含義。一般來說,我們可以從其編號來了解硬碟的性能指標,包括介面?類型、轉速、容量等。作為DIY朋友來說,只有自己真正掌握正確識別硬碟編號,在選購硬碟時,就方便得多(以致不被「黑」),至少不會被賣的人說啥是啥。以下舉例說明,供朋友們參考。

一、IBM
IBM是硬碟業的巨頭,其產品幾乎涵蓋了所有硬碟領域。而且IBM還是去年硬碟容量、價格戰的始作蛹者。我們今天能夠用得上經濟上既便宜,而且容量又大的硬碟可都得感謝IBM。
IBM的每一個產品又分為多個系列,它的命名方式為:產品名+系列代號+介面類型+碟片尺寸+轉速+容量。以Deskstar 22GXP的13.5GB硬碟為例,該硬碟的型號為:DJNA-371350,字母D代表Deskstar產品,JN代表Deskstar25GP與22GP系列,A代表ATA介面,3代表3寸碟片,7是7200轉產品,最後四位數字為硬碟容量13.5GB。IBM系列代號(IDE)含義如下:
TT=Deskstar 16GP或14GXP JN=Deskstar 25GP或22GXP RV=Ultrastar 18LZX或36ZX
介面類型含義如下:A=ATA
S與U=Ultra SCSI、Ultra SCSI Wide、Ultra SCSI SCA、增強型SCSI、
增強擴展型SCSI(SCA)
C=Serial Storage Architecture連續存儲體系SCSI L=光纖通道SCSI

二、MAXTOR(邁拓)
MAXTOR是韓國現代電子美國公司的一個獨立子公司,以前該公司的產品也覆蓋了IDE與SCSI兩個方面,但由於SCSI方面的產品缺乏竟爭力而最終放棄了這個高端市場從而主攻IDE硬碟,所以MAXTOR公司應該是如今硬碟廠商中最專一的了。
MAXTOR硬碟編號規則如下:首位+容量+介面類型+磁頭數,MAXTOR?從鑽石四代開始,其首位數字就為9,一直延續到現在,所以大家如今能在電子市場上見到的MAXTOR硬碟首位基本上都為9。另外比較特殊的是MAXTOR編號中有磁頭數這一概念,因為MAXTOR硬碟是大打單碟容量的發起人,所以其硬碟的型號中要將單碟容量從磁頭數中體現出來。單碟容量=2*硬碟總容量/磁頭數。
現以金鑽三代(DiamondMax Plus6800)10.2GB的硬碟為例說明:該硬碟?型號為91024U3,9是首位,1024是容量,U是介面類型UDMA66,3代表該硬碟有3個磁頭,也就是說其中的一個碟片是單面有數據。這個單碟容量就為2*10.2/3=6.8GB。MAXTOR硬碟介面類型字母含義如:
A=PIO模式 D=UDMA33模式 U=UDMA66模式

三、SEAGATE(希捷)
希捷科技公司(Seagate Technology)是世界上最大的磁碟驅動器、磁?盤和讀寫磁頭生產廠家,該公司是一直是IBM、COMPAQ、SONY等業界大戶的硬碟供應商。希捷還保持著業界第一款10000轉硬碟的記錄(捷豹Cheetah系列SCSI)與最大容量(捷豹三代73GB)的記錄,公司的實力由此可見一斑。但?由於希捷一直是以高端應用為主(例如SCSI硬碟),而並不是特別重視低端家用產品的開發,從而導致在DIY一族心目中的地位不如昆騰等硬碟供應商?。好在希捷公司及時注意到了這個問題,不久前投入市場的酷魚(Barracuda)系列就一掃希捷硬碟以往在單碟容量、轉速、噪音、非正常外頻下工作穩?定性、綜合性能上的劣勢。
希捷的硬碟系列從低端到高端的產品名稱分別為:U4系列、Medalist(金牌)系列、U8系列、Medalist Pro(金牌Pro)系列、Barracuda(酷魚)系列。其中Medalist Pro與Barracuda系列是7200轉的產品,其他的是5400轉的產品。硬碟的型號均以ST開頭,現以酷魚10.2GB硬碟為例來說明。該硬碟的型號是:ST310220A,在ST後第一位數字是代表硬碟的尺寸,3就是該硬碟採用3寸碟片,如今其他規格的硬碟已基本上沒有了,所以大家能夠見到?的絕大多數硬碟該位數字均不3,3後面的1022代表的是該硬碟的格式化容量是10.22GB,最後一位數字0是代表7200轉產品。這一點不要混淆與希捷以前的入門級產品Medalist ST38420A混淆。多數希捷的Medalist Pro系列開始,以結尾的產品均代表7200轉硬碟,其它數字結尾(包括1、2)代表5400轉的產品。位於型號最後的字母是硬碟的介面類型。希捷硬碟的介面類型字母含義如下:
A=ATA UDMA33或UDMA66 IDE介面 AG為筆記本電腦專用的ATA介面硬碟。
W為ULTRA Wide SCSI,
其數據傳輸率為40MB每秒 N為ULTRA Narrow SCSI,其數據傳輸率為20MB每秒。
而ST34501W/FC和ST19101N/FC中的FC(Fibre Channel)表示光纖通道,可提供高達每秒100MB的數據傳輸率,並且支持熱插拔。

硬碟及介面標準的發展歷史
一、硬碟的歷史
說起硬碟的歷史,我們不能不首先提到藍色巨人IBM所發揮的重要作用,正是IBM發明了硬碟,並且為硬碟的發展做出了一系列重大貢獻。在發明磁碟系統之前,計算機使用穿孔紙帶、磁帶等來存儲程序與數據,這些存儲方式不僅容量低、速度慢,而且有個大缺陷:它們都是順序存儲,為了讀取後面的數據,必須從頭開始讀,無法實現隨機存取數據。
在1956年9月,IBM向世界展示了第一台商用硬碟IBM 350 RAMAC(Random Access Method of Accounting and Control),這套系統的總容量只有5MB,卻是使用了50個直徑為24英寸的磁碟組成的龐然大物。而在1968年IBM公司又首次提出了「溫徹斯特」Winchester技術。「溫徹斯特」技術的精髓是:「使用密封、固定並高速旋轉的鍍磁碟片,磁頭沿碟片徑向移動,磁頭磁頭懸浮在高速轉動的碟片上方,而不與碟片直接接觸」,這便是現代硬碟的原型。在1973年IBM公司製造出第一台採用「溫徹期特」技術製造的硬碟,從此硬碟技術的發展有了正確的結構基礎。1979年,IBM再次發明了薄膜磁頭,為進一步減小硬碟體積、增大容量、提高讀寫速度提供了可能。70年代末與80年代初是微型計算機的萌芽時期,包括希捷、昆騰、邁拓在內的許多著名硬碟廠商都誕生於這一段時間。1979年,IBM的兩位員工Alan Shugart和Finis Conner決定要開發像5.25英寸軟碟機那樣大小的硬碟驅動器,他們離開IBM後組建了希捷公司,次年,希捷發布了第一款適合於微型計算機使用的硬碟,容量為5MB,體積與軟碟機相仿。
PC時代之前的硬碟系統都具有體積大、容量小、速度慢和價格昂貴的特點,這是因為當時計算機的應用范圍還太小,技術與市場之間是一種相互制約的關系,使得包括存儲業在內的整個計算機產業的發展都受到了限制。 80年代末期IBM對硬碟發展的又一項重大貢獻,即發明了MR(Magneto Resistive)磁頭,這種磁頭在讀取數據時對信號變化相當敏感,使得碟片的存儲密度能夠比以往20MB每英寸提高了數十倍。1991年IBM生產的3.5英寸的硬碟使用了MR磁頭,使硬碟的容量首次達到了1GB,從此硬碟容量開始進入了GB數量級的時代 。1999年9月7日,邁拓公司(Maxtor)_宣布了首塊單碟容量高達10.2GB的ATA硬碟,從而把硬碟的容量引入了一個新里程碑。

二、介面標準的發展
(1)IDE和EIDE的由來
最早的IBM PC並不帶有硬碟,它的BIOS及DOS 1.0操作系統也不支持任何硬碟,因為系統的內存只有16KB,就連軟碟機和DOS都是可選件。後來DOS 2引入了子目錄系統,並添加了對「大容量」存儲設備的支持,於是一些公司開始出售供IBM PC使用的硬碟系統,這些硬碟與一塊控制卡、一個獨立的電源被一起裝在一個外置的盒子里,並通過一條電纜與插在擴展槽中的一塊適配器相連,為了使用這樣的硬碟,必須從軟碟機啟動,並載入一個專用設備驅動程序。
1983年IBM公司推出了PC/XT,雖然XT仍然使用8088 CPU,但配置卻要高得多,加上了一個10MB的內置硬碟,IBM把控制卡的功能集成到一塊介面控制卡上,構成了我們常說的硬碟控制器。其介面控制卡上有一塊ROM晶元,其中存有硬碟讀寫程序,直到基於80286處理器的PC/AT的推出,硬碟介面控製程序才被加入到了主板的BIOS中。
PC/XT和PC/AT機器使用的硬碟被稱為MFM硬碟或ST-506/412硬碟,MFM(Modified Frequency Molation)是指一種編碼方案,而ST-506/412則是希捷開發的一種硬碟介面,ST-506介面不需要任何特殊的電纜及接頭,但是它支持的傳輸速度很低,因此到了1987年左右這種介面就基本上被淘汰了。
邁拓於1983年開發了ESDI(Enhanced Small Drive Interface)介面。這種介面把編解碼器放在了硬碟本身之中,它的理論傳輸速度是ST-506的2~4倍。但由於成本比較高,九十年代後就逐步被淘汰掉了。
IDE(Integrated Drive Electronics)實際上是指把控制器與盤體集成在一起的硬碟驅動器,這樣減少了硬碟介面的電纜數目與長度,數據傳輸的可靠性得到了增強,硬碟製造起來變得更容易,對用戶而言,硬碟安裝起來也更為方便。IDE介面也叫ATA(Advanced Technology Attachment)介面。
ATA介面最初是在1986年由CDC、康柏和西部數據共同開發的,他們決定使用40芯的電纜,最早的IDE硬碟大小為5英寸,容量為40MB。ATA介面從80年代末期開始逐漸取代了其它老式介面。
80年代末期IBM發明了MR(Magneto Resistive)磁阻磁頭,這種磁頭在讀取數據時對信號變化相當敏感,使得碟片的存儲密度能夠比以往的20MB/in2提高數十上百倍。1991年,IBM生產的3.5英寸硬碟0663-E12使用了MR磁頭,容量首次達到了1GB,從此硬碟容量開始進入了GB數量級,直到今天,大多數硬碟仍然採用MR磁頭。
人們在談論硬碟時經常講到PIO模式和DMA模式,它們是什麼呢?目前硬碟與主機進行數據交換的方式有兩種,一種是通過CPU執行I/O埠指令來進行數據的讀寫;另外,一種是不經過CPU的DMA方式。
PIO模式即Programming Input/Output Model。這種模式使用PC I/O埠指令來傳送所有的命令、狀態和數據。由於驅動器中有多個緩沖區,對硬碟的讀寫一般採用I/O串操作指令,這種指令只需一次取指令就可以重復多次地完成I/O操作,因此,達到高的數據傳輸率是可能的。
DMA即Direct Memory Access。它表示數據不經過CPU,而直接在硬碟和內存之間傳送。在多任務操作系統內,如OS/2、Linux、Windows NT等,當磁碟傳輸數據時,CPU可騰出時間來做其它事情,而在DOS/Windows3.X環境里,CPU不得不等待數據傳輸完畢,所以在這種情況下,DMA方式的意義並不大。
DMA方式有兩種類型:第三方DMA(third-party DMA)和第一方DMA(first-party DMA)(或稱匯流排主控DMA,Busmastering DMA)。第三方DMA通過系統主板上的DMA控制器的仲裁來獲得匯流排和傳輸數據。而第一方DMA,則完全由介面卡上的邏輯電路來完成,當然這樣就增加了匯流排主控介面的復雜性和成本。現在,所有較新的晶元組均支持匯流排主控DMA。
(2)SCSI介面
(Small Computer System Interface小型計算機系統介面)是一種與ATA完全不同的介面,它不是專門為硬碟設計的,而是一種匯流排型的系統介面,每個SCSI匯流排上可以連接包括SCSI控制卡在內的8個SCSI設備。SCSI的優勢在於它支持多種設備,傳輸速率比ATA介面快得多但價格也很高,獨立的匯流排使得它對CPU的佔用率很低。 最早的SCSI是於1979年由美國的Shugart公司(Seagate希捷公司的前身)制訂的,90年代初,SCSI發展到了SCSI-2,1995年推出了SCSI-3,其俗稱Ultra SCSI, 1997年推出了Ultra 2 SCSI(Fast-40),其採用了LVD(Low Voltage Differential,低電平微分)傳輸模式,16位的Ultra2SCSI(LVD)介面的最高傳輸速率可達80MB/S,允許介面電纜的最長為12米,大大增加了設備的靈活性。1998年,更高數據傳輸率的Ultra160/m SCSI(Wide下的Fast-80)規格正式公布,其最高數據傳輸率為160MB/s,昆騰推出的Atlas10K和Atlas四代等產品支持Ultra3 SCSI的Ultra160/m傳輸模式。
SCSI硬碟具備有非常優秀的傳輸性能。但由於大多數的主板並不內置SCSI介面,這就使得連接SCSI硬碟必須安裝相應的SCSI卡,目前關於SCSI卡有三個正式標准,SCSI-1,SCSI-2和SCSI-3,以及一些中間版本,要使SCSI硬碟獲得最佳性能就必須保證SCSI卡與SCSI硬碟版本一致(目前較新生產的SCSI硬碟和SCSI卡都是向前兼容的,不一定必須版本一致)。
(3)IEEE1394:IEEE1394又稱為Firewire(火線)或P1394,它是一種高速串列匯流排,現有的IEEE1394標准支持100Mbps、200Mbps和400Mbps的傳輸速率,將來會達到800Mbps、1600Mbps、3200Mbps甚至更高,如此高的速率使得它可以作為硬碟、DVD、CD-ROM等大容量存儲設備的介面。IEEE1394將來有望取代現有的SCSI匯流排和IDE介面,但是由於成本較高和技術上還不夠成熟等原因,目前仍然只有少量使用IEEE1394介面的產品,硬碟就更少了。

Ⅳ 硬碟是如何存儲數據的

硬碟數據存儲原理

硬碟是一種採用磁介質的數據存儲設備,數據存儲在密封於潔凈的硬碟驅動器內腔的若干個磁碟片上。這些碟片一般是在以鋁為主要成分的片基表面塗上磁性介質所形成,在磁碟片的每一面上,以轉動軸為軸心、以一定的磁密度為間隔的若干個同心圓就被劃分成磁軌(track),每個磁軌又被劃分為若干個扇區(sector),數據就按扇區存放在硬碟上。在每一面上都相應地有一個讀寫磁頭(head),所以不同磁頭的所有相同位置的磁軌就構成了所謂的柱面(cylinder)。傳統的硬碟讀寫都是以柱面、磁頭、扇區為定址方式的(CHS定址)。硬碟在上電後保持高速旋轉(5400轉/min以上),位於磁頭臂上的磁頭懸浮在磁碟表面,可以通過步進電機在不同柱面之間移動,對不同的柱面進行讀寫。所以在上電期間如果硬碟受到劇烈振盪,磁碟表面就容易被劃傷,磁頭也容易損壞,這都將給盤上存儲的數據帶來災難性的後果。

硬碟的第一個扇區(0道0頭1扇區)被保留為主引導扇區。在主引導區內主要有兩項內容:主引導記錄和硬碟分區表。主引導記錄是一段程序代碼,其作用主要是對硬碟上安裝的操作系統進行引導;硬碟分區表則存儲了硬碟的分區信息。計算機啟動時將讀取該扇區的數據,並對其合法性進行判斷(扇區最後兩個位元組是否為0x55AA或0xAA55 ),如合法則跳轉執行該扇區的第一條指令。所以硬碟的主引導區常常成為病毒攻擊的對象,從而被篡改甚至被破壞。可引導標志:0x80為可引導分區類型標志;0表示未知;1為FAT12;4為FAT16;5為擴展分區等等。

硬碟信息與硬碟數據恢復

在計算機的CMOS中也存儲了硬碟的信息,主要有硬碟類型、容量、柱面數、磁頭數、每道扇區數、定址方式等內容,對硬碟參數加以說明,以便計算機正確訪問硬碟。當CMOS因故掉電或發生錯誤時,硬碟設置可能會丟失或錯誤,硬碟訪問也就無法正確進行。這種情況我們就必須重新設置硬碟參數,如果事先已記下硬碟參數或者有某些防病毒軟體事先備份的CMOS信息,只需手工恢復即可;否則也可使用BIOS設置(setup)中的「自動檢測硬碟類型」(HD type auto detection)的功能,一般也能得到正確的結果。
硬碟故障大體上可以分為軟故障和硬故障兩大類,具體有硬碟操作系統被損壞、硬碟主引導區被破壞、 FAT表表被破壞、CMOS硬碟參數不正確、硬碟控制器與硬碟驅動器未能正常連接、硬碟驅動器或硬碟控制器硬體故障、主板故障等情況。比如:
開機自檢過程中,屏幕提示「Hard disk drive failure」或類似信息,則可以判斷為硬碟驅動器或硬碟控制器(提示「Hard drive controller failure」)硬體故障。
開機自檢過程中,屏幕提示「Hard disk not present」或類似信息,則可能是CMOS硬碟參數設置錯誤或硬碟控制器與硬碟驅動器連接不正確。
開機自檢過程中,屏幕提示「Missing operating system」、「Non OS」 、「Non system disk or disk error,replace disk and press a key to reboot」等類似信息,則可能是硬碟主引導區分區表被破壞、操作系統未正確安裝或者CMOS硬碟參數設置錯誤等。
開機用軟盤啟動後無法進入C盤,可能是分區表被破壞,硬碟數據恢復是可以的。

Ⅵ java中如何將位元組數組轉換為文件並保存在磁碟

用IO流
假設你想要的文件放在c盤根目錄下,名字是1.txt,你的位元組數組是ch
try
{
FileWriter
f=new
FileWriter("c:\\1.txt"):
f.write(ch,0,
ch.length)
}
catch(IOException)
{
system.out.println(e.getMessage());
}
finally
{
f.close;}

Ⅶ 硬碟存儲容量的原理是什麼

硬碟分區是操作系統安裝過程中經常談到的話題。對於一些簡單的應用,硬碟分區並不成為一種障礙,但對於一些復雜的應用,就不能不深入理解硬碟分區機制的某些細節。

硬碟的崩潰經常會遇見,特別是病毒肆虐的時代,關於引導分區的恢復與備份的技巧,你一定要掌握。

在使用電腦時,你往往會使用幾個操作系統。如何在硬碟中安裝多個操作系統?

如果你需要了解這方面的知識或是要解決上述問題,這期的「硬碟分區」專題會告訴你答案!

硬碟是現在計算機上最常用的存儲器之一。我們都知道,計算機之所以神奇,是因為它具有高速分析處理數據的能力。而這些數據都以文件的形式存儲在硬碟里。不過,計算機可不像人那麼聰明。在讀取相應的文件時,你必須要給出相應的規則。這就是分區概念。分區從實質上說就是對硬碟的一種格式化。當我們創建分區時,就已經設置好了硬碟的各項物理參數,指定了硬碟主引導記錄(即Master Boot Record,一般簡稱為MBR)和引導記錄備份的存放位置。而對於文件系統以及其他操作系統管理硬碟所需要的信息則是通過以後的高級格式化,即Format命令來實現。

面、磁軌和扇區

硬碟分區後,將會被劃分為面(Side)、磁軌(Track)和扇區(Sector)。需要注意的是,這些只是個虛擬的概念,並不是真正在硬碟上劃軌道。先從面說起,硬碟一般是由一片或幾片圓形薄膜疊加而成。我們所說,每個圓形薄膜都有兩個「面」,這兩個面都是用來存儲數據的。按照面的多少,依次稱為0面、1面、2面……由於每個面都專有一個讀寫磁頭,也常用0頭(head)、1頭……稱之。按照硬碟容量和規格的不同,硬碟面數(或頭數)也不一定相同,少的只有2面,多的可達數十面。各面上磁軌號相同的磁軌合起來,稱為一個柱面(Cylinder)(如圖1)。(圖)

上面我們提到了磁軌的概念。那麼究竟何為磁軌呢?由於磁碟是旋轉的,則連續寫入的數據是排列在一個圓周上的。我們稱這樣的圓周為一個磁軌。(如圖2)如果讀寫磁頭沿著圓形薄膜的半徑方向移動一段距離,以後寫入的數據又排列在另外一個磁軌上。根據硬碟規格的不同,磁軌數可以從幾百到數千不等;一個磁軌上可以容納數KB的數據,而主機讀寫時往往並不需要一次讀寫那麼多,於是,磁軌又被劃分成若干段,每段稱為一個扇區。一個扇區一般存放512位元組的數據。扇區也需要編號,同一磁軌中的扇區,分別稱為1扇區,2扇區……

計算機對硬碟的讀寫,處於效率的考慮,是以扇區為基本單位的。即使計算機只需要硬碟上存儲的某個位元組,也必須一次把這個位元組所在的扇區中的512位元組全部讀入內存,再使用所需的那個位元組。不過,在上文中我們也提到,硬碟上面、磁軌、扇區的劃分表面上是看不到任何痕跡的,雖然磁頭可以根據某個磁軌的應有半徑來對准這個磁軌,但怎樣才能在首尾相連的一圈扇區中找出所需要的某一扇區呢?原來,每個扇區並不僅僅由512個位元組組成的,在這些由計算機存取的數據的前、後兩端,都另有一些特定的數據,這些數據構成了扇區的界限標志,標志中含有扇區的編號和其他信息。計算機就憑借著這些標志來識別扇區

硬碟的數據結構

在上文中,我們談了數據在硬碟中的存儲的一般原理。為了能更深入地了解硬碟,我們還必須對硬碟的數據結構有個簡單的了解。硬碟上的數據按照其不同的特點和作用大致可分為5部分:MBR區、DBR區、FAT區、DIR區和DATA區。我們來分別介紹一下:

1.MBR區

MBR(Main Boot Record 主引導記錄區) 位於整個硬碟的0磁軌0柱面1扇區。不過,在總共512位元組的主引導扇區中,MBR只佔用了其中的446個位元組,另外的64個位元組交給了DPT(Disk Partition Table硬碟分區表)(見表),最後兩個位元組「55,AA」是分區的結束標志。這個整體構成了硬碟的主引導扇區。(圖)

主引導記錄中包含了硬碟的一系列參數和一段引導程序。其中的硬碟引導程序的主要作用是檢查分區表是否正確並且在系統硬體完成自檢以後引導具有激活標志的分區上的操作系統,並將控制權交給啟動程序。MBR是由分區程序(如Fdisk.exe)所產生的,它不依賴任何操作系統,而且硬碟引導程序也是可以改變的,從而實現多系統共存。

下面,我們以一個實例讓大家更直觀地來了解主引導記錄:

例:80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00

在這里我們可以看到,最前面的「80」是一個分區的激活標志,表示系統可引導;「01 01 00」表示分區開始的磁頭號為01,開始的扇區號為01,開始的柱面號為00;「0B」表示分區的系統類型是FAT32,其他比較常用的有04(FAT16)、07(NTFS);「FE BF FC」表示分區結束的磁頭號為254,分區結束的扇區號為63、分區結束的柱面號為764;「3F 00 00 00」表示首扇區的相對扇區號為63;「7E 86 BB 00」表示總扇區數為12289622。

2.DBR區

DBR(Dos Boot Record)是操作系統引導記錄區的意思。它通常位於硬碟的0磁軌1柱面1扇區,是操作系統可以直接訪問的第一個扇區,它包括一個引導程序和一個被稱為BPB(Bios Parameter Block)的本分區參數記錄表。引導程序的主要任務是當MBR將系統控制權交給它時,判斷本分區跟目錄前兩個文件是不是操作系統的引導文件(以DOS為例,即是Io.sys和Msdos.sys)。如果確定存在,就把它讀入內存,並把控制權 交給該文件。BPB參數塊記錄著本分區的起始扇區、結束扇區、文件存儲格式、硬碟介質描述符、根目錄大小、FAT個數,分配單元的大小等重要參數。DBR是由高級格式化程序(即Format.com等程序)所產生的。

3.FAT區

在DBR之後的是我們比較熟悉的FAT(File Allocation Table文件分配表)區。在解釋文件分配表的概念之前,我們先來談談簇(Cluster)的概念。文件佔用磁碟空間時,基本單位不是位元組而是簇。一般情況下,軟盤每簇是1個扇區,硬碟每簇的扇區數與硬碟的總容量大小有關,可能是4、8、16、32、64……

同一個文件的數據並不一定完整地存放在磁碟的一個連續的區域內,而往往會分成若干段,像一條鏈子一樣存放。這種存儲方式稱為文件的鏈式存儲。由於硬碟上保存著段與段之間的連接信息(即FAT),操作系統在讀取文件時,總是能夠准確地找到各段的位置並正確讀出。

為了實現文件的鏈式存儲,硬碟上必須准確地記錄哪些簇已經被文件佔用,還必須為每個已經佔用的簇指明存儲後繼內容的下一個簇的簇號。對一個文件的最後一簇,則要指明本簇無後繼簇。這些都是由FAT表來保存的,表中有很多表項,每項記錄一個簇的信息。由於FAT對於文件管理的重要性,所以FAT有一個備份,即在原FAT的後面再建一個同樣的FAT。初形成的FAT中所有項都標明為「未佔用」,但如果磁碟有局部損壞,那麼格式化程序會檢測出損壞的簇,在相應的項中標為「壞簇」,以後存文件時就不會再使用這個簇了。FAT的項數與硬碟上的總簇數相當,每一項佔用的位元組數也要與總簇數相適應,因為其中需要存放簇號。FAT的格式有多種,最為常見的是FAT16和FAT32。

4.DIR區

DIR(Directory)是根目錄區,緊接著第二FAT表(即備份的FAT表)之後,記錄著根目錄下每個文件(目錄)的起始單元,文件的屬性等。定位文件位置時,操作系統根據DIR中的起始單元,結合FAT表就可以知道文件在硬碟中的具體位置和大小了。

5.數據(DATA)區

數據區是真正意義上的數據存儲的地方,位於DIR區之後,占據硬碟上的大部分數據空間。

磁碟的文件系統
經常聽高手們說到FAT16、FAT32、NTFS等名詞,朋友們可能隱約知道這是文件系統的意思。可是,究竟這么多文件系統分別代表什麼含義呢?今天,我們就一起來學習學習:

1.什麼是文件系統?
所謂文件系統,它是操作系統中藉以組織、存儲和命名文件的結構。磁碟或分區和它所包括的文件系統的不同是很重要的,大部分應用程序都基於文件系統進行操作,在不同種文件系統上是不能工作的。

2.文件系統大家族
常用的文件系統有很多,MS-DOS和Windows 3.x使用FAT16文件系統,默認情況下Windows 98也使用FAT16,Windows 98和Me可以同時支持FAT16、FAT32兩種文件系統,Windows NT則支持FAT16、NTFS兩種文件系統,Windows 2000可以支持FAT16、FAT32、NTFS三種文件系統,Linux則可以支持多種文件系統,如FAT16、FAT32、NTFS、Minix、ext、ext2、xiafs、HPFS、VFAT等,不過Linux一般都使用ext2文件系統。下面,筆者就簡要介紹這些文件系統的有關情況:

(1)FAT16
FAT的全稱是「File Allocation Table(文件分配表系統)」,最早於1982年開始應用於MS-DOS中。FAT文件系統主要的優點就是它可以允許多種操作系統訪問,如MS-DOS、Windows 3.x、Windows 9x、Windows NT和OS/2等。這一文件系統在使用時遵循8.3命名規則(即文件名最多為8個字元,擴展名為3個字元)。

(2)VFAT
VFAT是「擴展文件分配表系統」的意思,主要應用於在Windows 95中。它對FAT16文件系統進行擴展,並提供支持長文件名,文件名可長達255個字元,VFAT仍保留有擴展名,而且支持文件日期和時間屬性,為每個文件保留了文件創建日期/時間、文件最近被修改的日期/時間和文件最近被打開的日期/時間這三個日期/時間。

(3)FAT32
FAT32主要應用於Windows 98系統,它可以增強磁碟性能並增加可用磁碟空間。因為與FAT16相比,它的一個簇的大小要比FAT16小很多,所以可以節省磁碟空間。而且它支持2G以上的分區大小。朋友們從附表中可以看出FAT16與FAT32的一不同。

(4)HPFS
高性能文件系統。OS/2的高性能文件系統(HPFS)主要克服了FAT文件系統不適合於高檔操作系統這一缺點,HPFS支持長文件名,比FAT文件系統有更強的糾錯能力。Windows NT也支持HPFS,使得從OS/2到Windows NT的過渡更為容易。HPFS和NTFS有包括長文件名在內的許多相同特性,但使用可靠性較差。

(5)NTFS
NTFS是專用於Windows NT/2000操作系統的高級文件系統,它支持文件系統故障恢復,尤其是大存儲媒體、長文件名。NTFS的主要弱點是它只能被Windows NT/2000所識別,雖然它可以讀取FAT文件系統和HPFS文件系統的文件,但其文件卻不能被FAT文件系統和HPFS文件系統所存取,因此兼容性方面比較成問題。

ext2
這是Linux中使用最多的一種文件系統,因為它是專門為Linux設計,擁有最快的速度和最小的CPU佔用率。ext2既可以用於標準的塊設備(如硬碟),也被應用在軟盤等移動存儲設備上。現在已經有新一代的Linux文件系統如SGI公司的XFS、ReiserFS、ext3文件系統等出現。

Ⅷ 數據在硬碟上的存在形式

你需要的資料大概需要至少100本辭海那麼厚的書來說明,全能解釋清楚的大概需要四到六個博士,精通化學/物理/機械/材料/電子電路/數學...
這里簡單白話一下.
首先打開這個貼作為參考
<硬碟垂直記錄技術>
http://storage.52hardware.com/hd/labs/200802/2533545.html
現在的磁碟都是溫徹斯特式,設計原理是這樣的,人為的把碟片附上塗層使之具有磁記錄能力,然後,通過磁碟的轉動產生邏輯上的條狀記錄區,通過磁頭的左右擺動可選擇讀寫這些條狀記錄.從原理上說與老式的唱片機(留聲機/黑膠唱機)是一致的.這些條狀區域內被分割成數個小區域,磁頭對這些小區域進行局部的磁化使之產生定向的磁場,以此保留數據,讀取的時候就是根據這些小磁體的磁性指向作為依據的.那是非常非常小的一個磁體.1G的數據不是1個數據,不是一次寫成,而是1024*1024*1024個這樣的小磁體記錄的總和.
關於信息記錄,電的指揮,可以這樣理解,假設你把房間的燈打開,也就是切換了一個開關的狀態,此時,燈的狀態就改變,以此,遠方的朋友可以根據燈的狀態得到你(開/關)的信息,也可以用莫爾斯電碼傳遞所有復雜的信息,計算機就是這樣通過無限細分,最終把信息做成二進制進行處理的,電控也是一部分應用.
磁碟上的信息記錄類似書籍,有目錄和內容組成,刪除數據的時候,通常只是在內容的第一位改寫一下,做一個E5的刪除標志,此後文件系統便不再將這條內容作為目錄內容顯示出來.而真實的刪除,只需要將存儲這段數據的那些小磁體統統寫成一致的或者亂七八糟的數據就行了,目的是讓原始材料不能讀出.
小磁體掉電後會保持數據,就同卡帶的磁條一樣,隨時間會慢慢的減弱磁性,不過這段時間足夠的長了,在這段期間內你可以轉移數據重新存儲.這些小磁體質量也不完全一樣,有些會在使用中損壞,有些會自行損壞,所以具體存儲多久是不一定的,磁碟的機械結構也和自行車一樣,用久了會壞.
讀過初中應該懂得電動機的道理,一個線圈加鐵棒能產生一個方向的力,三個角度的力足夠啟動和保持電動機運轉,通過一大堆三極體的調度,能夠產生電刷一樣原理的線圈供電/磁場效果,電控的電機就是這個原理.基本的操作都來源於三極體的開關特性,而基本的原理都來自於偉大的腦袋.
沒有憑空誕生的軟體,只要是專用的有用的,都是有意為之的,(這也是病毒製造者該見一殺一的原因),程序/軟體就是根據程序員構思讓機器運作的規則,而且是硬性規則,只有編不好的規則沒有"錯誤"的規則.
你所看到的圖片,最基本的來說,點陣圖的,程序根據圖片文件存儲的信息確定圖的長/寬/色彩位數等信息,然後將存儲的每個信息轉化成顯卡可以理解的信號,顯卡指揮Ramdac將這些特定信號轉換成模擬信號的無數個顏色/亮度強度傳輸給顯示器,顯示器把這些信號放大,通過電子槍按時間調度逐行的打在熒光屏上(液晶的是把信號傳給每個小格子的三極體激發,或者傳遞給液晶層改變電場/液晶方向,轉向光線攔截光線),最終顯示給人看.而動畫和電影原理一致,就是不斷的把"下一幅"圖片貼在原來的位置替換掉,通過高速的替換欺騙人的視覺,產生連續的感覺.
聲音和圖片異曲同工.經過固定規則的信號逆轉之後,產生"波形"文件,然後通過專用設備"音效卡"來把波形轉換成一系列的電強度信號,出音效卡進入功放機之後把這些信號轉換成大功率的電流,驅動耳機/音箱.
每個細節都不是憑空誕生的,實際上不僅僅是"不憑空",而是即使有意去做也要經歷無數次的失敗才得以成功.
你要了解一些原理上的東西,最好學一下編程,基本上編程剛入門就能理解以上提到的東西了.
面對金字塔,最好不要去想像"哦,就那個誰那個誰一下子把它弄出來的",還是從第一塊2.5噸的石頭研究.

Ⅸ java怎樣把一個byte數組保存成圖片到硬碟上

java將byte數組轉換成圖片,可以File和IO操作來完成,實例如下:

//byte數組到圖片到硬碟上
publicvoidbyte2image(byte[]data,Stringpath){
if(data.length<3||path.equals(""))return;//判斷輸入的byte是否為空
try{
=newFileImageOutputStream(newFile(path));//打開輸入流
imageOutput.write(data,0,data.length);//將byte寫入硬碟
imageOutput.close();
System.out.println("MakePicturesuccess,Pleasefindimagein"+path);
}catch(Exceptionex){
System.out.println("Exception:"+ex);
ex.printStackTrace();
}
}