深入剖析硬盤(pán)數(shù)據(jù)部分結(jié)構(gòu)
一塊硬盤(pán)最重要的兩部分就是存儲(chǔ)介質(zhì)和電路板了,存儲(chǔ)介質(zhì)又叫做硬盤(pán)數(shù)據(jù)部分。硬盤(pán)數(shù)據(jù)部分又分為五個(gè)區(qū),為了讓大家更直觀地了解硬盤(pán),筆者分析了一下這五個(gè)區(qū)所起的作用。
硬盤(pán)上的數(shù)據(jù)按照其不同的特點(diǎn)和作用大致可分為5部分:MBR區(qū)、DBR區(qū)、FAT區(qū)、DIR區(qū)和DATA區(qū)。
(1)MBR區(qū)
MBR(Main Boot Record),按其字面上的理解即為主引導(dǎo)記錄區(qū),位于整個(gè)硬盤(pán)的0磁道0柱面1扇區(qū)。不過(guò),在總共512字節(jié)的主引導(dǎo)扇區(qū)中,MBR只占用了其中的446個(gè)字節(jié)(偏移0--偏移1BDH),另外的64個(gè)字節(jié)(偏移1BEH--偏移1FDH)交給了DPT(Disk Partition Table硬盤(pán)分區(qū)表)(見(jiàn)下表),最后兩個(gè)字節(jié)"55,AA"(偏移1FEH- 偏移1FFH)是分區(qū)的結(jié)束標(biāo)志。這個(gè)整體構(gòu)成了硬盤(pán)的主引導(dǎo)扇區(qū)。
主引導(dǎo)記錄中包含了硬盤(pán)的一系列參數(shù)和一段引導(dǎo)程序。其中的硬盤(pán)引導(dǎo)程序的主要作用是檢查分區(qū)表是否正確并且在系統(tǒng)硬件完成自檢以后引導(dǎo)具有激活標(biāo)志的分區(qū)上的操作系統(tǒng),并將控制權(quán)交給啟動(dòng)程序。MBR是由分區(qū)程序(如Fdisk.com)所產(chǎn)生的,它不依賴任何操作系統(tǒng),而且硬盤(pán)引導(dǎo)程序也是可以改變的,從而實(shí)現(xiàn)多系統(tǒng)共存。
偏移 長(zhǎng)度 所表達(dá)的意義
0 字節(jié) 分區(qū)狀態(tài):如0-->非活動(dòng)分區(qū)
80--> 活動(dòng)分區(qū)
1 字節(jié) 該分區(qū)起始頭(HEAD)
2 字 該分區(qū)起始扇區(qū)和起始柱面
4 字節(jié) 該分區(qū)類型:如82--> Linux Native分區(qū)
83--> Linux Swap 分區(qū)
5 字節(jié) 該分區(qū)終止頭(HEAD)
6 字 該分區(qū)終止扇區(qū)和終止柱面
8 雙字 該分區(qū)起始絕對(duì)分區(qū)
C 雙字 該分區(qū)扇區(qū)數(shù)
下面,我們以一個(gè)實(shí)例讓大家更直觀地來(lái)了解主引導(dǎo)記錄:
例:80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00
在這里我們可以看到,最前面的"80"是一個(gè)分區(qū)的激活標(biāo)志,表示系統(tǒng)可引導(dǎo);"01 01 00"表示分區(qū)開(kāi)始的磁頭號(hào)為01,開(kāi)始的扇區(qū)號(hào)為01,開(kāi)始的柱面號(hào)為00;"0B"表示分區(qū)的系統(tǒng)類型是FAT32,其他比較常用的有04(FAT16)、07(NTFS);"FE BF FC"表示分區(qū)結(jié)束的磁頭號(hào)為254,分區(qū)結(jié)束的扇區(qū)號(hào)為63、分區(qū)結(jié)束的柱面號(hào)為764;"3F 00 00 00"表示首扇區(qū)的相對(duì)扇區(qū)號(hào)為63;"7E 86 BB 00"表示總扇區(qū)數(shù)為12289622。
(2)DBR區(qū)
DBR(Dos Boot Record)是操作系統(tǒng)引導(dǎo)記錄區(qū)的意思。它通常位于硬盤(pán)的0磁道1柱面1扇區(qū),是操作系統(tǒng)可以直接訪問(wèn)的第一個(gè)扇區(qū),它包括一個(gè)引導(dǎo)程序和一個(gè)被稱為BPB(Bios Parameter Block)的本分區(qū)參數(shù)記錄表。引導(dǎo)程序的主要任務(wù)是當(dāng)MBR將系統(tǒng)控制權(quán)交給它時(shí),判斷本分區(qū)跟目錄前兩個(gè)文件是不是操作系統(tǒng)的引導(dǎo)文件(以DOS為例,即是Io.sys和Msdos.sys)。如果確定存在,就把其讀入內(nèi)存,并把控制權(quán) 交給該文件。BPB參數(shù)塊記錄著本分區(qū)的起始扇區(qū)、結(jié)束扇區(qū)、文件存儲(chǔ)格式、硬盤(pán)介質(zhì)描述符、根目錄大小、FAT個(gè)數(shù),分配單元的大小等重要參數(shù)。
(3)FAT區(qū)
在DBR之后的是我們比較熟悉的FAT(File Allocation Table文件分配表)區(qū)。在解釋文件分配表的概念之前,我們先來(lái)談?wù)劥兀╟luster)的概念。文件占用磁盤(pán)空間時(shí),基本單位不是字節(jié)而是簇。簇的大小與磁盤(pán)的規(guī)格有關(guān),一般情況下,軟盤(pán)每簇是1個(gè)扇區(qū),硬盤(pán)每簇的扇區(qū)數(shù)與硬盤(pán)的總?cè)萘看笮∮嘘P(guān),可能是4、8、16、32、64……
通過(guò)上文我們已經(jīng)知道,同一個(gè)文件的數(shù)據(jù)并不一定完整地存放在磁盤(pán)的一個(gè)連續(xù)的區(qū)域內(nèi),而往往會(huì)分成若干段,像一條鏈子一樣存放。這種存儲(chǔ)方式稱為文件的鏈?zhǔn)酱鎯?chǔ)。硬盤(pán)上的文件常常要進(jìn)行創(chuàng)建、刪除、增長(zhǎng)、縮短等操作。這樣操作做的越多,盤(pán)上的文件就可能被分得越零碎(每段至少是1簇)。但是,由于硬盤(pán)上保存著段與段之間的連接信息(即FAT),操作系統(tǒng)在讀取文件時(shí),總是能夠準(zhǔn)確地找到各段的位置并正確讀出。不過(guò),這種以簇為單位的存儲(chǔ)法也是有其缺陷的。這主要表現(xiàn)在對(duì)空間的利用上。每個(gè)文件的最后一簇都有可能有未被完全利用的空間(稱為尾簇空間)。一般來(lái)說(shuō),當(dāng)文件個(gè)數(shù)比較多時(shí),平均每個(gè)文件要浪費(fèi)半個(gè)簇的空間。 好了,我們言歸正傳,為了實(shí)現(xiàn)文件的鏈?zhǔn)酱鎯?chǔ),硬盤(pán)上必須準(zhǔn)確地記錄哪些簇已經(jīng)被文件占用,還必須為每個(gè)已經(jīng)占用的簇指明存儲(chǔ)后繼內(nèi)容的下一個(gè)簇的簇號(hào),對(duì)一個(gè)文件的最后一簇,則要指明本簇?zé)o后繼簇。這些都是由FAT表來(lái)保存的,表中有很多表項(xiàng),每項(xiàng)記錄一個(gè)簇的信息。