2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

FAT文件系統(tǒng)組織結(jié)構(gòu)

 動(dòng)靜極致 2019-06-14

硬盤(pán)的DOS管理結(jié)構(gòu):

扇區(qū)=128*(2的N次方)

磁道=柱面

容量=磁頭×磁道×每道扇區(qū)×每扇區(qū)字節(jié)

   簇是DOS最小單位,。當(dāng)創(chuàng)建一個(gè)很小的文件時(shí),如是一個(gè)字節(jié),則它在磁盤(pán)上并不是只占一個(gè)字節(jié)的空間,而是占有整個(gè)一簇。DOS視不同的存儲(chǔ)介質(zhì)(如軟盤(pán),硬盤(pán)),不同容量的硬盤(pán),簇的大小也不一樣。簇的大小可在稱為磁盤(pán)參數(shù)塊(BPB)中獲取。簇的概念僅適用于數(shù)據(jù)區(qū)。簇是DOS進(jìn)行分配的最小單位,不同的存儲(chǔ)介質(zhì),不同容量的硬盤(pán),不同的DOS版本,簇的大小也不一樣。

物理扇區(qū)編號(hào)(柱面/磁頭/扇區(qū),起始柱面0,起始磁頭0,起始扇區(qū)1,bios內(nèi)置中斷程序)

絕對(duì)扇區(qū)編號(hào)(數(shù)字,起始扇區(qū)為0,普通人的編法)

DOS扇區(qū)編號(hào)(數(shù)字,起始扇區(qū)為0,操作系統(tǒng)采用)

邏輯扇區(qū)(同上)

絕對(duì)扇區(qū)以及相對(duì)扇區(qū)又叫DOS扇區(qū)只是一個(gè)數(shù)字

使用相對(duì)扇區(qū)編號(hào)時(shí),DOS是從柱面0磁頭1扇區(qū)1開(kāi)始,柱面0磁頭0扇區(qū)1-柱面0磁頭0扇區(qū)17(設(shè)每磁道17個(gè)扇區(qū))沒(méi)有相對(duì)扇區(qū)又叫DOS扇區(qū)編號(hào),只能調(diào)用BIOS訪問(wèn)。

第一個(gè)DOS扇區(qū)編號(hào)為0,該磁道上剩余的扇區(qū)編號(hào)為1到16(設(shè)每磁道17個(gè)扇區(qū)),然后是磁頭號(hào)為2,柱面為0的17個(gè)扇區(qū),形成的DOS扇區(qū)號(hào)從17到33。直到該柱面的所有磁頭。然后再移到柱面1,磁頭1,扇區(qū)1繼續(xù)進(jìn)行DOS扇區(qū)的編號(hào),即按扇區(qū)號(hào),磁頭號(hào),柱面號(hào)(磁道號(hào))增長(zhǎng)的順序連續(xù)地分配DOS扇區(qū)號(hào)。

DH:第一個(gè)DOS扇區(qū)的磁頭號(hào)

DC:第一個(gè)DOS扇區(qū)的柱面號(hào)

DS:第一個(gè)DOS扇區(qū)的扇區(qū)號(hào)

NS:每磁道扇區(qū)數(shù)

NH:磁盤(pán)總的磁頭數(shù)

則某扇區(qū)(柱面C磁頭H扇區(qū)S)的相對(duì)扇區(qū)號(hào)RS為:

RS=(C-DC)×NH×NS+NS(H-DH)+(S-DS)

若已知RS,DC,DH,DS,NS和NH則

S=(RS MOD NS)+DS

H=((RS DIV NS)MOD NH)+DH

C=((RS DIV NS)DIV NH)+DC

DOS磁盤(pán)區(qū)域的劃分

  高級(jí)格式化好的硬盤(pán),整個(gè)磁盤(pán)按所記錄數(shù)據(jù)的作用不同可分為主引導(dǎo)記錄(MBR:Main Boot Record),Dos引導(dǎo)記錄(DBR:Dos Boot Record),文件分配表(FAT:File Assign Table),根目錄(BD:Boot Directory)和數(shù)據(jù)區(qū)。前5個(gè)重要信息在磁盤(pán)的外磁道上,原因是外圈周長(zhǎng)總大于內(nèi)圈周長(zhǎng),也即外圈存儲(chǔ)密度要小些,可靠性高些。

MBR位于硬盤(pán)第一個(gè)物理扇區(qū)(絕對(duì)扇區(qū))柱面0,磁頭0,扇區(qū)1處。由于DOS是由柱面0,磁頭1,扇區(qū)1開(kāi)始,故MBR不屬于DOS扇區(qū),DOS不能直接訪問(wèn)。MBR中包含硬盤(pán)的主引導(dǎo)程序pre-boot和硬盤(pán)分區(qū)表dpt和55aa組成。分區(qū)表有4個(gè)分區(qū)記錄區(qū)。記錄區(qū)就是記錄有關(guān)分區(qū)信息的一張表。它從主引導(dǎo)記錄偏移地址01BEH處連續(xù)存放,每個(gè)分區(qū)記錄區(qū)占16個(gè)字節(jié)。

硬盤(pán)的0柱面、0磁頭、1扇區(qū)稱為主引導(dǎo)記錄MBR,該記錄占用512個(gè)字節(jié),它用于硬盤(pán)啟動(dòng)時(shí)將系統(tǒng)控制權(quán)轉(zhuǎn)給用戶指定的的某個(gè)活動(dòng)主分區(qū)。

MBR的內(nèi)容是在硬盤(pán)分區(qū)時(shí)由分區(qū)軟件(如FDISK)寫(xiě)入該扇區(qū)的,MBR不屬于任何一個(gè)操作系統(tǒng),不隨操作系統(tǒng)的不同而不同,即使不同,MBR也不會(huì)摻雜操作系統(tǒng)的性質(zhì),具有公共引導(dǎo)的特性。但安裝某些多重引導(dǎo)功能的軟件或LINUX的LILO時(shí)有可能改寫(xiě)它;它先于所有的操作系統(tǒng)被調(diào)入內(nèi)存并發(fā)揮作用,然后才將控制權(quán)交給活動(dòng)主分區(qū)內(nèi)的操作系統(tǒng)。

MBR由三部分構(gòu)成:

1.主引導(dǎo)程序pre-boot代碼,占446字節(jié)

2.硬盤(pán)分區(qū)表DPT,占64字節(jié)

3.主引導(dǎo)扇區(qū)結(jié)束標(biāo)志AA55H占2個(gè)字節(jié)

1.主引導(dǎo)程序代碼從偏移0000H開(kāi)始到偏移01BDH結(jié)束的446字節(jié);主引導(dǎo)程序代碼包括一小段執(zhí)行代碼。啟動(dòng)PC 機(jī)時(shí),系統(tǒng)首先對(duì)硬件設(shè)備進(jìn)行測(cè)試,成功后進(jìn)入自舉程序INT 19H;然后讀系統(tǒng)磁盤(pán)0柱面、0磁頭、1扇區(qū)的主引導(dǎo)扇區(qū)MBR的內(nèi)容到內(nèi)存指定單元0:7C00 首地址開(kāi)始的區(qū)域,并執(zhí)行MBR程序段。

主引導(dǎo)代碼實(shí)現(xiàn)下列功能:

  1.掃描分區(qū)表查找活動(dòng)分區(qū);

  2.尋找活動(dòng)分區(qū)的起始扇區(qū);

  3.將活動(dòng)分區(qū)的引導(dǎo)扇區(qū)讀到內(nèi)存;

  4.執(zhí)行引導(dǎo)扇區(qū)的運(yùn)行代碼。

  如果主引導(dǎo)代碼未完成這些功能,系統(tǒng)顯示下列錯(cuò)誤信息:

  Invalid partition table

  Error loading operating system

  Missing operating system

二、硬盤(pán)分區(qū)表DPT是從偏移01BEH開(kāi)始到偏移01FDH結(jié)束的64字節(jié);

硬盤(pán)分區(qū)表分為四小部分,每一小部分表示一個(gè)分區(qū)的信息,占16字節(jié)。在這里我們可以看出,硬盤(pán)的總分區(qū)數(shù)為什么不能大于4。其中可激活分區(qū)數(shù)不得大于3,擴(kuò)展分區(qū)數(shù)不得大于1,當(dāng)前活動(dòng)分區(qū)數(shù)必須小于等于1。分區(qū)表的每一分區(qū)的第0個(gè)字節(jié)是自舉標(biāo)志,其值為80H時(shí),表示該分區(qū)是當(dāng)前活動(dòng)分區(qū),可引導(dǎo),其值為00H時(shí),表示該分區(qū)不可引導(dǎo)。第4字節(jié)是分區(qū)類型。每一分區(qū)的第1至第3字節(jié)是該分區(qū)起始地址。其中第1字節(jié)為起始磁頭號(hào)(面號(hào));第2字節(jié)的低6位為起始扇區(qū)號(hào),高2位則為起始柱面號(hào)的高2位;第3字節(jié)為起始柱面號(hào)的低8位。因此,分區(qū)的起始柱面號(hào)是用10位二進(jìn)制數(shù)表示的,最大值為2^10 = 1024,因邏輯柱面號(hào)從0開(kāi)始計(jì),故柱面號(hào)的顯示最大值為1023。同理,用6位二進(jìn)制數(shù)表示的扇區(qū)號(hào)不會(huì)超過(guò)2^6 - 1 = 63;用8位二進(jìn)制數(shù)表示的磁頭號(hào)不會(huì)超過(guò)2^8 - 1 = 255。每一分區(qū)的第5至第7字節(jié)表示分區(qū)的終止地址,各字節(jié)的釋義與第1至第3字節(jié)相同。這里我們假設(shè)一種極端的情況:如果讓第5至第7字節(jié)的所有二進(jìn)制位都取1,就獲得了柱面號(hào)、磁頭號(hào)和扇區(qū)號(hào)所能表示的最大值,從而得到最大絕對(duì)扇區(qū)號(hào)為:1024 × 256 × 63 = 16,515,072這個(gè)扇區(qū)之前的所有物理扇區(qū)所包含的字節(jié)數(shù)為:16,515,072 × 512Bytes ≈ 8.46×109Bytes = 8.46GB。

  由此可知硬盤(pán)的容量設(shè)計(jì)為什么會(huì)有8.4GB這一檔,分區(qū)表每一分區(qū)的第1至第3字節(jié)以及第5至第7字節(jié)的數(shù)據(jù)結(jié)構(gòu)已經(jīng)不能滿足大于8.46GB的大容量硬盤(pán)的需要。考慮到向下兼容的需要,業(yè)界并未對(duì)從DOS時(shí)代就如此定義的硬盤(pán)分區(qū)表提出更改意見(jiàn),否則改動(dòng)所牽涉的面太廣,會(huì)造成硬件和軟件發(fā)展上的一個(gè)斷層,幾乎無(wú)法被業(yè)界和用戶所接受。硬盤(pán)廠商解決這一問(wèn)題的方法是定義了新的INT 13服務(wù)擴(kuò)展標(biāo)準(zhǔn)。新的INT 13服務(wù)擴(kuò)展標(biāo)準(zhǔn)不再使用操作系統(tǒng)的寄存器傳遞硬盤(pán)的尋址參數(shù),而使用存儲(chǔ)在操作系統(tǒng)內(nèi)存里的地址包。地址包里保存的是64位LBA地址,如果硬盤(pán)支持LBA尋址,就把低28位直接傳遞給ATA接口,如果不支持,操作系統(tǒng)就先把LBA地址轉(zhuǎn)換為CHS地址,再傳遞給ATA接口。通過(guò)這種方式,能實(shí)現(xiàn)在ATA總線基礎(chǔ)上CHS尋址的最大容量是136.9 GB,而LBA尋址的最大容量是137.4GB。新的硬盤(pán)傳輸規(guī)范ATA 133規(guī)范又把28位可用的寄存器空間提高到48位,從而支持更大的硬盤(pán)。分區(qū)表每一分區(qū)的第8至第11字節(jié)表示該分區(qū)的起始相對(duì)扇區(qū)數(shù)(即該扇區(qū)之前的絕對(duì)扇區(qū)個(gè)數(shù)),高位在右,低位在左;第12至第15字節(jié)表示該分區(qū)實(shí)際占用的扇區(qū)數(shù),也是高位在右,低位在左;分區(qū)表這類數(shù)據(jù)結(jié)構(gòu)的表達(dá)方式與機(jī)器中數(shù)據(jù)的實(shí)際存儲(chǔ)方式在順序上是一致的,即低位在前,高位在后。因此,在從16進(jìn)制向十進(jìn)制作數(shù)值轉(zhuǎn)換時(shí),需將字段中的16進(jìn)制數(shù)以字節(jié)為單位翻轉(zhuǎn)調(diào)位,用4個(gè)字節(jié)可以表示最大2^32個(gè)扇區(qū),即2TB=2048GB。系統(tǒng)在分區(qū)時(shí),各分區(qū)都不允許跨柱面,即均以柱面為單位,這就是通常所說(shuō)的分區(qū)粒度。在未超過(guò)8.4GB的分區(qū)上,C/H/S的表示方法和扇區(qū)數(shù)的表示方法所表示的分區(qū)大小是一致的。超過(guò)8.4GB的/H/S/C一般填充為FEH/FFH/FFH,即C/H/S所能表示的最大值;有時(shí)候也會(huì)用柱面對(duì)1024的模來(lái)填充。不過(guò)這幾個(gè)字節(jié)是什么其實(shí)都無(wú)關(guān)緊要了。擴(kuò)展分區(qū)中的每個(gè)邏輯驅(qū)動(dòng)器都存在一個(gè)類似于MBR的擴(kuò)展引導(dǎo)記錄(Extended Boot Record,EBR)。擴(kuò)展引導(dǎo)記錄包括一個(gè)擴(kuò)展分區(qū)表和扇區(qū)結(jié)束標(biāo)志55AA。一個(gè)邏輯驅(qū)動(dòng)器中的引導(dǎo)扇區(qū)一般位于相對(duì)扇區(qū)32或63。如果磁盤(pán)上沒(méi)有擴(kuò)展分區(qū),那么就不會(huì)有擴(kuò)展引導(dǎo)記錄和邏輯驅(qū)動(dòng)器。第一個(gè)邏輯驅(qū)動(dòng)器的擴(kuò)展分區(qū)表中的第一項(xiàng)指向它自身的引導(dǎo)扇區(qū);第二項(xiàng)指向下一個(gè)邏輯驅(qū)動(dòng)器的EBR,如果不存在進(jìn)一步的邏輯驅(qū)動(dòng)器,第二項(xiàng)就不會(huì)使用,而被記錄成一系列零。如果有附加的邏輯驅(qū)動(dòng)器,那么第二個(gè)邏輯驅(qū)動(dòng)器的擴(kuò)展分區(qū)表的第一項(xiàng)會(huì)指向它本身的引導(dǎo)扇區(qū),第二個(gè)邏輯驅(qū)動(dòng)器的擴(kuò)展分區(qū)表的第二項(xiàng)指向下一個(gè)邏輯驅(qū)動(dòng)器的EBR。擴(kuò)展分區(qū)表的第三項(xiàng)和第四項(xiàng)永遠(yuǎn)都不會(huì)被使用。擴(kuò)展分區(qū)表項(xiàng)中的相對(duì)扇區(qū)數(shù)是從擴(kuò)展分區(qū)開(kāi)始的扇區(qū)到該邏輯驅(qū)動(dòng)器中第一個(gè)扇區(qū)的扇區(qū)數(shù);占用的扇區(qū)數(shù)是指組成該邏輯驅(qū)動(dòng)器的扇區(qū)數(shù)目。

    有時(shí)候在磁盤(pán)的末尾會(huì)有剩余空間,由于分區(qū)是以1柱面的容量為分區(qū)粒度的,那么如果磁盤(pán)總空間不是整數(shù)個(gè)柱面的話,不夠一個(gè)柱面的剩下的空間就是剩余空間了,這部分空間并不參與分區(qū),所以一般無(wú)法利用。

三、主引導(dǎo)扇區(qū)的最后兩個(gè)字節(jié)(偏移1FEH和偏移1FFH),其值為AA55H,它表示該扇區(qū)是個(gè)有效的引導(dǎo)扇區(qū),可用來(lái)引導(dǎo)硬磁盤(pán)系統(tǒng)。

分區(qū)引導(dǎo)扇區(qū)DBR(DOS BOOT RECORD)是由FORMAT高級(jí)格式化命令寫(xiě)到該扇區(qū)的內(nèi)容;DBR是由硬盤(pán)的MBR裝載的程序段。DBR裝入內(nèi)存后,即開(kāi)始執(zhí)行該引導(dǎo)程序段,其主要功能是完成操作系統(tǒng)的自舉并將控制權(quán)交給操作系統(tǒng)。每個(gè)分區(qū)都有引導(dǎo)扇區(qū),但只有被設(shè)為活動(dòng)分區(qū)的DBR才會(huì)被MBR裝入內(nèi)存運(yùn)行。

DBR主要由下列幾個(gè)部分組成:

  1.跳轉(zhuǎn)指令,占用3個(gè)字節(jié)的跳轉(zhuǎn)指令將跳轉(zhuǎn)至引導(dǎo)代碼。

  2.廠商標(biāo)識(shí)和DOS版本號(hào),該部分總共占用8個(gè)字節(jié)。

  3.BPB(BIOS Parameter Block, BIOS 參數(shù)塊)。

  4.操作系統(tǒng)引導(dǎo)程序。

  5.結(jié)束標(biāo)志字,結(jié)束標(biāo)志占用2個(gè)字節(jié),其值為AA55

  DBR中的內(nèi)容除了第5部分結(jié)束標(biāo)志字固定不變之外,其余4個(gè)部分都是不確定的,其內(nèi)容將隨格式化所用的操作系統(tǒng)版本及硬盤(pán)的邏輯盤(pán)參數(shù)的變化而變化。

  一、FAT32的分區(qū)引導(dǎo)扇區(qū)

  為了使加載文件的操作更加靈活,加上FAT32文件系統(tǒng)采用"活動(dòng)"的FDT表,,同時(shí)考慮到引導(dǎo)程序的代碼量和為今后發(fā)展保留適當(dāng)?shù)挠嗔?,F(xiàn)AT32文件系統(tǒng)分區(qū)引導(dǎo)扇區(qū)占據(jù)了6個(gè)扇區(qū),只有前3個(gè)扇區(qū)作為系統(tǒng)的分區(qū)引導(dǎo)扇區(qū),其余3個(gè)扇區(qū)保留暫未使用。分區(qū)引導(dǎo)扇區(qū)對(duì)于操作系統(tǒng)的啟動(dòng)和磁盤(pán)文件的訪問(wèn)具有至關(guān)重要的作用;引導(dǎo)程序代碼的損壞將導(dǎo)致操作系統(tǒng)不能正常啟動(dòng),磁盤(pán)讀寫(xiě)參數(shù)的破壞將造成存儲(chǔ)在磁盤(pán)上的文件不能正常讀寫(xiě)。

  由于分區(qū)引導(dǎo)扇區(qū)的重要性,F(xiàn)AT32文件系統(tǒng)在在第一個(gè)分區(qū)引導(dǎo)扇區(qū)的6個(gè)扇區(qū)后的6個(gè)扇區(qū)里保留了分區(qū)引導(dǎo)扇區(qū)的備份,在啟動(dòng)時(shí)操作系統(tǒng)可以對(duì)兩份引導(dǎo)扇區(qū)進(jìn)行比較,以便選擇正確的引導(dǎo)扇區(qū)來(lái)引導(dǎo)系統(tǒng)。由于在磁盤(pán)正常工作過(guò)程中系統(tǒng)不再對(duì)引導(dǎo)扇區(qū)的程序和數(shù)據(jù)進(jìn)行修改,因此備份的分區(qū)引導(dǎo)扇區(qū)損壞的可能性非常小。

分區(qū)引導(dǎo)扇區(qū)的第一個(gè)扇區(qū)的前三個(gè)字節(jié)是一條跳轉(zhuǎn)指令,然后是8個(gè)字節(jié)長(zhǎng)的OEM ID(廠家標(biāo)識(shí))和版本號(hào),其后是簡(jiǎn)稱為BPB的BIOS參數(shù)塊(BIOS Parameter Block)。對(duì)于FAT32其各部分的意義如下表:

偏移地址 長(zhǎng)度(字節(jié)) 意義

0BH 2  每個(gè)扇區(qū)的字節(jié)數(shù),常取512。

0DH 1  每簇扇區(qū)數(shù);可以是1, 2, 4, 8, 16, 32, 64, 128,取決于文件系統(tǒng)格式及分區(qū)大小。

0EH 2  為操作系統(tǒng)保留的扇區(qū)數(shù);FAT32時(shí)多為十進(jìn)制的32,F(xiàn)AT16時(shí)為1,有的格式化工具可能將它設(shè)為36或63。

10H 1  FAT表的個(gè)數(shù);常取2。

11H

 2

 在FAT16中存放系統(tǒng)根目錄中允許登記的目錄項(xiàng)個(gè)數(shù),F(xiàn)AT32中用于標(biāo)注系統(tǒng)采用的是否為FAT32文件系統(tǒng)。其值為0000H表示磁盤(pán)使用FAT32文件系統(tǒng)。

13H

 2

 值為00H,為保持兼容性而保留,未使用。

15H

 1

 磁盤(pán)介質(zhì)標(biāo)志,硬盤(pán)為F8。

16H

 2

 未使用,值為00H。

18H

 2

 每個(gè)磁道的扇區(qū)數(shù)。

1AH

 2

 磁盤(pán)的磁頭數(shù)。

1CH

 4

 分區(qū)前隱藏扇區(qū)的個(gè)數(shù)。

20H

 4

 邏輯磁盤(pán)中的扇區(qū)總數(shù)。

24H

 4

 每個(gè)FAT表所占的扇區(qū)數(shù)。

28H

 2

 FAT表鏡像標(biāo)志,值為0表示系統(tǒng)保存2份互為備份的FAT表,值為1表示系統(tǒng)僅保存1份FAT表。

2AH

 2

 文件系統(tǒng)的主次版本(保留)。

2CH

 4

 磁盤(pán)根目錄的起始簇號(hào)。

30H

 2

 文件系統(tǒng)參數(shù)的扇區(qū)號(hào),通常位于引導(dǎo)扇區(qū)的下一個(gè)扇區(qū)。

32H

 2

 備份分區(qū)引導(dǎo)扇區(qū)的邏輯扇區(qū)號(hào)。

34H

 12

 保留,未使用。

40H

 1

 中斷13呼叫的預(yù)設(shè)值,指明訪問(wèn)的設(shè)備;軟盤(pán)為00H,硬盤(pán)為80H。

41H

 1

 用于中斷13呼叫。

42H

 1

 磁盤(pán)讀寫(xiě)參數(shù)擴(kuò)展標(biāo)志,其值為29H。

43H

 4

 格式化時(shí)隨機(jī)產(chǎn)生的磁盤(pán)卷的序列號(hào)。

47H

 11

 格式化時(shí)人工輸入的磁盤(pán)卷標(biāo)號(hào)。

52H

 8

 文件系統(tǒng)的標(biāo)識(shí)號(hào)(FAT32)。

  從偏移0x5A開(kāi)始的數(shù)據(jù)為操作系統(tǒng)引導(dǎo)代碼。這是由偏移0x00開(kāi)始的跳轉(zhuǎn)指令所指向的,此段指令在不同的操作系統(tǒng)上和不同的引導(dǎo)方式上,其內(nèi)容也是不同的。

  扇區(qū)的最后兩個(gè)字節(jié)存儲(chǔ)值為0x55AA的DBR有效標(biāo)志,對(duì)于其他的取值,系統(tǒng)將不會(huì)執(zhí)行DBR相關(guān)指令。

分區(qū)引導(dǎo)扇區(qū)的第2個(gè)扇區(qū)作為文件系統(tǒng)相關(guān)參數(shù)存儲(chǔ)標(biāo)識(shí)扇區(qū)(圖七),

除了保存扇區(qū)的標(biāo)識(shí)信息(RraA(00H)和rrAa(1E4H))外,還可能在偏移地址1E8H處存儲(chǔ)了文件系統(tǒng)有關(guān)的信息。其中扇區(qū)偏移地址1E8H~1EBH的4個(gè)字節(jié)存儲(chǔ)了邏輯磁盤(pán)中未使用的簇?cái)?shù),通常用于快速計(jì)算邏輯磁盤(pán)的剩余空間(典型的操作是在資源管理器狀態(tài)欄上列出的"可用磁盤(pán)空間"參數(shù)),而1ECH~1EFH 4個(gè)字節(jié)給出了邏輯盤(pán)中下一個(gè)可以分配給文件使用的空閑簇的簇號(hào),這樣操作系統(tǒng)可以不訪問(wèn)FAT表就直接獲得磁盤(pán)剩余空間和可以分配的簇號(hào)。

  分區(qū)引導(dǎo)扇區(qū)的第3個(gè)扇區(qū)則存儲(chǔ)了引導(dǎo)扇區(qū)的后一部分引導(dǎo)系統(tǒng)的程序代碼(圖八)。

二、NTFS的分區(qū)引導(dǎo)扇區(qū)

  對(duì)于NTFS分區(qū)來(lái)說(shuō),分區(qū)引導(dǎo)扇區(qū)DBR只占用一個(gè)扇區(qū)(圖五),并且在該分區(qū)的最后一個(gè)扇區(qū)做了備份;NTFS的引導(dǎo)扇區(qū)也是完成引導(dǎo)和定義分區(qū)參數(shù),NTFS分區(qū)的引導(dǎo)扇區(qū)不是分區(qū)的充分條件,它要求必須MFT中的系統(tǒng)記錄如$MFT等正常該分區(qū)才能正常訪問(wèn)。其BPB參數(shù)如下表所示:  偏移地址

 長(zhǎng)度(字節(jié))

 常用值

 意  義

0x0B

 2

 0x0002

 每扇區(qū)字節(jié)數(shù)

0x0D

 1

 0x08

 每簇扇區(qū)數(shù)

0x0E

 2

 0x0000

 保留扇區(qū)

0x10

 3

 0x000000

 總為0

0x13

 2

 0x0000

 NTFS未使用,為0

0x15

 1

 0xF8

 介質(zhì)描述

0x16

 2

 0x0000

 總為0

0x18

 2

 0x3F00

 每磁道扇區(qū)數(shù)

0x1A

 2

 0xFF00

 磁頭數(shù)

0x1C

 4

 0x3F000000

 隱藏扇區(qū)數(shù)

0x20

 4

 0x00000000

 NTFS未使用,為0

0x28

 8

 0x4AF57F0000000000

 扇區(qū)總數(shù)

0x30

 8

 0x0400000000000000

 $MFT的邏輯簇號(hào)

0x38

 8

 0x54FF070000000000

 $MFT Mirr的邏輯簇號(hào)

0x40

 4

 0xF6000000

 每MFT記錄簇?cái)?shù)

0x44

 4

 0x01000000

 每索引簇?cái)?shù)

0x48

 8

 0x14A51B74C91B741C

 卷標(biāo)

0x50

 4

 0x00000000

 檢驗(yàn)和

[ 本帖最后由 伐木者 于 2007-6-19 20:11 編輯 ]

附件: 您所在的用戶組無(wú)法下載或查看附件本文來(lái)自:創(chuàng)幻論壇 http://www.

UID55456帖子9783 精華45 積分47222 威望0 金幣0  閱讀權(quán)限18 性別男 來(lái)自有樹(shù)砍的地方 在線時(shí)間8494 小時(shí) 注冊(cè)時(shí)間2004-5-16 最后登錄2010-4-5 查看詳細(xì)資料

 TOP

【推薦】權(quán)威專家推薦漲停股票請(qǐng)點(diǎn)擊獲取

伐木者

魏武王常所用論壇

超級(jí)版主

電腦家園區(qū)總版主

積分47222 威望0  注冊(cè)時(shí)間2004-5-16     

發(fā)短消息 加為好友  沙發(fā) 大 中 小 發(fā)表于 2007-6-17 20:55 只看該作者

How It Works --- Master Boot Record (主啟動(dòng)記錄)

本文是介紹MBR的反編譯程序的。MBR是放在硬盤(pán)的0柱面,0磁頭(head),1扇區(qū)的

那一段區(qū)。MBR是由FDISK程序創(chuàng)建的。所有操作系統(tǒng)的FDISK程序都會(huì)創(chuàng)建類似的MBR

記錄。MBR是多個(gè)分區(qū)的前提,每個(gè)MBR中包括了四個(gè)分區(qū)表記錄。在您的計(jì)算機(jī)加電

之后,INT19被調(diào)用了。一般來(lái)說(shuō),INT19先從第一個(gè)軟盤(pán)驅(qū)動(dòng)器中讀啟動(dòng)扇區(qū)記錄。

如果在軟盤(pán)中找到了啟動(dòng)的扇區(qū),那么這個(gè)扇區(qū)的數(shù)據(jù)就被讀入到內(nèi)存的0000:7c00

地址上,INT19也跳到了這個(gè)地址上。但是,如果沒(méi)有在軟盤(pán)中找到這個(gè)扇區(qū)的話,INT

19就從第一個(gè)硬盤(pán)中去讀。同樣,如果成功的話,也會(huì)把MBR導(dǎo)入到相同的內(nèi)存地址

0000:7c00,INT19也會(huì)跳這個(gè)地址。MBR中包括的一段小程序是定出在分區(qū)表中的活動(dòng)分

區(qū)。這樣的活動(dòng)分區(qū)找到之,那個(gè)分區(qū)的啟動(dòng)扇區(qū)也被讀入到0000:7c00地址,MBR程序

也轉(zhuǎn)移到了這個(gè)地址。每一個(gè)操作系統(tǒng)都有固定的啟動(dòng)扇區(qū)的格式。在啟動(dòng)扇區(qū)里的程

序要能定出操作系統(tǒng)啟動(dòng)程序的位置(或是核心本身,或者是一個(gè)啟動(dòng)管理器),然后

將它讀入內(nèi)存。

另:在Ctrl-Alt-Del鍵被按下時(shí),INT19也會(huì)被調(diào)用。在大多數(shù)系統(tǒng)中,Ctrl-Alt-Del三?nbsp;

鍵同時(shí)按下表示熱啟動(dòng)您的計(jì)算機(jī),回到INT19調(diào)用前的狀態(tài)。

=====

數(shù)據(jù)存放的位置:

   MBR程序放在偏移為0000的位置。

   MBR消息放在偏移為008b的位置。

  分區(qū)表放在偏移為00be的位置。

  簽名放在偏移為00fe的位置。

關(guān)于誰(shuí)干什么事的總結(jié):

   如果一個(gè)活動(dòng)分區(qū)找到了,這個(gè)分區(qū)的啟動(dòng)數(shù)據(jù)被讀入到0000:7c00的位置,MBR程

序也跳到0000:7c00的位置。這段程序找到指向分區(qū)表的入口,入口描述的是這段分區(qū)是

怎樣被啟動(dòng)的。啟動(dòng)程序用這些數(shù)據(jù)來(lái)決定用來(lái)啟動(dòng)的驅(qū)動(dòng)器和這個(gè)驅(qū)動(dòng)器分區(qū)在硬盤(pán)上

的位置。

    如果沒(méi)有找到這樣的活動(dòng)分區(qū)入口,ROM BASIC會(huì)轉(zhuǎn)入INT 18的調(diào)用。所有其他的錯(cuò)

誤導(dǎo)致系統(tǒng)的掛起,可以看HANG的標(biāo)記。

注意(非常之重要):

 ?。保┗顒?dòng)分區(qū)入口的第一個(gè)字節(jié)的內(nèi)容是80h。在INT13被調(diào)用之前,這個(gè)字節(jié)被導(dǎo)

入到DL寄存器中。當(dāng)INT13被調(diào)用時(shí),DL表示的是BIOS的設(shè)備號(hào)碼。因?yàn)檫@個(gè)原因,由MBR

程序讀的啟動(dòng)扇區(qū)只能從BIOS設(shè)備號(hào)碼為80的硬盤(pán)中讀入。這便是為什么不能從任何硬盤(pán)

啟動(dòng)的原因。?nbsp;

  2)MBR程序是用基于INT 13h (ah=02h)的中斷的CHS來(lái)讀取活動(dòng)分區(qū)的啟動(dòng)扇區(qū)位置

的。活動(dòng)分區(qū)的啟動(dòng)扇區(qū)內(nèi)的位置是在分區(qū)表內(nèi)用CHS格式表明的。如果這個(gè)驅(qū)動(dòng)器小于

528M,這個(gè)CHS一定要是(L-CHS,見(jiàn)BIOS TYPES文檔)。在LBA中沒(méi)有任何地址是有用的。

(另一個(gè)LBA不能解決>528M問(wèn)題的原因)   這點(diǎn)大家別信,西西。

====

   這是一張整個(gè)MBR記錄的表(hex 和ascii格式)

OFFSET 0 1 2 3  4 5 6 7  8 9 A B  C D E F  *0123456789ABCDEF*

000000 fa33c08e d0bc007c 8bf45007 501ffbfc *.3.....|..P.P...*

000010 bf0006b9 0001f2a5 ea1d0600 00bebe07 *................*

000020 b304803c 80740e80 3c00751c 83c610fe *...<.t..<.u.....*

000030 cb75efcd 188b148b 4c028bee 83c610fe *.u......L.......*

000040 cb741a80 3c0074f4 be8b06ac 3c00740b *.t..<.t.....<.t.*

000050 56bb0700 b40ecd10 5eebf0eb febf0500 *V.......^.......*

000060 bb007cb8 010257cd 135f730c 33c0cd13 *..|...W.._s.3...*

000070 4f75edbe a306ebd3 bec206bf fe7d813d *Ou...........}.=*

000080 55aa75c7 8bf5ea00 7c000049 6e76616c *U.u.....|..Inval*

000090 69642070 61727469 74696f6e 20746162 *id partition tab*

0000a0 6c650045 72726f72 206c6f61 64696e67 *le.Error loading*

0000b0 206f7065 72617469 6e672073 79737465 * operating syste*

0000c0 6d004d69 7373696e 67206f70 65726174 *m.Missing operat*

0000d0 696e6720 73797374 656d0000 00000000 *ing system......*

0000e0 00000000 00000000 00000000 00000000 *................*

0000f0 TO 0001af SAME AS ABOVE

0001b0 00000000 00000000 00000000 00008001 *................*

0001c0 0100060d fef83e00 00000678 0d000000 *......>....x....*

0001d0 00000000 00000000 00000000 00000000 *................*

0001e0 00000000 00000000 00000000 00000000 *................*

0001f0 00000000 00000000 00000000 000055aa *..............U.*

====

  這是MBR的反編譯程序:

  這個(gè)扇區(qū)被導(dǎo)入到內(nèi)存的0000:7c00位置,但是它又馬上將自己重定位到0000:0060的

位?nbsp;

BEGIN:   #    NOW AT 0000:7C00, RELOCATE

0000:7C00 FA            CLI                     #禁止中斷

0000:7C01 33C0          XOR     AX,AX           #設(shè)置堆棧段地址為0000

0000:7C03 8ED0          MOV     SS,AX

0000:7C05 BC007C        MOV     SP,7C00         #設(shè)置堆棧指針為7c00

0000:7C08 8BF4          MOV     SI,SP           #SI = 7c00

0000:7C0A 50            PUSH    AX

0000:7C0B 07            POP     ES              #ES = 0000:7c00

0000:7C0C 50            PUSH    AX

0000:7C0D 1F            POP     DS              #DS = 0000:7c00

0000:7C0E FB            STI                     #開(kāi)中斷

0000:7C0F FC            CLD                     #清除方向

0000:7C10 BF0006        MOV     DI,0600         #DI = 0600

0000:7C13 B90001        MOV     CX,0100         #移動(dòng) 256 個(gè)word (512 bytes)

0000:7C16 F2            REPNZ                   #把 MBR 從 0000:7c00

0000:7C17 A5            MOVSW                   #移動(dòng)到0000:0600

0000:7C18 EA1D060000    JMP     0000:061D       #跳至NEW_LOCATION

NEW_LOCATION:# NOW AT 0000:0600

0000:061D BEBE07      MOV     SI,07BE           #指向入口的第一個(gè)字節(jié)

0000:0620 B304        MOV     BL,04             #有4個(gè)入口

SEARCH_LOOP1: # 查找活動(dòng)分區(qū)

0000:0622 803C80      CMP     BYTE PTR [SI],80  #是不是活動(dòng)分區(qū)?

0000:0625 740E        JZ      FOUND_ACTIVE      #是,棧指針指向7c00

0000:0627 803C00      CMP     BYTE PTR [SI],00  #是不是不活動(dòng)分區(qū)?

0000:062A 751C        JNZ     NOT_ACTIVE        #跳轉(zhuǎn)至NOT_ACTIVE

0000:062C 83C610      ADD     SI,+10            #增量表指針加16

0000:062F FECB        DEC     BL                #減少計(jì)數(shù)

0000:0631 75EF        JNZ     SEARCH_LOOP1      #循環(huán)

0000:0633 CD18        INT     18                #跳至 ROM BASIC

FOUND_ACTIVE: # 找到了活動(dòng)分區(qū)

0000:0635 8B14        MOV     DX,[SI]           #設(shè)置DH/DL為INT 13

0000:0637 8B4C02      MOV     CX,[SI+02]        #設(shè)置CH/CL為INT 13

0000:063A 8BEE        MOV     BP,SI             #保存表指針

SEARCH_LOOP2: # 確定是一個(gè)活動(dòng)分區(qū)

0000:063C 83C610      ADD     SI,+10            #增量表指針加16

0000:063F FECB        DEC     BL                #減少計(jì)數(shù)

0000:0641 741A        JZ      READ_BOOT         #如果表結(jié)束,跳轉(zhuǎn)

0000:0643 803C00      CMP     BYTE PTR [SI],00  #是不是非活動(dòng)分區(qū)

0000:0646 74F4        JZ      SEARCH_LOOP2      #是,循環(huán)

NOT_ACTIVE:   #  多于一個(gè)活動(dòng)分區(qū)

0000:0648 BE8B06      MOV     SI,068B           #顯示 "Invld prttn tbl"

DISPLAY_MSG:  #  顯示消息循環(huán)

0000:064B AC          LODSB                     #取得消息的字符

0000:064C 3C00        CMP     AL,00             #判斷消息的結(jié)尾

0000:064E 740B        JZ      HANG              #

0000:0650 56          PUSH    SI                #保存SI

0000:0651 BB0700      MOV     BX,0007           #屏幕屬性

0000:0654 B40E        MOV     AH,0E             #顯示一個(gè)字符

0000:0656 CD10        INT     10

0000:0658 5E          POP     SI                #恢復(fù)SI

0000:0659 EBF0        JMP     DISPLAY_MSG       #循環(huán)

HANG:         #掛起系統(tǒng)

0000:065B EBFE        JMP     HANG              #停在這兒

READ_BOOT:   #讀活動(dòng)分區(qū)的數(shù)據(jù)

0000:065D BF0500      MOV     DI,0005        #INT 13 的嘗試次數(shù)

INT13RTRY:   #INT 13的重試循環(huán)

0000:0660 BB007C      MOV     BX,7C00

0000:0663 B80102      MOV     AX,0201           #讀入一個(gè)扇區(qū)

0000:0666 57          PUSH    DI                #保存DI

0000:0667 CD13        INT     13                #把扇區(qū)讀入0000:7c00

0000:0669 5F          POP     DI                #重存DI

0000:066A 730C        JNB     INT13OK           #沒(méi)有INT 13,跳轉(zhuǎn)

0000:066C 33C0        XOR     AX,AX             #調(diào)用INT 13 ,硬盤(pán)重置

0000:066E CD13        INT     13

0000:0670 4F          DEC     DI                #DI--

0000:0671 75ED        JNZ     INT13RTRY         #如果非零,重試

0000:0673 BEA306      MOV     SI,06A3           #顯示"Errr ldng systm"

0000:0676 EBD3        JMP     DISPLAY_MSG       #跳轉(zhuǎn)至顯示循環(huán)

INT13OK: #INT 13 出錯(cuò)

0000:0678 BEC206      MOV     SI,06C2            #"missing op sys"

0000:067B BFFE7D      MOV     DI,7DFE            #指向簽名

0000:067E 813D55AA    CMP     WORD PTR [DI],AA55 #簽名是否正確?

0000:0682 75C7        JNZ     DISPLAY_MSG        #不正確,跳至顯示消息循環(huán)

0000:0684 8BF5        MOV     SI,BP              #設(shè)置SI

0000:0686 EA007C0000  JMP     0000:7C00          #跳轉(zhuǎn)至啟動(dòng)扇區(qū),SI指向分區(qū)

表入

?nbsp;

#這兒是消息

0000:0680 ........ ........ ......49 6e76616c *           Inval*

0000:0690 69642070 61727469 74696f6e 20746162 *id partition tab*

0000:06a0 6c650045 72726f72 206c6f61 64696e67 *le.Error loading*

0000:06b0 206f7065 72617469 6e672073 79737465 * operating syste*

0000:06c0 6d004d69 7373696e 67206f70 65726174 *m.Missing operat*

0000:06d0 696e6720 73797374 656d00.. ........ *ing system.     *

#無(wú)用的數(shù)據(jù)

0000:06d0 ........ ........ ......00 00000000 *           .....*

0000:06e0 00000000 00000000 00000000 00000000 *................*

0000:06f0 00000000 00000000 00000000 00000000 *................*

0000:0700 00000000 00000000 00000000 00000000 *................*

0000:0710 00000000 00000000 00000000 00000000 *................*

0000:0720 00000000 00000000 00000000 00000000 *................*

0000:0730 00000000 00000000 00000000 00000000 *................*

0000:0740 00000000 00000000 00000000 00000000 *................*

0000:0750 00000000 00000000 00000000 00000000 *................*

0000:0760 00000000 00000000 00000000 00000000 *................*

0000:0770 00000000 00000000 00000000 00000000 *................*

0000:0780 00000000 00000000 00000000 00000000 *................*

0000:0790 00000000 00000000 00000000 00000000 *................*

0000:07a0 00000000 00000000 00000000 00000000 *................*

0000:07b0 00000000 00000000 00000000 0000.... *............    *

#分區(qū)表從0000:07be開(kāi)始。每一個(gè)分區(qū)表入口是16個(gè)字節(jié)這個(gè)表定義了一個(gè)單個(gè)的主分

區(qū)并

是活動(dòng)分區(qū)。

0000:07b0 ........ ........ ........ ....8001 *            ....*

0000:07c0 0100060d fef83e00 00000678 0d000000 *......>....x....*

0000:07d0 00000000 00000000 00000000 00000000 *................*

0000:07e0 00000000 00000000 00000000 00000000 *................*

0000:07f0 00000000 00000000 00000000 0000.... *............    *

#最后兩個(gè)字節(jié)一定包括了55aah的數(shù)據(jù)。

0000:07f0 ........ ........ ........ ....55aa *..............U.*

本文來(lái)自:創(chuàng)幻論壇 http://www.

分區(qū)表的格式

偏移    意義   占用字節(jié)數(shù)

   00 引導(dǎo)指示符 1B

   01 分區(qū)引導(dǎo)記錄的磁頭號(hào) 1B

   02 分區(qū)引導(dǎo)記錄的扇區(qū)和柱面號(hào) 2B

   04 系統(tǒng)指示符 1B

   05 分區(qū)結(jié)束磁頭號(hào) 1B

   06 分區(qū)結(jié)束扇區(qū)和柱面號(hào) 2B

   08 分區(qū)前面的扇區(qū)數(shù) 4B

   0C 分區(qū)中總的扇區(qū)數(shù) 4B

4個(gè)分區(qū)中只能有1個(gè)活躍分區(qū),即C盤(pán)。標(biāo)志符是80H在分區(qū)表的第一個(gè)字節(jié)處。若是00H則表示非活躍分區(qū)。

例如:

80 01 01 00 0B FE 3F 81 3F 00 00 00 C3 DD 1F 00

00  00 01 82 05 FE BF 0C 02 DE 1F 00 0E 90 61 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

要點(diǎn):(1)MBR位于硬盤(pán)第一個(gè)物理扇區(qū)柱面0,磁頭0,扇區(qū)1處。不屬于DOS扇區(qū),

  ?。?)主引導(dǎo)記錄分為硬盤(pán)的主引導(dǎo)程序和硬盤(pán)分區(qū)表。

6.DBR

  DBR位于柱面0,磁頭1,扇區(qū)1,即邏輯扇區(qū)0。DBR分為兩部分:DOS引導(dǎo)程序和BPB(BIOS參數(shù)塊)。其中DOS引導(dǎo)程序完成DOS系統(tǒng)文件(IO.SYS,MSDOS.SYS)的定位與裝載,而B(niǎo)PB用來(lái)描述本DOS分區(qū)的磁盤(pán)信息,BPB位于DBR偏移0BH處,共13字節(jié)。它包含邏輯格式化時(shí)使用的參數(shù),可供DOS計(jì)算磁盤(pán)上的文件分配表,目錄區(qū)和數(shù)據(jù)區(qū)的起始地址,BPB之后三個(gè)字提供物理格式化(低格)時(shí)采用的一些參數(shù)。引導(dǎo)程序或設(shè)備驅(qū)動(dòng)程序根據(jù)這些信息將磁盤(pán)邏輯地址(DOS扇區(qū)號(hào))轉(zhuǎn)換成物理地址(絕對(duì)扇區(qū)號(hào))。BPB格式

序號(hào) 偏移地址 意義

1 03H-0AH OEM號(hào)

2 0BH-0CH 每扇區(qū)字節(jié)數(shù)

3 0DH 每簇扇區(qū)數(shù)

4 0EH-0FH 保留扇區(qū)數(shù)

5 10H FAT備份數(shù)

6 11H-12H 根目錄項(xiàng)數(shù)

7 13H-14H 磁盤(pán)總扇區(qū)數(shù)

8 15H 描述介質(zhì)

9 16H-17H 每FAT扇區(qū)數(shù)

10 18H-19H 每磁道扇區(qū)數(shù)

11 1AH-1BH 磁頭數(shù)

12 1CH-1FH 特殊隱含扇區(qū)數(shù)

13 20H-23H 總扇區(qū)數(shù)

14 24H-25H 物理驅(qū)動(dòng)器數(shù)

15 26H 擴(kuò)展引導(dǎo)簽證

16 27H-2AH 卷系列號(hào)

17 2BH-35H 卷標(biāo)號(hào)

18 36H-3DH 文件系統(tǒng)號(hào)

DOS引導(dǎo)記錄公式:

文件分配表≡保留扇區(qū)數(shù)

根目錄≡保留扇區(qū)數(shù)+FAT的個(gè)數(shù)×每個(gè)FAT的扇區(qū)數(shù)

數(shù)據(jù)區(qū)≡根目錄邏輯扇區(qū)號(hào)+(32×根目錄中目錄項(xiàng)數(shù)+(每扇區(qū)字節(jié)數(shù)-1))DIV每扇區(qū)字節(jié)數(shù)

絕對(duì)扇區(qū)號(hào)≡邏輯扇區(qū)號(hào)+隱含扇區(qū)數(shù)

扇區(qū)號(hào)≡(絕對(duì)扇區(qū)號(hào)MOD每磁道扇區(qū)數(shù))+1

磁頭號(hào)≡(絕對(duì)扇區(qū)號(hào)DIV每磁道扇區(qū)數(shù))MOD磁頭數(shù)

磁道號(hào)≡(絕對(duì)扇區(qū)號(hào)DIV每磁道扇區(qū)數(shù))DIV磁頭數(shù)

要點(diǎn):(1)DBR位于柱面0,磁頭1,扇區(qū)1,其邏輯扇區(qū)號(hào)為0

  ?。?)DBR包含DOS引導(dǎo)程序和BPB。

  ?。?)BPB十分重要,由此可算出邏輯地址與物理地址。

7.文件分配表

  文件分配表是DOS文件組織結(jié)構(gòu)的主要組成部分。我們知道DOS進(jìn)行分配的最基本單位是簇。文件分配表是反映硬盤(pán)上所有簇的使用情況,通過(guò)查文件分配表可以得知任一簇的使用情況。DOS在給一個(gè)文件分配空間時(shí)總先掃描FAT,找到第一個(gè)可用簇,將該空間分配給文件,并將該簇的簇號(hào)填到目錄的相應(yīng)段內(nèi)。即形成了“簇號(hào)鏈”。FAT就是記錄文件簇號(hào)的一張表。FAT的頭兩個(gè)域?yàn)楸A粲?,?duì)FAT12來(lái)說(shuō)是3個(gè)字節(jié),F(xiàn)AT來(lái)說(shuō)是4個(gè)字節(jié)。其中頭一個(gè)字節(jié)是用來(lái)描述介質(zhì)的,其余字節(jié)為FFH 。介質(zhì)格式與BPB相同。

第一個(gè)字節(jié)的8位意義:

7 6 5 4 3?。病。?0

└─────-┘ │ │ │┌0非雙面

置1 │ │ └┤

│ │ └1雙面

│ │┌0不是8扇區(qū)

│ └┤

│ └1是8扇區(qū)

│┌0不是可換的

└┤

└1是可換的

FAT結(jié)構(gòu)含義

FAT12 FAT16 意義

000H 0000H 可用

FF0H-FF6H FFF0H-FFF6H 保留

FF7H FFF7H

FF8H-FFFH FFF8H-FFFFH 文件最后一個(gè)簇

×××H ××××H 文件下一個(gè)簇

對(duì)于FAT16,簇號(hào)×2作偏移地址,從FAT中取出一字即為FAT中的域。

邏輯扇區(qū)號(hào)=數(shù)據(jù)區(qū)起始邏輯扇區(qū)號(hào)+(簇號(hào)-2)×每簇扇區(qū)數(shù)

簇號(hào)=(邏輯扇區(qū)號(hào)-數(shù)據(jù)區(qū)起始邏輯扇區(qū)號(hào))DIV每簇扇區(qū)數(shù)+2

要點(diǎn):(1)FAT反映硬盤(pán)上所有簇的使用情況,它記錄了文件在硬盤(pán)中具體位置(簇)。

  ?。?)文件第一個(gè)簇號(hào)(在目錄表中)和FAT的該文件的簇號(hào)串起來(lái)形成文件的“簇號(hào)鏈”,恢復(fù)被破壞的文件就是根

據(jù)這條鏈。

  ?。?)由簇號(hào)可算邏輯扇區(qū)號(hào),反之,由邏輯扇區(qū)號(hào)也可以算出簇號(hào),公式如上。

  ?。?)FAT位于DBR之后,其DOS扇區(qū)號(hào)從1開(kāi)始。

8.文件目錄

  文件目錄是DOS文件組織結(jié)構(gòu)的又一重要組成部分。文件目錄分為兩類:根目錄,子目錄。根目錄有一個(gè),子目錄可以有多個(gè)。子目錄下還可以有子目錄,從而形成“樹(shù)狀”的文件目錄結(jié)構(gòu)。子目錄其實(shí)是一種特殊的文件,DOS為目錄項(xiàng)分配32字節(jié)。目錄項(xiàng)分為三類:文件,子目錄(其內(nèi)容是許多目錄項(xiàng)),卷標(biāo)(只能在根目錄,只有一個(gè)。目錄項(xiàng)中有文件(或子目錄,或卷標(biāo))的名字,擴(kuò)展名,屬性,生成或最后修改日期,時(shí)間,開(kāi)始簇號(hào),及文件大小。

目錄項(xiàng)的格式

字節(jié)偏移 意義 占字節(jié)數(shù)

00H 文件名 8B

08H 擴(kuò)展名 3B

0BH 文件屬性 1B

0CH 保留 10B

16H 時(shí)間 2B

18H 日期 2B

1AH 開(kāi)始簇號(hào) 2B

1CH 文件長(zhǎng)度 4B

目錄項(xiàng)文件名區(qū)域中第一個(gè)字節(jié)還有特殊的意義:00H代表未使用

05H代表實(shí)際名為E5H

EBH代表此文件已被刪除

目錄項(xiàng)屬性區(qū)域的這個(gè)字節(jié)各個(gè)位的意義如下: 7 6?。怠。础。场。病。薄。?

                      未 修 修 子 卷 系 隱 只

                      用 改 改 目 標(biāo) 統(tǒng) 藏 讀

                        標(biāo) 標(biāo) 錄   屬 屬 屬

                        志 志     性 性 性

注意:WINDOWS的長(zhǎng)文件名使用了上表中所說(shuō)的“保留”這片區(qū)域。

要點(diǎn):(1)文件目錄是記錄所有文件,子目錄名,擴(kuò)展名屬性,建立或刪除最后修改日期。文件開(kāi)始簇號(hào)及文件長(zhǎng)度的一張

      登記表.

   (2)DOS中DIR列出的內(nèi)容訓(xùn)是根據(jù)文件目錄表得到的。

  ?。?)文件起始簇號(hào)填在文件目錄中,其余簇都填在FAT中上一簇的位置上。

9.物理驅(qū)動(dòng)器與邏輯驅(qū)動(dòng)器

  物理驅(qū)動(dòng)器指實(shí)際安裝的驅(qū)動(dòng)器。

  邏輯驅(qū)動(dòng)器是對(duì)物理驅(qū)動(dòng)器格式化后產(chǎn)生的。

要點(diǎn):同上。

瀏覽:552  [打印  返回  關(guān)閉]

·下一篇:[06-08-28] 挽救硬盤(pán)的10個(gè)方法(維護(hù)硬盤(pán)故障)

·上一篇:[06-08-28] 進(jìn)行電腦維修的幾個(gè)簡(jiǎn)單步驟

相關(guān)文章:[知識(shí),扇區(qū),磁道]

·◎硬盤(pán)基本知識(shí)(磁道、扇區(qū)、柱面、磁頭數(shù)、簇、MBR、DBR)

·◎主板電容小知識(shí)

·◎注冊(cè)表基本知識(shí)

·◎受用一生的電腦知識(shí)

·◎Linux 發(fā)行版和安裝的基本知識(shí)

分類欄目

·硬盤(pán)

·CPU

·主板

·綜合

·內(nèi)存

·顯示器

·鼠標(biāo)鍵盤(pán)

·打印機(jī)

熱門(mén)標(biāo)簽

·方法(102)

·故障(99)

·技巧(66)

·XP(61)

·病毒(60)

·所有標(biāo)簽

點(diǎn)擊排行

·硬盤(pán)基本知識(shí)..

·如何給硬盤(pán)加..

·硬盤(pán)拷貝三法

·延長(zhǎng)壽命:讓硬..

·減少硬盤(pán)出故..

 

 當(dāng)硬盤(pán)受到外部強(qiáng)磁體、強(qiáng)磁場(chǎng)的影響,或因長(zhǎng)期使用,硬盤(pán)盤(pán)片上由低級(jí)格式化劃分出來(lái)的扇區(qū)格式磁性記錄部分丟失,從而出現(xiàn)大量“壞扇區(qū)”時(shí),可以通過(guò)低級(jí)格式化來(lái)重新劃分“扇區(qū)”。但是前提是硬盤(pán)的盤(pán)片沒(méi)有受到物理性劃傷。硬盤(pán)低級(jí)格式化的功用硬盤(pán)低格格式化是對(duì)硬盤(pán)最徹底的初始化方式,經(jīng)過(guò)低格后的硬盤(pán),原來(lái)保護(hù)的數(shù)據(jù)將全部丟失,所以一般來(lái)說(shuō)低格硬盤(pán)是非常不可取的,只有非常必要的時(shí)候才能低格硬盤(pán)。當(dāng)硬盤(pán)出現(xiàn)某種類型的壞道時(shí),使用低級(jí)格式化能起到一定的緩解或者屏蔽作用。

  邏輯壞道相對(duì)比較容易解決,它指硬盤(pán)在寫(xiě)入時(shí)受到意外干擾,造成有ECC錯(cuò)誤。從過(guò)程上講,它是指硬盤(pán)在寫(xiě)入數(shù)據(jù)的時(shí)候,會(huì)用ECC的邏輯重新組合數(shù)據(jù),一般操作系統(tǒng)要寫(xiě)入512個(gè)字節(jié),但實(shí)際上硬盤(pán)會(huì)多寫(xiě)幾十個(gè)字節(jié),而且所有的這些字節(jié)都要用ECC進(jìn)行校驗(yàn)編碼,如果原始字節(jié)算出的ECC校正碼和讀出字節(jié)算出的ECC不同,這樣就會(huì)產(chǎn)生ECC錯(cuò)誤,這就是所謂的邏輯壞道產(chǎn)生原因。

物理壞道,磁盤(pán)表面物理?yè)p壞就是硬性的,這是無(wú)法修復(fù)的。而由于外界影響而造成數(shù)據(jù)的寫(xiě)入錯(cuò)誤時(shí),系統(tǒng)也會(huì)認(rèn)為是物理壞道,而這種物理壞道是可以使用一些硬盤(pán)工具(例如硬盤(pán)廠商提供的檢測(cè)修復(fù)軟件)來(lái)修復(fù),此外,對(duì)于微小的硬盤(pán)表面損傷,一些硬盤(pán)工具(例如西部數(shù)據(jù)的Data Lifeguard Tools)就可以重新定向到一個(gè)好的保留扇區(qū)來(lái)修正錯(cuò)誤。

對(duì)于硬盤(pán)上出現(xiàn)邏輯壞道或者軟性物理壞道,用戶可以試試使用低級(jí)格式化來(lái)達(dá)到屏蔽壞道的作用,但這里需要指出,屏蔽壞道并不等于消除壞道了,低格硬盤(pán)能把原來(lái)硬盤(pán)內(nèi)所有分區(qū)都刪除,但壞道卻依然存在,屏蔽只是將壞道隱藏起來(lái),不讓用戶在存儲(chǔ)數(shù)據(jù)時(shí)使用這些壞道,這樣能在一定程度上保證用戶數(shù)據(jù)的可靠性,但壞道卻會(huì)隨著硬盤(pán)分區(qū)、格式化次數(shù)的增長(zhǎng)而擴(kuò)散蔓延。

1、對(duì)扇區(qū)清零和重寫(xiě)校驗(yàn)值。低格過(guò)程中將每個(gè)扇區(qū)的所有字節(jié)全部置零,并將每個(gè)扇區(qū)的校驗(yàn)值也寫(xiě)回初始值,這樣可以將部分缺陷糾正過(guò)來(lái)。譬如,由于扇區(qū)數(shù)據(jù)與該扇區(qū)的校驗(yàn)值不對(duì)應(yīng),通常就被報(bào)告為校驗(yàn)錯(cuò)誤(ECC Error)。如果并非由于磁介質(zhì)損傷,清零后就很有可能將扇區(qū)數(shù)據(jù)與該扇區(qū)的校驗(yàn)值重新對(duì)應(yīng)起來(lái),而達(dá)到“修復(fù)”該扇區(qū)的功效。這是每種低格工具和每種硬盤(pán)的低格過(guò)程最基本的操作內(nèi)容,同時(shí)這也是為什么通過(guò)低格能“修復(fù)大量壞道”的基本原因。另外,DM中的Zero Fill(清零)操作與IBM DFT工具中的Erase操作,也有同樣的功效。

2、對(duì)扇區(qū)進(jìn)行讀寫(xiě)檢查,并嘗試替換缺陷扇區(qū)。有些低格工具會(huì)對(duì)每個(gè)扇區(qū)進(jìn)行讀寫(xiě)檢查,如果發(fā)現(xiàn)在讀過(guò)程或?qū)戇^(guò)程出錯(cuò),就認(rèn)為該扇區(qū)為缺陷扇區(qū)。然后,調(diào)用通用的自動(dòng)替換扇區(qū)(Automatic reallocation sector)指令,嘗試對(duì)該扇區(qū)進(jìn)行替換,也可以達(dá)到“修復(fù)”的功效。

3、對(duì)扇區(qū)的標(biāo)識(shí)信息重寫(xiě)。在多年以前使用的老式硬盤(pán)(如采用ST506接口的硬盤(pán)),需要在低格過(guò)程中重寫(xiě)每個(gè)扇區(qū)的標(biāo)識(shí)(ID)信息和某些保留磁道的其他一些信息,當(dāng)時(shí)低格工具都必須有這樣的功能。但現(xiàn)在的硬盤(pán)結(jié)構(gòu)已經(jīng)大不一樣,如果再使用多年前的工具來(lái)做低格會(huì)導(dǎo)致許多令人痛苦的意外。難怪經(jīng)常有人在痛苦地高呼:“危險(xiǎn)!切勿低格硬盤(pán)!我的硬盤(pán)已經(jīng)毀于低格!”

4、對(duì)所有物理扇區(qū)進(jìn)行重新編號(hào)。編號(hào)的依據(jù)是P-list中的記錄及區(qū)段分配參數(shù)(該參數(shù)決定各個(gè)磁道劃分的扇區(qū)數(shù)),經(jīng)過(guò)編號(hào)后,每個(gè)扇區(qū)都分配到一個(gè)特定的標(biāo)識(shí)信息(ID)。編號(hào)時(shí),會(huì)自動(dòng)跳過(guò)P-list中所記錄的缺陷扇區(qū),使用戶無(wú)法訪問(wèn)到那些缺陷扇區(qū)(用戶不必在乎永遠(yuǎn)用不到的地方的好壞)。如果這個(gè)過(guò)程半途而廢,有可能導(dǎo)致部分甚至所有扇區(qū)被報(bào)告為標(biāo)識(shí)不對(duì)(Sector ID not found, IDNF)。要特別注意的是,這個(gè)編號(hào)過(guò)程是根據(jù)真正的物理參數(shù)來(lái)進(jìn)行的,如果某些低格工具按邏輯參數(shù)(以 16heads 63sector為最典型)來(lái)進(jìn)行低格,是不可能進(jìn)行這樣的操作。

5、寫(xiě)磁道伺服信息,對(duì)所有磁道進(jìn)行重新編號(hào)。有些硬盤(pán)允許將每個(gè)磁道的伺服信息重寫(xiě),并給磁道重新賦予一個(gè)編號(hào)。編號(hào)依據(jù)P-list或TS記錄來(lái)跳過(guò)缺陷磁道(defect track),使用戶無(wú)法訪問(wèn)(即永遠(yuǎn)不必使用)這些缺陷磁道。這個(gè)操作也是根據(jù)真正的物理參數(shù)來(lái)進(jìn)行。

6、寫(xiě)狀態(tài)參數(shù),并修改特定參數(shù)。有些硬盤(pán)會(huì)有一個(gè)狀態(tài)參數(shù),記錄著低格過(guò)程是否正常結(jié)束,如果不是正常結(jié)束低格,會(huì)導(dǎo)致整個(gè)硬盤(pán)拒絕讀寫(xiě)操作,這個(gè)參數(shù)以富士通IDE硬盤(pán)和希捷SCSI硬盤(pán)為典型。有些硬盤(pán)還可能根據(jù)低格過(guò)程的記錄改寫(xiě)某些參數(shù)。

我們經(jīng)常使用的DM中的Low level format命令進(jìn)行的低級(jí)格式化操作,主要進(jìn)行了第1條和第3條的操作。速度較快,極少損壞硬盤(pán),但修復(fù)效果不明顯。另外在Lformat工具中,進(jìn)行了前三項(xiàng)的操作。由于同時(shí)進(jìn)行了讀寫(xiě)檢查,操作速度較慢,可以替換部分缺陷扇區(qū)

  常見(jiàn)低格工具有l(wèi)format、DM及硬盤(pán)廠商們推出的各種硬盤(pán)工具等。

匯編語(yǔ)言低格,用Debug匯編語(yǔ)言進(jìn)行低級(jí)格式化

  低級(jí)格式化硬盤(pán)能完成銷毀硬盤(pán)內(nèi)的數(shù)據(jù),所以在操作前一定要謹(jǐn)慎。硬盤(pán)低格有許多方法,例如直接在CMOS中對(duì)硬盤(pán)進(jìn)行低格,或者使用匯編語(yǔ)言進(jìn)行硬盤(pán)低格。匯編是比較低級(jí)的一種編程語(yǔ)言,它能非常方便地直接操作硬件,而且運(yùn)行效率很高,如果軟件系統(tǒng)中需要直接操作硬件時(shí),經(jīng)常使用的就是匯編語(yǔ)言。使用匯編也可以對(duì)硬盤(pán)進(jìn)行低級(jí)格式化,它比DM等工具軟件顯得更為靈活,具體應(yīng)用時(shí)就是使用debug程序,而具體操作就是在debug環(huán)境下,調(diào)用存放在BIOS 中的低級(jí)格式化程序(CMOS中直接低格硬盤(pán)調(diào)用的也是此段低格程序)。實(shí)現(xiàn)方法通常有如下三種:

  (1)、直接調(diào)用BIOS ROM中的低格程序

  在很多計(jì)算機(jī)的BIOS ROM中存放著低格程序,存放地址從C8005H地址開(kāi)始,具體操作如下:

  A:\>Debug

  -G C800 :0005(這時(shí)屏幕顯示信息(不同版本的BIOS顯示的信息可能不同),回車后提示:)

  Current Interleave is 3 select new interleave or Return for current(這是要求用戶選擇交叉因子,按回車表示取默認(rèn)值3,也可輸入新的交叉因子值,硬盤(pán)的交叉因子一般是3,所以直接回車即可。屏幕接著提示:)

  Are you dynamically configuring the drive-answer YN t

  Press“Y”to begin formatting the drive C: with interleave 03(鍵入“Y”后開(kāi)始對(duì)硬盤(pán)進(jìn)行低格)

  Formatting ……(完成后詢問(wèn)是否處理壞磁道)

  Do you want to format bad track-answer YN?

  若沒(méi)有則用“N”回答。屏幕顯示:

  Format Successful,system will new restart,Insert Dos diskette indrive A:

  插入系統(tǒng)盤(pán)到A驅(qū)動(dòng)器,即可進(jìn)行分區(qū),高級(jí)格式化等操作來(lái)安裝系統(tǒng)了。

  (2)、通過(guò)調(diào)用INT 13H中斷的7號(hào)功能對(duì)硬盤(pán)進(jìn)行低格

  操作如下:

  A:\>DEBUG

  -A 100

  -XXXX:0100 MOV AX,0703;(交叉因子為3)

  -XXXX:0103 MOV CX,0001;(0磁道0扇區(qū)起)

  -XXXX:0106 MOV DX,0080;(C盤(pán)0磁道)

  -XXXX:0109 INT 13

  -XXXX:010B INT 3

  -XXXX:010D

  -G 100

  這樣硬盤(pán)就被低格了。

  (3)、調(diào)用INT 13H中斷的5號(hào)功能

  對(duì)硬盤(pán)調(diào)用INT 13H中斷的5號(hào)功能只低格0面0道1扇區(qū),而不必低格整個(gè)硬盤(pán),從而使低格在很短的時(shí)間內(nèi)完成。具體操作如下:

  ADEBUG

  -A 100

  -XXXX:0100 MOV AX,0500;(調(diào)用5號(hào)功能)

  -XXXX:0103 MOV BX,0180;(設(shè)置緩沖區(qū)地址)

  -XXXX:0106 MOV CX,0001;(0磁道1扇區(qū)起)

  -XXXX:0109 MOV DX,0080;(C盤(pán)0磁道)

  -XXXX:010B INT 13

  -XXXX:010D INT 3

  -E 0180 0 0 0002;(寫(xiě)入?yún)?shù))

  -G 100

DM低級(jí)格式化方法

  用DM進(jìn)行低級(jí)格式化

  DM的全名是Hard Disk Management Program,它能對(duì)硬盤(pán)進(jìn)行低級(jí)格式化、校驗(yàn)等管理工作,可以提高硬盤(pán)的使用效率??偟膩?lái)說(shuō),DM具有如下幾個(gè)功能:硬盤(pán)低級(jí)格式化、分區(qū)、高級(jí)格式化、硬盤(pán)參數(shù)配置及其它功能。

  在實(shí)際應(yīng)用時(shí),dm工具跟普通DOS命令(如fdisk或format)一樣,它的命令格式為:ADM [參數(shù)] 。其中的參數(shù)可取以下值:

  M DM軟件以手工方式進(jìn)入,如無(wú)該參數(shù),DM以自動(dòng)方式運(yùn)行,依次執(zhí)行INITIALIZE. PARTITIONG. PREPARAFION。

  C DM軟件以彩色方式執(zhí)行,即運(yùn)行于彩色顯示器上。

  P DM軟件以PCXT方式管理硬盤(pán)。

  A DM軟件以PCAT方式管理硬盤(pán)。

  2 DOS 2.XX版本方式。

  3 DOS 3.XX版本方式。

  4 DOS 4.XX版本方式(僅DM 5.01版有此參數(shù))。

  V DM運(yùn)行于可改變簇長(zhǎng)度、根目錄項(xiàng)方式。

  在實(shí)際使用中常用以下兩種方式啟動(dòng):

  1、ADM (自動(dòng)方式。初始化硬盤(pán)時(shí)很多參數(shù)都用默認(rèn)值幾乎不要人工干預(yù))。

  2、ADM (手動(dòng)方式。作格式化時(shí)一些參數(shù)要人工指定)。

  啟動(dòng)dm工具后,用戶就可以根據(jù)自己的需要選擇相應(yīng)的操作,由于它也是以DOS用戶界面的形式存,所以使用起來(lái)也十分簡(jiǎn)捷、明了。

其它低級(jí)格式化方法

  除了上面介紹的兩種低格工具外,還有許多其它低級(jí)格式化方法。

  1、CMOS中直接操作

  如果主板支持,用戶可以直接在CMOS對(duì)硬盤(pán)進(jìn)行低級(jí)格式化,這種方法非常簡(jiǎn)單、方便,因此如果可能的話,筆者推薦使用這種方法進(jìn)行硬盤(pán)低格。具體操作方法:在開(kāi)機(jī)時(shí)根據(jù)系統(tǒng)提示進(jìn)入CMOS Setup(如果是Award等BIOS,會(huì)提示按DEL進(jìn)入CMOSSetup,如果是Intel主板,一般是按F2進(jìn)入CMOS Setup),接著在CMOS菜單內(nèi)選擇low formatted HardDisk Drive選擇,然后根據(jù)程序提示進(jìn)行待低格硬盤(pán),同時(shí)回答一些程序提問(wèn)即可進(jìn)行硬盤(pán)低級(jí)格式化。

  2、lformat.com程序低格硬盤(pán)

  除了dm工具外,還有一款比較常見(jiàn)的低格程序是lformat.exe,它是由邁拓公司推出的低級(jí)格式化硬盤(pán)工具。在DOS狀態(tài)下運(yùn)行 lformat.exe后,程序即啟動(dòng)警告界面。在該畫(huà)面中說(shuō)明的大概意思是,如果用戶使用這個(gè)工具時(shí),硬盤(pán)內(nèi)所有數(shù)據(jù)將丟失,因此推薦在運(yùn)行它之前備份必要的數(shù)據(jù),同時(shí)推薦移走所有其它硬盤(pán)。如果用戶忘記備份數(shù)據(jù),而希望退出該程序,則可以按除Y之外的任意鍵即可,如果用戶確認(rèn)對(duì)硬盤(pán)進(jìn)行低格,請(qǐng)按 “Y”鍵。

  如果選擇了“Y”后,程序?qū)⒁笥脩暨x擇硬盤(pán)或者就對(duì)當(dāng)前硬盤(pán)進(jìn)行低格,接著,問(wèn)答幾個(gè)提問(wèn),即可開(kāi)始硬盤(pán)低級(jí)格式化過(guò)程。

編輯本段低格,高格及快格的區(qū)別

類型    主要工作    特點(diǎn)    備注

低級(jí)格式化  介質(zhì)檢查;磁盤(pán)介質(zhì)測(cè)試;劃分磁道和扇區(qū);對(duì)每個(gè)扇區(qū)進(jìn)行編號(hào)(C/H/S);設(shè)置交叉因子。 只能在DOS環(huán)境或自寫(xiě)的匯編指令下進(jìn)行,低級(jí)格式化只能整盤(pán)進(jìn)行。

高級(jí)格式化

清除數(shù)據(jù)(寫(xiě)刪除標(biāo)記);檢查扇區(qū);重新初始化引導(dǎo)信息;初始化分區(qū)表信息;    可以在DOS和操作系統(tǒng)上進(jìn)行,只能對(duì)分區(qū)操作。高級(jí)格式化只是存儲(chǔ)數(shù)據(jù),但如果存在壞扇區(qū)可能會(huì)導(dǎo)致長(zhǎng)時(shí)間磁盤(pán)讀寫(xiě)。  DOS下可能有分區(qū)識(shí)別問(wèn)題。使用Format命令格式化不會(huì)自動(dòng)修復(fù)邏輯壞道,如果發(fā)現(xiàn)有壞道,最好使用SCANDISK或WINDOWS系統(tǒng)的磁盤(pán)檢查功能、還有其它第三方軟件進(jìn)行修復(fù)或隱藏,邏輯壞道既可以通過(guò)磁盤(pán)檢查也可以通過(guò)低格解決,這取決于是扇區(qū)的哪個(gè)部分出現(xiàn)了錯(cuò)誤。

快速格式化  刪除文件分配表;不檢查扇區(qū)損壞情況;    可以在DOS和操作系統(tǒng)上進(jìn)行,只能對(duì)分區(qū)操作。

硬盤(pán)MBR全面分析

主板芯片和CPU收到了不符合規(guī)定的電流,將自動(dòng)產(chǎn)生一個(gè)RESET信號(hào),在主板沒(méi)有收到電源的Power Good信號(hào)之前,重復(fù)RESET信號(hào)

BIOSJMP指令,跳轉(zhuǎn)到真正的BIOS啟動(dòng)程序處

BIOS開(kāi)始加電自檢(Power-On Self Test, POST),若成功執(zhí)行INT 19h(SYSTEM - BOOTSTRAP LOADER)

BIOS開(kāi)始尋找顯卡,找到的話將執(zhí)行顯卡的BIOS。接著顯卡初始化,將顯示一段顯卡信息

BIOS開(kāi)始執(zhí)行所有其他設(shè)備的BIOS,包括軟驅(qū),硬盤(pán)等

BIOS顯示啟動(dòng)信息

BIOS開(kāi)始額外的檢測(cè)。一般有內(nèi)存檢測(cè),如果內(nèi)存有問(wèn)題,將顯示錯(cuò)誤消息

BIOS探測(cè)所有的硬件,將顯示硬盤(pán)/光區(qū)信息等

BIOS給出一個(gè)已知硬件的列表

BIOS按照設(shè)置的驅(qū)動(dòng)器順序找驅(qū)動(dòng)器,如果驅(qū)動(dòng)器存在的話繼續(xù)找啟動(dòng)扇區(qū),軟驅(qū)/硬盤(pán)的啟動(dòng)扇區(qū)都在0柱0頭1扇區(qū)(cylinder 0, head 0, sector 1)

將啟動(dòng)扇區(qū)讀到內(nèi)存0000:7c00處,接著INT 19h開(kāi)始執(zhí)行0000:7c00處代碼

 如果找不到驅(qū)動(dòng)器,系統(tǒng)顯示錯(cuò)誤信息并停止。通常是"No boot device"或"NO ROM BASIC -SYSTEM HALTED"

磁盤(pán)的啟動(dòng)扇區(qū)就是主引導(dǎo)記錄(Master Boot Record),包括0柱0頭1扇區(qū)的512個(gè)字節(jié),它的任務(wù)是完成BIOS到操作系統(tǒng)的交接。

MBR的大體結(jié)構(gòu):

偏移 內(nèi)容

0000 MBR程序代碼

01BE 分區(qū)表

01FE 結(jié)束標(biāo)志

分區(qū)表結(jié)構(gòu)

BYTE

1 如果是引導(dǎo)分區(qū),就是80H,如果不是,就是00H

2-4 是該分區(qū)的起始扇區(qū)號(hào)

5 標(biāo)志字節(jié),比如05表示擴(kuò)展分區(qū)

6-8 該分區(qū)的終止扇區(qū)號(hào)

9-12 該分區(qū)已使用的扇區(qū)數(shù)

13-16 該分區(qū)總共占用的扇區(qū)數(shù)

這是從我的硬盤(pán)上提取的MBR(硬盤(pán)是Maxtor的金鉆20G,netfay的電腦早過(guò)時(shí)了:P),不同型號(hào)的硬盤(pán)MBR稍有不同,不過(guò)功能都是一樣的

0000 33 C0 8E D0 BC 00 7C FB-50 07 50 1F FC BE 1B 7C 3.....|.P.P....|

0010 BF 1B 06 50 57 B9 E5 01-F3 A4 CB BE BE 07 B1 04 ...PW...........

0020 38 2C 7C 09 75 15 83 C6-10 E2 F5 CD 18 8B 14 8B 8,|.u...........

0030 EE 83 C6 10 49 74 16 38-2C 74 F6 BE 10 07 4E AC ....It.8,t....N.

0040 3C 00 74 FA BB 07 00 B4-0E CD 10 EB F2 89 46 25 <.t...........F%

0050 96 8A 46 04 B4 06 3C 0E-74 11 B4 0B 3C 0C 74 05 ..F...<.t...<.t.

0060 3A C4 75 2B 40 C6 46 25-06 75 24 BB AA 55 50 B4 :.u+@.F%.u$..UP.

0070 41 CD 13 58 72 16 81 FB-55 AA 75 10 F6 C1 01 74 A..Xr...U.u....t

0080 0B 8A E0 88 56 24 C7 06-A1 06 EB 1E 88 66 04 BF ....V$.......f..

0090 0A 00 B8 01 02 8B DC 33-C9 83 FF 05 7F 03 8B 4E .......3.......N

00A0 25 03 4E 02 CD 13 72 29-BE 59 07 81 3E FE 7D 55 %.N...r).Y..>.}U

00B0 AA 74 5A 83 EF 05 7F DA-85 F6 75 83 BE 2E 07 EB .tZ.......u.....

00C0 8A 98 91 52 99 03 46 08-13 56 0A E8 12 00 5A EB ...R..F..V....Z.

00D0 D5 4F 74 E4 33 C0 CD 13-EB B8 00 00 80 08 10 16 .Ot.3...........

00E0 56 33 F6 56 56 52 50 06-53 51 BE 10 00 56 8B F4 V3.VVRP.SQ...V..

00F0 50 52 B8 00 42 8A 56 24-CD 13 5A 58 8D 64 10 72 PR..B.V$..ZX.d.r

0100 0A 40 75 01 42 80 C7 02-E2 F7 F8 5E C3 EB 74 B7 .@u.B......^..t.

0110 D6 C7 F8 B1 ED CE DE D0-A7 A1 A3 B0 B2 D7 B0 B3 ................

0120 CC D0 F2 CE DE B7 A8 BC-CC D0 F8 A1 A3 00 BC D3 ................

0130 D4 D8 B2 D9 D7 F7 CF B5-CD B3 CA B1 B3 F6 CF D6 ................

0140 B4 ED CE F3 A1 A3 B0 B2-D7 B0 B3 CC D0 F2 CE DE ................

0150 B7 A8 BC CC D0 F8 A1 A3-00 C8 B1 C9 D9 B2 D9 D7 ................

0160 F7 CF B5 CD B3 00 00 00-00 00 00 00 00 00 00 00 ................

0170 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

0180 00 00 00 8B FC 1E 57 8B-F5 CB 00 00 00 00 00 00 ......W.........

0190 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

01A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

01B0 00 00 00 00 00 2C 44 63-B5 D7 B5 D7 00 00 80 01 .....,Dc........

01C0 01 00 0B FE 7F FD 3F 00-00 00 3F 04 7D 00 00 00 ......?...?.}...

01D0 41 FE 0C FE FF FF 7E 04-7D 00 7D 9B E5 01 00 00 A.....~.}.}.....

01E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

01F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ..............U.

由于程序代碼從0000:7C00開(kāi)始,下面看反編譯的結(jié)果(經(jīng)過(guò)修改)

7C00 33C0 XOR AX,AX ;AX=0

7C02 8ED0 MOV SS,AX ;SS=0

7C04 BC007C MOV SP,7C00 ;SP=7C00

7C07 FB STI ;中斷允許

7C08 50 PUSH AX

7C09 07 POP ES ;ES=0

7C0A 50 PUSH AX

7C0B 1F POP DS ;DS=0

7C0C FC CLD ;字符串操作方向:從低到高

7C0D BE1B7C MOV SI,7C1B ;源地址 DS:SI=0000:7C1B

7C10 BF1B06 MOV DI,061B ;目的地址 ES:DI=0000:061B

7C13 50 PUSH AX

7C14 57 PUSH DI

7C15 B9E501 MOV CX,01E5 ;共1E5h個(gè)字節(jié)

7C18 F3 REPZ

7C19 A4 MOVSB ;將MBR從0000:7C00移動(dòng)到0000:0600

7C1A CB RETF ;跳轉(zhuǎn)到0000:061B處

PARTITION_SEARCH_LOOP:

061B BEBE07 MOV SI,07BE ;SI指向分區(qū)表的開(kāi)始

061E B104 MOV CL,04 ;循環(huán)4次,硬盤(pán)最多4個(gè)主分區(qū)

0620 382C CMP [SI],CH

0622 7C09 JL ACTIVE_PARTITION_FOUND

;分區(qū)是活動(dòng)分區(qū)

0624 7515 JNZ INVALID_PARTITION_TABLE

;無(wú)效的分區(qū)表

0626 83C610 ADD SI,+10 ;每個(gè)分區(qū)占用16個(gè)字節(jié),SI指向下一個(gè)分區(qū)

0629 E2F5 LOOP PARTITION_SEARCH_LOOP

062B CD18 INT 18 ;分區(qū)表搜索完,無(wú)活動(dòng)分區(qū),INT 18h=DISKLESS BOOT HOOK

ACTIVE_PARTITON_FOUND:

062D 8B14 MOV DX,[SI] ;下面的搜索保證只存在一個(gè)活動(dòng)分區(qū),否則分區(qū)表無(wú)效

062F 8BEE MOV BP,SI ;找到的引導(dǎo)分區(qū)標(biāo)志和開(kāi)始地址分別存入DX,BP

ONLY_ONE_ACTIVE_PARTITON_SEARCH_LOOP:

0631 83C610 ADD SI,+10

0634 49 DEC CX

0635 7416 JZ GOOD_PARTITION_TABLE ;搜索完畢,剩下的分區(qū)中無(wú)活動(dòng)分區(qū),分區(qū)表正常

0637 382C CMP [SI],CH

0639 74F6 JZ ONLY_ONE_ACTIVE_PARTITON_SEARCH_LOOP ;如果還有活動(dòng)分區(qū)則繼續(xù)向下執(zhí)行

INVALID_PARTITION_TABLE:

063B BE1007 MOV SI,0710 ;SI指向要顯示的錯(cuò)誤信息處

HANG_MACHINE_LOOP:

063E 4E DEC SI

DISPLAY_ERROR_MESSAGE_LOOP:

063F AC LODSB

0640 3C00 CMP AL,00

0642 74FA JZ HANG_MACHINE_LOOP

;到字符串尾時(shí)進(jìn)入死循環(huán),停止運(yùn)行

0644 BB0700 MOV BX,0007

0647 B40E MOV AH,0E

0649 CD10 INT 10 ;顯示錯(cuò)誤信息

DISPLAY_ERROR_MESSAGE_LOOP_ALIAS:

064B EBF2 JMP DISPLAY_ERROR_MESSAGE_LOOP

GOOD_PARTITION_TABLE:

064D 894625 MOV [BP+25],AX

;tmpvar=BP+25處清零,作為臨時(shí)變量

0650 96 XCHG SI,AX ;SI=0

0651 8A4604 MOV AL,[BP+04]

;讀分區(qū)類型入AL

0654 B406 MOV AH,06

0656 3C0E CMP AL,0E ;類型 WIN95: DOS 16-bit FAT, LBA-mapped

0658 7411 JZ TYPE_WIN95_DOS_16BIT_FAT_LBA

065A B40B MOV AH,0B

065C 3C0C CMP AL,0C ;類型 WIN95 OSR2 32-bit FAT, LBA-mapped

065E 7405 JZ TYPE_WIN95_OSR2_32BIT_FAT_LBA

0660 3AC4 CMP AL,AH ;類型 WIN95 OSR2 32-bit FAT

0662 752B JNZ TYPE_DEFAULT

0664 40 INC AX ;AX=0B0C

TYPE_WIN95_OSR2_32BIT_FAT_LBA:

0665 C6462506 MOV BYTE PTR [BP+25],06

;tmpvar=06

0669 7524 JNZ TYPE_DEFAULT

;這里有點(diǎn)問(wèn)題,這個(gè)轉(zhuǎn)移應(yīng)該肯定不成立?

TYPE_WIN95_DOS_16BIT_FAT_LBA:

066B BBAA55 MOV BX,55AA

066E 50 PUSH AX

066F B441 MOV AH,41

0671 CD13 INT 13 ;int 13h擴(kuò)展功能的檢測(cè),IBM/MS INT 13 Extensions - INSTALLATION CHECK

0673 58 POP AX

0674 7216 JB INT13H_EXTENSION_UNSUPPORTED

;CF=1 - 不支持int 13h擴(kuò)展功能

0676 81FB55AA CMP BX,AA55 ;BX不為AA55 - 不支持int 13h擴(kuò)展功能

067A 7510 JNZ INT13H_EXTENSION_UNSUPPORTED

067C F6C101 TEST CL,01 ;CL不為1 - 不支持int 13h擴(kuò)展功能

067F 740B JZ INT13H_EXTENSION_UNSUPPORTED

0681 8AE0 MOV AH,AL ;AH=0E

0683 885624 MOV [BP+24],DL

;tmpvar=DL,引導(dǎo)分區(qū)標(biāo)志

0686 C706A106EB1E MOV WORD PTR [06A1],1EEB

;改06A1處指令為PUSH DS; JMP NEW_LOCATION_1

INT13H_EXTENSION_UNSUPPORTED:

068C 886604 MOV [BP+04],AH

;如果支持的話置分區(qū)類型為0E(類型 WIN95: DOS 16-bit FAT, LBA-mapped)

;否則為06(類型 DOS 3.31+ 16-bit FAT over 32M)

TYPE_DEFAULT:

068F BF0A00 MOV DI,000A

READ_SECTOR_LOOP:

0692 B80102 MOV AX,0201

0695 8BDC MOV BX,SP ;BX設(shè)置為7C00

0697 33C9 XOR CX,CX ;CX=0

0699 83FF05 CMP DI,+05

069C 7F03 JG NEW_LOCATION_0

069E 8B4E25 MOV CX,[BP+25]

NEW_LOCATION_0:

06A1 034E02 ADD CX,[BP+02]

06A4 CD13 INT 13 ;將活動(dòng)分區(qū)的起始扇區(qū)讀到0000:7C00

NEW_LOCATION_1:

06A6 7229 JB READ_SECTOR_ERROR

;CF=1 - 錯(cuò)誤

06A8 BE5907 MOV SI,0759

06AB 813EFE7D55AA CMP WORD PTR [7DFE],AA55

;扇區(qū)結(jié)束標(biāo)志是否正確?

06B1 745A JZ READ_SECTOR_SUCCEEDED

;正確

06B3 83EF05 SUB DI,+05 ;DI=DI-5

06B6 7FDA JG READ_SECTOR_LOOP

06B8 85F6 TEST SI,SI

06BA 7583 JNZ DISPLAY_ERROR_MESSAGE_LOOP:

;顯示錯(cuò)誤信息:缺少操作系統(tǒng)

06BC BE2E07 MOV SI,072E

06BF EB8A JMP DISPLAY_ERROR_MESSAGE_LOOP_ALIAS

;顯示錯(cuò)誤信息:加載操作系統(tǒng)時(shí)發(fā)生錯(cuò)誤。

070D EB74 JMP CONTINUE_KOAD_OS

0783 8BFC MOV DI,SP

;DI=7C00

0785 1E PUSH DS

0786 57 PUSH DI

0787 8BF5 MOV SI,BP

0789 CB RETF ;轉(zhuǎn)到執(zhí)行0000:7C00處的語(yǔ)句,即操作系統(tǒng)的引導(dǎo)程序

硬盤(pán)主引導(dǎo)記錄(MBR)及其結(jié)構(gòu)

硬盤(pán)的0柱面、0磁頭、1扇區(qū)稱為主引導(dǎo)扇區(qū),F(xiàn)DISK程序?qū)懙皆撋葏^(qū)的內(nèi)容稱為主引導(dǎo)記錄(MBR)。該記錄占用512個(gè)字節(jié),它用于硬盤(pán)啟動(dòng)時(shí)將系統(tǒng)控制權(quán)交給用戶指定的,并在分區(qū)表中登記了的某個(gè)操作系統(tǒng)區(qū)。

1.MBR的讀取

    硬盤(pán)的引導(dǎo)記錄(MBR)是不屬于任何一個(gè)操作系統(tǒng),也不能用操作系統(tǒng)提供的磁盤(pán)操作命令來(lái)讀取它。但我們可以用ROM-BIOS中提供的INT13H的2號(hào)功能來(lái)讀出該扇區(qū)的內(nèi)容,也可用軟件工具Norton8.0中的DISKEDIT.EXE來(lái)讀取。

用INT13H的讀磁盤(pán)扇區(qū)功能的調(diào)用參數(shù)如下:

入口參數(shù):AH=2 (指定功能號(hào))

AL=要讀取的扇區(qū)數(shù)

DL=磁盤(pán)號(hào)(0、1-軟盤(pán);80、81-硬盤(pán))

DH=磁頭號(hào)

CL高2位+CH=柱面號(hào)

CL低6位=扇區(qū)號(hào)

CS:BX=存放讀取數(shù)據(jù)的內(nèi)存緩沖地址

出口參數(shù):CS:BX=讀取數(shù)據(jù)存放地址

錯(cuò)誤信息:如果出錯(cuò)CF=1 AH=錯(cuò)誤代碼

用DEBUG讀取位于硬盤(pán)0柱面、0磁頭、1扇區(qū)的操作如下:

A>DEBUG

-A 100

XXXX:XXXX MOV AX,0201 (用功能號(hào)2讀1個(gè)扇區(qū))

XXXX:XXXX MOV BX,1000 (把讀出的數(shù)據(jù)放入緩沖區(qū)的地址為CS:1000)

XXXX:XXXX MOV CX,0001 (讀0柱面,1扇區(qū))

XXXX:XXXX MOV DX,0080 (指定第一物理盤(pán)的0磁頭)

XXXX:XXXX INT 13

XXXX:XXXX INT 3

XXXX:XXXX (按回車鍵)

-G=100 (執(zhí)行以上程序段)

-D 1000 11FF (顯示512字節(jié)的MBR內(nèi)容)

2.MBR的組成

一個(gè)扇區(qū)的硬盤(pán)主引導(dǎo)記錄MBR由如圖6-15所示的4個(gè)部分組成。

·主引導(dǎo)程序(偏移地址0000H--0088H),它負(fù)責(zé)從活動(dòng)分區(qū)中裝載,并運(yùn)行系統(tǒng)引導(dǎo)程序。

·出錯(cuò)信息數(shù)據(jù)區(qū),偏移地址0089H--00E1H為出錯(cuò)信息,00E2H--01BDH全為0字節(jié)。

·分區(qū)表(DPT,Disk Partition Table)含4個(gè)分區(qū)項(xiàng),偏移地址01BEH--01FDH,每個(gè)分區(qū)表項(xiàng)長(zhǎng)16個(gè)字節(jié),共64字節(jié)為分區(qū)項(xiàng)1、分區(qū)項(xiàng)2、分區(qū)項(xiàng)3、分區(qū)項(xiàng)4。

·結(jié)束標(biāo)志字,偏移地址01FE--01FF的2個(gè)字節(jié)值為結(jié)束標(biāo)志55AA,如果該標(biāo)志錯(cuò)誤系統(tǒng)就不能啟動(dòng)。

0000-0088

Master Boot Record 主引導(dǎo)程序

主引導(dǎo)

程序

0089-01BD

出錯(cuò)信息數(shù)據(jù)區(qū)

數(shù)據(jù)區(qū)

01BE-01CD

分區(qū)項(xiàng)1(16字節(jié))

分區(qū)表

01CE-01DD

分區(qū)項(xiàng)2(16字節(jié))

01DE-01ED

分區(qū)項(xiàng)3(16字節(jié))

01EE-01FD

分區(qū)項(xiàng)4(16字節(jié))

01FE

55

結(jié)束標(biāo)志

01FF

AA

                      圖6-15 MBR的組成結(jié)構(gòu)圖
3.MBR中的分區(qū)信息結(jié)構(gòu)
    占用512個(gè)字節(jié)的MBR中,偏移地址01BEH--01FDH的64個(gè)字節(jié),為4個(gè)分區(qū)項(xiàng)內(nèi)容(分區(qū)信息表)。它是由磁盤(pán)介質(zhì)類型及用戶在使用FDISK定義分區(qū)說(shuō)確定的。在實(shí)際應(yīng)用中,F(xiàn)DISK對(duì)一個(gè)磁盤(pán)劃分的主分區(qū)可少于4個(gè),但最多不超過(guò)4個(gè)。每個(gè)分區(qū)表的項(xiàng)目是16個(gè)字節(jié),其內(nèi)容含義如表6-19所示。
表6-19 分區(qū)項(xiàng)表(16字節(jié))內(nèi)容及含義

存貯字節(jié)位

內(nèi)容及含義

第1字節(jié)

引導(dǎo)標(biāo)志。若值為80H表示活動(dòng)分區(qū),若值為00H表示非活動(dòng)分區(qū)。

第2、3、4字節(jié)

本分區(qū)的起始磁頭號(hào)、扇區(qū)號(hào)、柱面號(hào)。其中:
    磁頭號(hào)——第2字節(jié);
    扇區(qū)號(hào)——第3字節(jié)的低6位;
    柱面號(hào)——為第3字節(jié)高2位+第4字節(jié)8位。

第5字節(jié)

分區(qū)類型符。
    00H——表示該分區(qū)未用(即沒(méi)有指定);
    06H——FAT16基本分區(qū);
    0BH——FAT32基本分區(qū);
    05H——擴(kuò)展分區(qū);
    07H——NTFS分區(qū);
    0FH——(LBA模式)擴(kuò)展分區(qū)(83H為L(zhǎng)inux分區(qū)等)。

第6、7、8字節(jié)

本分區(qū)的結(jié)束磁頭號(hào)、扇區(qū)號(hào)、柱面號(hào)。其中:
    磁頭號(hào)——第6字節(jié);
    扇區(qū)號(hào)——第7字節(jié)的低6位;
    柱面號(hào)——第7字節(jié)的高2位+第8字節(jié)。

第9、10、11、12字節(jié)

本分區(qū)之前已用了的扇區(qū)數(shù)。

第13、14、15、16字節(jié)

本分區(qū)的總扇區(qū)數(shù)。

4.MBR的主要功能及工作流程
    啟動(dòng)PC機(jī)時(shí),系統(tǒng)首先對(duì)硬件設(shè)備進(jìn)行測(cè)試,測(cè)試成功后進(jìn)入自舉程序INT 19H,然后讀系統(tǒng)磁盤(pán)0柱面、0磁頭、1扇區(qū)的主引導(dǎo)記錄(MBR)內(nèi)容到內(nèi)存指定單元0:7C00地址開(kāi)始的區(qū)域,并執(zhí)行MBR程序段。
    硬盤(pán)的主引導(dǎo)記錄(MBR)是不屬于任何一個(gè)操作系統(tǒng)的,它先于所有的操作系統(tǒng)而被調(diào)入內(nèi)存,并發(fā)揮作用,然后才將控制權(quán)交給主分區(qū)(活動(dòng)分區(qū))內(nèi)的操作系統(tǒng),并用主分區(qū)信息表來(lái)管理硬盤(pán)。
MBR程序段的主要功能如下:
·檢查硬盤(pán)分區(qū)表是否完好。
·在分區(qū)表中尋找可引導(dǎo)的“活動(dòng)”分區(qū)。
·將活動(dòng)分區(qū)的第一邏輯扇區(qū)內(nèi)容裝入內(nèi)存。在DOS分區(qū)中,此扇區(qū)內(nèi)容稱為DOS引導(dǎo)記錄(DBR)。
MBR引導(dǎo)程序段的執(zhí)行流程如圖6-16所示。



                                 
硬盤(pán)邏輯驅(qū)動(dòng)器的分區(qū)表鏈結(jié)構(gòu)
    硬盤(pán)是由很多個(gè)512字節(jié)的扇區(qū)組成,而這些扇區(qū)會(huì)被組織成一個(gè)個(gè)的“分區(qū)”。
硬盤(pán)的分區(qū)規(guī)則是:一個(gè)分區(qū)的所有扇區(qū)必須連續(xù),硬盤(pán)可以有最多4個(gè)物理上的分區(qū),這4個(gè)物理分區(qū)可以時(shí)個(gè)主分區(qū)或者3個(gè)主分區(qū)加一個(gè)擴(kuò)展分區(qū)。在DOS/Windows管理下的擴(kuò)展分區(qū)里,可以而且必須再繼續(xù)劃分邏輯分區(qū)(邏輯盤(pán))。
從MS-DOS3.2問(wèn)世以后,用戶就可以在一個(gè)物理硬盤(pán)驅(qū)動(dòng)器上劃分一個(gè)主分區(qū)和一個(gè)擴(kuò)展分區(qū),并在擴(kuò)展分區(qū)上創(chuàng)建多個(gè)邏輯驅(qū)動(dòng)器,也即我們常說(shuō)的一個(gè)物理盤(pán)上多個(gè)邏輯盤(pán)。
舉一個(gè)例子,一個(gè)10G的硬盤(pán),安裝Windows,有C:、D:、E:三個(gè)邏輯盤(pán),那么它的分區(qū)情況可以是如下的方式:
分區(qū)一:主分區(qū)2GB,格式化為C:盤(pán)。
分區(qū)二:擴(kuò)展分區(qū)8GB。它被再劃分為兩個(gè)各4GB的邏輯盤(pán),格式化為以D:和E:盤(pán)。
在一個(gè)劃分有多個(gè)主分區(qū)的硬盤(pán)上,則可安裝多個(gè)不同的操作系統(tǒng)。如Windows、Linux、Solaris等。每個(gè)操作系統(tǒng)自己去管理分配給自己的分區(qū)。但是,每個(gè)操作系統(tǒng)對(duì)分區(qū)的操作方式是不同的。對(duì)于DOS/Windows來(lái)說(shuō),它能夠把它所能管轄的一個(gè)主分區(qū)和一個(gè)擴(kuò)展分區(qū)格式化,然后按照C:、D:、E:邏輯盤(pán)的方式來(lái)管理。而Linux則不同,它是把“分區(qū)”看作一個(gè)設(shè)備,既沒(méi)有“擴(kuò)展分區(qū)”的概念,也沒(méi)有“邏輯盤(pán)”的概念。
1.邏輯盤(pán)的鏈接關(guān)系
在FAT文件系統(tǒng)中,硬盤(pán)的邏輯盤(pán)字符用字符C:、D:、E:、...、Z:來(lái)表示。主分區(qū)一般被格式化成C:盤(pán),從D:盤(pán)開(kāi)始的邏輯盤(pán)是建立在擴(kuò)展分區(qū)之上的。在系統(tǒng)進(jìn)行讀寫(xiě)操作時(shí),DOS首先查看主引導(dǎo)記錄(MBR)中的分區(qū)信息表,分區(qū)項(xiàng)將指向活動(dòng)主分區(qū)的DOS引導(dǎo)記錄(DBR)。
MBR中的分區(qū)表位于0柱面、0磁頭、1扇區(qū)內(nèi),以位移1BEH開(kāi)始的第一分區(qū)表作為鏈?zhǔn)祝斜韮?nèi)的鏈接表項(xiàng)指示下一分區(qū)表的物理位置(xx柱面、0磁頭、1扇區(qū)),在該位置的扇區(qū)內(nèi)同樣位移1BEH處,保存著第2張分區(qū)表,依次類推,直至指向最后一張分區(qū)表的物理位置(yy柱面、0磁頭、1扇區(qū))。因該分區(qū)表內(nèi)不存在鏈接表項(xiàng),即作為分區(qū)表鏈的鏈尾。如圖6-17所示。
   硬盤(pán)                      第一個(gè)虛擬              第二個(gè)虛擬                   第三個(gè)虛擬  
MBR分區(qū)表                    MBR分區(qū)表               MBR分區(qū)表                    MBR分區(qū)表

定義C:盤(pán)

------------>

定義D:盤(pán)

----------->

定義E:盤(pán)

------------>

定義F:盤(pán)

描述剩余空間

描述剩余空間

描述剩余空間

描述剩余空間

未用

未用

未用

未用

未用

未用

未用

未用

55AA

55AA

55AA

55AA

圖具有4個(gè)邏輯盤(pán)的分區(qū)鏈表示意圖
舉例來(lái)說(shuō),本來(lái)位于柱面0、磁頭0、扇區(qū)1上的分區(qū)表的每一項(xiàng)記錄和主分區(qū)的DBR之間有一對(duì)應(yīng)的關(guān)系,但是,如果在擴(kuò)展分區(qū)中建立了多個(gè)邏輯盤(pán),例如D:、E:、F:,該分區(qū)表中的分區(qū)項(xiàng)可指向第一個(gè)邏輯盤(pán):,但對(duì)于其它的邏輯盤(pán),則就沒(méi)有這種對(duì)應(yīng)關(guān)系了。為能夠查找擴(kuò)展分區(qū)中的多個(gè)邏輯盤(pán),DOS系統(tǒng)可做如下安排:
·如果硬盤(pán)只有一個(gè)主分區(qū),即是將整個(gè)硬盤(pán)作為一個(gè)邏輯盤(pán)C:,則分區(qū)命令FDISK只在硬盤(pán)的柱面0、磁頭0、扇區(qū)1上建立一個(gè)MBR。
·如果硬盤(pán)被劃分成2--4個(gè)分區(qū),則FDISK除了在柱面0、磁頭0、扇區(qū)1上建立一個(gè)MBR之外,還在擴(kuò)展分區(qū)的每個(gè)邏輯盤(pán)的起始扇區(qū)上都建立一個(gè)虛擬MBR,每一個(gè)虛擬MBR用于擴(kuò)展分區(qū)上的一個(gè)邏輯盤(pán)。
·擴(kuò)展分區(qū)的第一個(gè)扇區(qū)不是用于一個(gè)邏輯盤(pán)的DBR,而是指向一個(gè)“擴(kuò)展的”分區(qū)表,即第一個(gè)虛擬的MBR。該邏輯盤(pán)DBR扇區(qū)的起點(diǎn)應(yīng)為虛擬MBR的下一個(gè)磁道1扇區(qū)。
這些MBR中的各個(gè)分區(qū)表鏈接成一個(gè)如圖6-17所示的分區(qū)表鏈。這是一個(gè)硬盤(pán)具有4個(gè)表項(xiàng)所描述的內(nèi)容。
DOS就是用這種方法來(lái)使一個(gè)擴(kuò)展分區(qū)看起來(lái)象是有多個(gè)硬盤(pán)。
從圖中可以看到,位于磁盤(pán)柱面0、磁頭0、扇區(qū)1上MBR的分區(qū)表指向基本分區(qū)及擴(kuò)展分區(qū)中的第一個(gè)邏輯盤(pán)。



圖6-16 MBR引導(dǎo)程序段執(zhí)

 需要指出的是,在以前的磁盤(pán)讀取技術(shù)水平下,低級(jí)格式化是一種損耗性操作,其對(duì)硬盤(pán)壽命有一定的負(fù)面影響。最近一兩年出的硬盤(pán)進(jìn)行低級(jí)格式化影響要小的多,因?yàn)樗皇俏锢砩系牟僮?。因此,許多硬盤(pán)廠商均建議用戶不到萬(wàn)不得已,不可“妄”使此招。當(dāng)硬盤(pán)受到外部強(qiáng)磁體、強(qiáng)磁場(chǎng)的影響,或因長(zhǎng)期使用,硬盤(pán)盤(pán)片上由低級(jí)格式化劃分出來(lái)的扇區(qū)格式磁性記錄部分丟失,從而出現(xiàn)大量“壞扇區(qū)”時(shí),可以通過(guò)低級(jí)格式化來(lái)重新劃分“扇區(qū)”。但是前提是硬盤(pán)的盤(pán)片沒(méi)有受到物理性劃傷。   硬盤(pán)低級(jí)格式化的功用硬盤(pán)低格格式化是對(duì)硬盤(pán)最徹底的初始化方式,經(jīng)過(guò)低格后的硬盤(pán),原來(lái)保護(hù)的數(shù)據(jù)將全部丟失,所以一般來(lái)說(shuō)低格硬盤(pán)是非常不可取的,只有非常必要的時(shí)候才能低格硬盤(pán)。而這個(gè)所謂的必要時(shí)候有兩種,一是硬盤(pán)出廠前,硬盤(pán)廠會(huì)對(duì)硬盤(pán)進(jìn)行一次低級(jí)格式化;另一個(gè)是當(dāng)硬盤(pán)出現(xiàn)某種類型的壞道時(shí),使用低級(jí)格式化能起到一定的緩解或者屏蔽作用。   對(duì)于第一種情況,這里不用多說(shuō)了,因?yàn)橛脖P(pán)出廠前的低格工作只有硬盤(pán)工程師們才會(huì)接觸到,對(duì)于普通用戶而言,根本無(wú)須考慮這方面的事情。至于第二種情況,是什么類型的壞道時(shí)才需要低格呢?在說(shuō)明這個(gè)關(guān)鍵性問(wèn)題前,先來(lái)看看硬盤(pán)壞道的類型。

編輯本段產(chǎn)生原因及作用

邏輯壞道

  總的來(lái)說(shuō),壞道可以分為物理壞道和邏輯壞道。其中邏輯壞道相對(duì)比較容易解決,它指硬盤(pán)在寫(xiě)入時(shí)受到意外干擾,造成有ECC錯(cuò)誤。從過(guò)程上講,它是指硬盤(pán)在寫(xiě)入數(shù)據(jù)的時(shí)候,會(huì)用ECC的邏輯重新組合數(shù)據(jù),一般操作系統(tǒng)要寫(xiě)入512個(gè)字節(jié),但實(shí)際上硬盤(pán)會(huì)多寫(xiě)幾十個(gè)字節(jié),而且所有的這些字節(jié)都要用ECC進(jìn)行校驗(yàn)編碼,如果原始字節(jié)算出的ECC校正碼和讀出字節(jié)算出的ECC不同,這樣就會(huì)產(chǎn)生ECC錯(cuò)誤,這就是所謂的邏輯壞道產(chǎn)生原因。

物理壞道

  至于物理壞道,它對(duì)硬盤(pán)的損壞更具致命性,它也有軟性和硬性物理壞道的區(qū)別,磁盤(pán)表面物理?yè)p壞就是硬性的,這是無(wú)法修復(fù)的。而由于外界影響而造成數(shù)據(jù)的寫(xiě)入錯(cuò)誤時(shí),系統(tǒng)也會(huì)認(rèn)為是物理壞道,而這種物理壞道是可以使用一些硬盤(pán)工具(例如硬盤(pán)廠商提供的檢測(cè)修復(fù)軟件)來(lái)修復(fù),此外,對(duì)于微小的硬盤(pán)表面損傷,一些硬盤(pán)工具(例如西部數(shù)據(jù)的Data Lifeguard Tools)就可以重新定向到一個(gè)好的保留扇區(qū)來(lái)修正錯(cuò)誤。   對(duì)于這些壞道類型,硬性的物理壞道肯定是無(wú)法修復(fù)的,它是對(duì)硬盤(pán)表面的一種最直接的損壞,所以即使再低格或者使用硬盤(pán)工具也無(wú)法修復(fù)(除非是非常微小的損壞,部分工具可以將這部份壞道保留不用以此達(dá)到解決目的)。

低格的作用

  對(duì)于硬盤(pán)上出現(xiàn)邏輯壞道或者軟性物理壞道,用戶可以試試使用低級(jí)格式化來(lái)達(dá)到屏蔽壞道的作用,但這里需要指出,屏蔽壞道并不等于消除壞道了,低格硬盤(pán)能把原來(lái)硬盤(pán)內(nèi)所有分區(qū)都刪除,但壞道卻依然存在,屏蔽只是將壞道隱藏起來(lái),不讓用戶在存儲(chǔ)數(shù)據(jù)時(shí)使用這些壞道,這樣能在一定程度上保證用戶數(shù)據(jù)的可靠性,但壞道卻會(huì)隨著硬盤(pán)分區(qū)、格式化次數(shù)的增長(zhǎng)而擴(kuò)散蔓延。   所以筆者并不推薦用戶對(duì)硬盤(pán)進(jìn)行低格,如果硬盤(pán)在保修期內(nèi)最好去保修或者找經(jīng)銷商換一塊,這可以說(shuō)是最佳解決方案,也是最徹底的解決方案了。如果硬盤(pán)過(guò)了保修期不讓換,那可以試試低格硬盤(pán),以防止將數(shù)據(jù)存儲(chǔ)到壞道導(dǎo)致數(shù)據(jù)損失。

編輯本段方法

工具低格

  對(duì)于如何進(jìn)行硬盤(pán)低格,一般來(lái)說(shuō)是使用低格工具來(lái)操作,這個(gè)將在下面的章節(jié)中詳細(xì)介紹,這里再說(shuō)一些相關(guān)話題。即低格工具跟硬盤(pán)檢測(cè)工具是有著本質(zhì)的區(qū)別,低格工具就是對(duì)硬盤(pán)進(jìn)行低格的作用,而硬盤(pán)檢測(cè)工具一般來(lái)說(shuō)是硬盤(pán)廠商推出的用來(lái)檢測(cè)硬盤(pán),及早發(fā)現(xiàn)硬盤(pán)錯(cuò)誤,以提醒用戶備份重要數(shù)據(jù)或者檢修硬盤(pán)用的,它不是用于低格硬盤(pán)。 而最常見(jiàn)的莫過(guò)于使用一些工具軟件來(lái)對(duì)硬盤(pán)進(jìn)行低格,常見(jiàn)低格工具有lformat、DM及硬盤(pán)廠商們推出的各種硬盤(pán)工具等。

匯編語(yǔ)言低格

  用Debug匯編語(yǔ)言進(jìn)行低級(jí)格式化   低級(jí)格式化硬盤(pán)能完成銷毀硬盤(pán)內(nèi)的數(shù)據(jù),所以在操作前一定要謹(jǐn)慎。硬盤(pán)低格有許多方法,例如直接在CMOS中對(duì)硬盤(pán)進(jìn)行低格,或者使用匯編語(yǔ)言進(jìn)行硬盤(pán)低格。匯編是比較低級(jí)的一種編程語(yǔ)言,它能非常方便地直接操作硬件,而且運(yùn)行效率很高,如果軟件系統(tǒng)中需要直接操作硬件時(shí),經(jīng)常使用的就是匯編語(yǔ)言。使用匯編也可以對(duì)硬盤(pán)進(jìn)行低級(jí)格式化,它比DM等工具軟件顯得更為靈活,具體應(yīng)用時(shí)就是使用debug程序,而具體操作就是在debug環(huán)境下,調(diào)用存放在BIOS 中的低級(jí)格式化程序(CMOS中直接低格硬盤(pán)調(diào)用的也是此段低格程序)。實(shí)現(xiàn)方法通常有如下三種:   (1)、直接調(diào)用BIOS ROM中的低格程序   在很多計(jì)算機(jī)的BIOS ROM中存放著低格程序,存放地址從C8005H地址開(kāi)始,具體操作如下:   A:\>Debug   -G C800 0005(這時(shí)屏幕顯示信息(不同版本的BIOS顯示的信息可能不同),回車后提示:)   Current Interleave is 3 select new interleave or Return for current(這是要求用戶選擇交叉因子,按回車表示取默認(rèn)值3,也可輸入新的交叉因子值,硬盤(pán)的交叉因子一般是3,所以直接回車即可。屏幕接著提示:)   Are you dynamically configuring the drive-answer YN t   PressYto begin formatting the drive C with interleave 03(鍵入“Y”后開(kāi)始對(duì)硬盤(pán)進(jìn)行低格)   Formatting ……(完成后詢問(wèn)是否處理壞磁道)   Do you want to format bad track-answer YN   若沒(méi)有則用“N”回答。屏幕顯示:   Format Successful,system will new restartInsert Dos diskette indrive A   插入系統(tǒng)盤(pán)到A驅(qū)動(dòng)器,即可進(jìn)行分區(qū),高級(jí)格式化等操作來(lái)安裝系統(tǒng)了。   (2)、通過(guò)調(diào)用INT 13H中斷的7號(hào)功能對(duì)硬盤(pán)進(jìn)行低格   操作如下:   A:\>DEBUG   -A 100   -XXXX0100 MOV AX,0703;(交叉因子為3   -XXXX0103 MOV CX,0001;(0磁道0扇區(qū)起)   -XXXX0106 MOV DX,0080;(C盤(pán)0磁道)   -XXXX0109 INT 13   -XXXX010B INT 3   -XXXX010D   -G 100   這樣硬盤(pán)就被低格了。   (3)、調(diào)用INT 13H中斷的5號(hào)功能   對(duì)硬盤(pán)調(diào)用INT 13H中斷的5號(hào)功能只低格001扇區(qū),而不必低格整個(gè)硬盤(pán),從而使低格在很短的時(shí)間內(nèi)完成。具體操作如下:   ADEBUG   -A 100   -XXXX0100 MOV AX,0500;(調(diào)用5號(hào)功能)   -XXXX0103 MOV BX,0180;(設(shè)置緩沖區(qū)地址)   -XXXX0106 MOV CX,0001;(0磁道1扇區(qū)起)   -XXXX0109 MOV DX,0080;(C盤(pán)0磁道)   -XXXX010B INT 13   -XXXX010D INT 3   -E 0180 0 0 0002;(寫(xiě)入?yún)?shù))   -G 100

DM低級(jí)格式化方法

  用DM進(jìn)行低級(jí)格式化   DM的全名是Hard Disk Management Program,它能對(duì)硬盤(pán)進(jìn)行低級(jí)格式化、校驗(yàn)等管理工作,可以提高硬盤(pán)的使用效率??偟膩?lái)說(shuō),DM具有如下幾個(gè)功能:硬盤(pán)低級(jí)格式化、分區(qū)、高級(jí)格式化、硬盤(pán)參數(shù)配置及其它功能。   在實(shí)際應(yīng)用時(shí),dm工具跟普通DOS命令(fdiskformat)一樣,它的命令格式為:ADM [參數(shù)] 。其中的參數(shù)可取以下值:   M DM軟件以手工方式進(jìn)入,如無(wú)該參數(shù),DM以自動(dòng)方式運(yùn)行,依次執(zhí)行INITIALIZE. PARTITIONG. PREPARAFION。   C DM軟件以彩色方式執(zhí)行,即運(yùn)行于彩色顯示器上。   P DM軟件以PCXT方式管理硬盤(pán)。   A DM軟件以PCAT方式管理硬盤(pán)。   2 DOS 2.XX版本方式。   3 DOS 3.XX版本方式。   4 DOS 4.XX版本方式(DM 5.01版有此參數(shù))   V DM運(yùn)行于可改變簇長(zhǎng)度、根目錄項(xiàng)方式。   在實(shí)際使用中常用以下兩種方式啟動(dòng):   1、ADM (自動(dòng)方式。初始化硬盤(pán)時(shí)很多參數(shù)都用默認(rèn)值幾乎不要人工干預(yù))。   2、ADM (手動(dòng)方式。作格式化時(shí)一些參數(shù)要人工指定)。   啟動(dòng)dm工具后,用戶就可以根據(jù)自己的需要選擇相應(yīng)的操作,由于它也是以DOS用戶界面的形式存,所以使用起來(lái)也十分簡(jiǎn)捷、明了。

其它低級(jí)格式化方法

  除了上面介紹的兩種低格工具外,還有許多其它低級(jí)格式化方法。   1、CMOS中直接操作   如果主板支持,用戶可以直接在CMOS對(duì)硬盤(pán)進(jìn)行低級(jí)格式化,這種方法非常簡(jiǎn)單、方便,因此如果可能的話,筆者推薦使用這種方法進(jìn)行硬盤(pán)低格。具體操作方法:在開(kāi)機(jī)時(shí)根據(jù)系統(tǒng)提示進(jìn)入CMOS Setup(如果是AwardBIOS,會(huì)提示按DEL進(jìn)入CMOSSetup,如果是Intel主板,一般是按F2進(jìn)入CMOS Setup),接著在CMOS菜單內(nèi)選擇low formatted HardDisk Drive選擇,然后根據(jù)程序提示進(jìn)行待低格硬盤(pán),同時(shí)回答一些程序提問(wèn)即可進(jìn)行硬盤(pán)低級(jí)格式化。   2lformat.com程序低格硬盤(pán)   除了dm工具外,還有一款比較常見(jiàn)的低格程序是lformat.exe,它是由邁拓公司推出的低級(jí)格式化硬盤(pán)工具。在DOS狀態(tài)下運(yùn)行 lformat.exe后,程序即啟動(dòng)警告界面。在該畫(huà)面中說(shuō)明的大概意思是,如果用戶使用這個(gè)工具時(shí),硬盤(pán)內(nèi)所有數(shù)據(jù)將丟失,因此推薦在運(yùn)行它之前備份必要的數(shù)據(jù),同時(shí)推薦移走所有其它硬盤(pán)。如果用戶忘記備份數(shù)據(jù),而希望退出該程序,則可以按除Y之外的任意鍵即可,如果用戶確認(rèn)對(duì)硬盤(pán)進(jìn)行低格,請(qǐng)按 Y”鍵。   如果選擇了“Y”后,程序?qū)⒁笥脩暨x擇硬盤(pán)或者就對(duì)當(dāng)前硬盤(pán)進(jìn)行低格,接著,問(wèn)答幾個(gè)提問(wèn),即可開(kāi)始硬盤(pán)低級(jí)格式化過(guò)程。

編輯本段低格,高格及快格的區(qū)別

  類型 主要工作 特點(diǎn) 備注

低級(jí)格式化 介質(zhì)檢查;磁盤(pán)介質(zhì)測(cè)試;劃分磁道和扇區(qū);對(duì)每個(gè)扇區(qū)進(jìn)行編號(hào)(C/H/S);設(shè)置交叉因子。 只能在DOS環(huán)境或自寫(xiě)的匯編指令下進(jìn)行,低級(jí)格式化只能整盤(pán)進(jìn)行,現(xiàn)在硬盤(pán)出廠都是經(jīng)過(guò)低格的,實(shí)際使用不到萬(wàn)不得已不要使用低格。 低級(jí)格式化對(duì)硬盤(pán)有損傷,如果硬盤(pán)已有物理壞道,則低級(jí)格式化會(huì)更加損傷硬盤(pán),加快報(bào)廢。低格的時(shí)間漫長(zhǎng),比如現(xiàn)在320G硬盤(pán)低格可能需要20小時(shí),或更多。

高級(jí)格式化 清除數(shù)據(jù)(寫(xiě)刪除標(biāo)記);檢查扇區(qū);重新初始化引導(dǎo)信息;初始化分區(qū)表信息; 可以在DOS和操作系統(tǒng)上進(jìn)行,只能對(duì)分區(qū)操作。高級(jí)格式化只是存儲(chǔ)數(shù)據(jù),但如果存在壞扇區(qū)可能會(huì)導(dǎo)致長(zhǎng)時(shí)間磁盤(pán)讀寫(xiě)。 DOS下可能有分區(qū)識(shí)別問(wèn)題。使用Format命令格式化不會(huì)自動(dòng)修復(fù)邏輯壞道,如果發(fā)現(xiàn)有壞道,最好使用SCANDISKWINDOWS系統(tǒng)的磁盤(pán)檢查功能、還有其它第三方軟件進(jìn)行修復(fù)或隱藏,邏輯壞道既可以通過(guò)磁盤(pán)檢查也可以通過(guò)低格解決,這取決于是扇區(qū)的哪個(gè)部分出現(xiàn)了錯(cuò)誤。

快速格式化 刪除文件分配表;不檢查扇區(qū)損壞情況; 可以在DOS和操作系統(tǒng)上進(jìn)行,只能對(duì)分區(qū)操作。快速格式化也只是存儲(chǔ)數(shù)據(jù) DOS下可能有分區(qū)識(shí)別問(wèn)題。另外,似乎Linux系統(tǒng)沒(méi)有快速格式化命令。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多