硬盤存儲原理


 

轉自http://blog.sina.com.cn/s/blog_625985cb0100ymsr.html

硬盤是現在計算機上最常用的存儲器之一。我們都知道,計算機之所以神奇,是因為它具有高速分析處理數據的能力。而這些數據都以文件的形式存儲在硬盤里。不過,計算機可不像人那么聰明。在讀取相應的文件時,你必須要給出相應的規則。這就是分區概念。分區從實質上說就是對硬盤的一種格式化。當我們創建分區時,就已經設置好了硬盤的各項物理參數,指定了硬盤主引導記錄(即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文件系統等出現。 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM