久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

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

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

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

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

磁道=柱面

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

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

  高級(jí)格式化好的硬盤,整個(gè)磁盤按所記錄數(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è)重要信息在磁盤的外磁道上,,原因是外圈周長(zhǎng)總大于內(nèi)圈周長(zhǎng),也即外圈存儲(chǔ)密度要小些,,可靠性高些,。

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

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

MBR的內(nèi)容是在硬盤分區(qū)時(shí)由分區(qū)軟件(如FDISK)寫入該扇區(qū)的,,MBR不屬于任何一個(gè)操作系統(tǒng),不隨操作系統(tǒng)的不同而不同,,即使不同,,MBR也不會(huì)摻雜操作系統(tǒng)的性質(zhì),具有公共引導(dǎo)的特性,。但安裝某些多重引導(dǎo)功能的軟件或LINUX的LILO時(shí)有可能改寫它,;它先于所有的操作系統(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.硬盤分區(qū)表DPT,占64字節(jié)

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

1.主引導(dǎo)程序代碼從偏移0000H開始到偏移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)磁盤0柱面,、0磁頭,、1扇區(qū)的主引導(dǎo)扇區(qū)MBR的內(nèi)容到內(nèi)存指定單元0:7C00 首地址開始的區(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

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

硬盤分區(qū)表分為四小部分,每一小部分表示一個(gè)分區(qū)的信息,,占16字節(jié),。在這里我們可以看出,硬盤的總分區(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開始計(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,。

  由此可知硬盤的容量設(shè)計(jì)為什么會(huì)有8.4GB這一檔,分區(qū)表每一分區(qū)的第1至第3字節(jié)以及第5至第7字節(jié)的數(shù)據(jù)結(jié)構(gòu)已經(jīng)不能滿足大于8.46GB的大容量硬盤的需要,??紤]到向下兼容的需要,業(yè)界并未對(duì)從DOS時(shí)代就如此定義的硬盤分區(qū)表提出更改意見,,否則改動(dòng)所牽涉的面太廣,,會(huì)造成硬件和軟件發(fā)展上的一個(gè)斷層,幾乎無(wú)法被業(yè)界和用戶所接受,。硬盤廠商解決這一問(wèn)題的方法是定義了新的INT 13服務(wù)擴(kuò)展標(biāo)準(zhǔn),。新的INT 13服務(wù)擴(kuò)展標(biāo)準(zhǔn)不再使用操作系統(tǒng)的寄存器傳遞硬盤的尋址參數(shù),而使用存儲(chǔ)在操作系統(tǒng)內(nèi)存里的地址包,。地址包里保存的是64位LBA地址,,如果硬盤支持LBA尋址,就把低28位直接傳遞給ATA接口,,如果不支持,,操作系統(tǒng)就先把LBA地址轉(zhuǎn)換為CHS地址,,再傳遞給ATA接口。通過(guò)這種方式,,能實(shí)現(xiàn)在ATA總線基礎(chǔ)上CHS尋址的最大容量是136.9 GB,,而LBA尋址的最大容量是137.4GB。新的硬盤傳輸規(guī)范ATA 133規(guī)范又把28位可用的寄存器空間提高到48位,,從而支持更大的硬盤,。分區(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,。如果磁盤上沒(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ū)開始的扇區(qū)到該邏輯驅(qū)動(dòng)器中第一個(gè)扇區(qū)的扇區(qū)數(shù);占用的扇區(qū)數(shù)是指組成該邏輯驅(qū)動(dòng)器的扇區(qū)數(shù)目,。

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

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

分區(qū)引導(dǎo)扇區(qū)DBR(DOS BOOT RECORD)是由FORMAT高級(jí)格式化命令寫到該扇區(qū)的內(nèi)容,;DBR是由硬盤的MBR裝載的程序段,。DBR裝入內(nè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)版本及硬盤的邏輯盤參數(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)和磁盤文件的訪問(wèn)具有至關(guān)重要的作用;引導(dǎo)程序代碼的損壞將導(dǎo)致操作系統(tǒng)不能正常啟動(dòng),,磁盤讀寫參數(shù)的破壞將造成存儲(chǔ)在磁盤上的文件不能正常讀寫,。

  由于分區(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)。由于在磁盤正常工作過(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表示磁盤使用FAT32文件系統(tǒng),。

13H

 2

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

15H

 1

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

16H

 2

 未使用,,值為00H,。

18H

 2

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

1AH

 2

 磁盤的磁頭數(shù),。

1CH

 4

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

20H

 4

 邏輯磁盤中的扇區(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

 磁盤根目錄的起始簇號(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è)備;軟盤為00H,,硬盤為80H,。

41H

 1

 用于中斷13呼叫。

42H

 1

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

43H

 4

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

47H

 11

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

52H

 8

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

  從偏移0x5A開始的數(shù)據(jù)為操作系統(tǒng)引導(dǎo)代碼。這是由偏移0x00開始的跳轉(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ǔ)了邏輯磁盤中未使用的簇?cái)?shù),,通常用于快速計(jì)算邏輯磁盤的剩余空間(典型的操作是在資源管理器狀態(tài)欄上列出的"可用磁盤空間"參數(shù)),,而1ECH~1EFH 4個(gè)字節(jié)給出了邏輯盤中下一個(gè)可以分配給文件使用的空閑簇的簇號(hào),這樣操作系統(tǒng)可以不訪問(wèn)FAT表就直接獲得磁盤剩余空間和可以分配的簇號(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í)間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是放在硬盤的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è)軟盤驅(qū)動(dòng)器中讀啟動(dòng)扇區(qū)記錄,。

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

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

19就從第一個(gè)硬盤中去讀。同樣,,如果成功的話,,也會(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ū)在硬盤上

的位置。

    如果沒(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的硬盤中讀入。這便是為什么不能從任何硬盤

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

 ?。玻㎝BR程序是用基于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,見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                     #開中斷

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 ,硬盤重置

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開始,。每一個(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盤。標(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位于硬盤第一個(gè)物理扇區(qū)柱面0,磁頭0,,扇區(qū)1處,。不屬于DOS扇區(qū),

  ?。?)主引導(dǎo)記錄分為硬盤的主引導(dǎo)程序和硬盤分區(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)的定位與裝載,,而BPB用來(lái)描述本DOS分區(qū)的磁盤信息,,BPB位于DBR偏移0BH處,,共13字節(jié)。它包含邏輯格式化時(shí)使用的參數(shù),,可供DOS計(jì)算磁盤上的文件分配表,,目錄區(qū)和數(shù)據(jù)區(qū)的起始地址,BPB之后三個(gè)字提供物理格式化(低格)時(shí)采用的一些參數(shù),。引導(dǎo)程序或設(shè)備驅(qū)動(dòng)程序根據(jù)這些信息將磁盤邏輯地址(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 磁盤總扇區(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)行分配的最基本單位是簇。文件分配表是反映硬盤上所有簇的使用情況,,通過(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 2?。?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反映硬盤上所有簇的使用情況,,它記錄了文件在硬盤中具體位置(簇),。

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

據(jù)這條鏈,。

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

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

8.文件目錄

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

目錄項(xiàng)的格式

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

00H 文件名 8B

08H 擴(kuò)展名 3B

0BH 文件屬性 1B

0CH 保留 10B

16H 時(shí)間 2B

18H 日期 2B

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

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

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

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

EBH代表此文件已被刪除

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

                      未 修 修 子 卷 系 隱 只

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

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

                        志 志     性 性 性

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

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

      登記表.

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

   (3)文件起始簇號(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] 挽救硬盤的10個(gè)方法(維護(hù)硬盤故障)

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

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

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

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

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

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

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

分類欄目

·硬盤

·CPU

·主板

·綜合

·內(nèi)存

·顯示器

·鼠標(biāo)鍵盤

·打印機(jī)

熱門標(biāo)簽

·方法(102)

·故障(99)

·技巧(66)

·XP(61)

·病毒(60)

·所有標(biāo)簽

點(diǎn)擊排行

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

·如何給硬盤加..

·硬盤拷貝三法

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

·減少硬盤出故..

 

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

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

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

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

1,、對(duì)扇區(qū)清零和重寫校驗(yàn)值,。低格過(guò)程中將每個(gè)扇區(qū)的所有字節(jié)全部置零,并將每個(gè)扇區(qū)的校驗(yàn)值也寫回初始值,,這樣可以將部分缺陷糾正過(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ū)的功效,。這是每種低格工具和每種硬盤的低格過(guò)程最基本的操作內(nèi)容,,同時(shí)這也是為什么通過(guò)低格能“修復(fù)大量壞道”的基本原因。另外,,DM中的Zero Fill(清零)操作與IBM DFT工具中的Erase操作,,也有同樣的功效。

2,、對(duì)扇區(qū)進(jìn)行讀寫檢查,,并嘗試替換缺陷扇區(qū)。有些低格工具會(huì)對(duì)每個(gè)扇區(qū)進(jìn)行讀寫檢查,,如果發(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í)信息重寫,。在多年以前使用的老式硬盤(如采用ST506接口的硬盤),,需要在低格過(guò)程中重寫每個(gè)扇區(qū)的標(biāo)識(shí)(ID)信息和某些保留磁道的其他一些信息,,當(dāng)時(shí)低格工具都必須有這樣的功能。但現(xiàn)在的硬盤結(jié)構(gòu)已經(jīng)大不一樣,,如果再使用多年前的工具來(lái)做低格會(huì)導(dǎo)致許多令人痛苦的意外。難怪經(jīng)常有人在痛苦地高呼:“危險(xiǎ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、寫磁道伺服信息,,對(duì)所有磁道進(jìn)行重新編號(hào),。有些硬盤允許將每個(gè)磁道的伺服信息重寫,并給磁道重新賦予一個(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、寫狀態(tài)參數(shù),,并修改特定參數(shù),。有些硬盤會(huì)有一個(gè)狀態(tài)參數(shù),記錄著低格過(guò)程是否正常結(jié)束,,如果不是正常結(jié)束低格,,會(huì)導(dǎo)致整個(gè)硬盤拒絕讀寫操作,這個(gè)參數(shù)以富士通IDE硬盤和希捷SCSI硬盤為典型,。有些硬盤還可能根據(jù)低格過(guò)程的記錄改寫某些參數(shù),。

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

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

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

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

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

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

  A:\>Debug

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

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

  Are you dynamically configuring the drive-answer YN t

  Press“Y”to begin formatting the drive C: with interleave 03(鍵入“Y”后開始對(duì)硬盤進(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)盤到A驅(qū)動(dòng)器,即可進(jìn)行分區(qū),,高級(jí)格式化等操作來(lái)安裝系統(tǒng)了,。

  (2)、通過(guò)調(diào)用INT 13H中斷的7號(hào)功能對(duì)硬盤進(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盤0磁道)

  -XXXX:0109 INT 13

  -XXXX:010B INT 3

  -XXXX:010D

  -G 100

  這樣硬盤就被低格了,。

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

  對(duì)硬盤調(diào)用INT 13H中斷的5號(hào)功能只低格0面0道1扇區(qū),而不必低格整個(gè)硬盤,,從而使低格在很短的時(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盤0磁道)

  -XXXX:010B INT 13

  -XXXX:010D INT 3

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

  -G 100

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

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

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

  A DM軟件以PCAT方式管理硬盤,。

  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)方式。初始化硬盤時(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ì)硬盤進(jìn)行低級(jí)格式化,,這種方法非常簡(jiǎn)單,、方便,因此如果可能的話,,筆者推薦使用這種方法進(jìn)行硬盤低格,。具體操作方法:在開機(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)行待低格硬盤,,同時(shí)回答一些程序提問(wèn)即可進(jìn)行硬盤低級(jí)格式化。

  2,、lformat.com程序低格硬盤

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

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

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

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

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

高級(jí)格式化

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

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

硬盤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開始加電自檢(Power-On Self Test, POST),,若成功執(zhí)行INT 19h(SYSTEM - BOOTSTRAP LOADER)

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

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

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

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

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

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

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

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

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

磁盤的啟動(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ù)

這是從我的硬盤上提取的MBR(硬盤是Maxtor的金鉆20G,,netfay的電腦早過(guò)時(shí)了:P),不同型號(hào)的硬盤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 :[email protected]%.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 [email protected]......^..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開始,,下面看反編譯的結(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ū)表的開始

061E B104 MOV CL,04 ;循環(huán)4次,硬盤最多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)志和開始地址分別存入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)程序

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

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

1.MBR的讀取

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

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

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

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

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

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讀取位于硬盤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 (指定第一物理盤的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ū)的硬盤主引導(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ū)信息表),。它是由磁盤介質(zhì)類型及用戶在使用FDISK定義分區(qū)說(shuō)確定的,。在實(shí)際應(yīng)用中,F(xiàn)DISK對(duì)一個(gè)磁盤劃分的主分區(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)磁盤0柱面,、0磁頭,、1扇區(qū)的主引導(dǎo)記錄(MBR)內(nèi)容到內(nèi)存指定單元0:7C00地址開始的區(qū)域,并執(zhí)行MBR程序段,。
    硬盤的主引導(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)管理硬盤,。
MBR程序段的主要功能如下:
·檢查硬盤分區(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所示。



                                 
硬盤邏輯驅(qū)動(dòng)器的分區(qū)表鏈結(jié)構(gòu)
    硬盤是由很多個(gè)512字節(jié)的扇區(qū)組成,,而這些扇區(qū)會(huì)被組織成一個(gè)個(gè)的“分區(qū)”,。
硬盤的分區(qū)規(guī)則是:一個(gè)分區(qū)的所有扇區(qū)必須連續(xù),硬盤可以有最多4個(gè)物理上的分區(qū),,這4個(gè)物理分區(qū)可以時(shí)個(gè)主分區(qū)或者3個(gè)主分區(qū)加一個(gè)擴(kuò)展分區(qū),。在DOS/Windows管理下的擴(kuò)展分區(qū)里,可以而且必須再繼續(xù)劃分邏輯分區(qū)(邏輯盤),。
從MS-DOS3.2問(wèn)世以后,,用戶就可以在一個(gè)物理硬盤驅(qū)動(dòng)器上劃分一個(gè)主分區(qū)和一個(gè)擴(kuò)展分區(qū),并在擴(kuò)展分區(qū)上創(chuàng)建多個(gè)邏輯驅(qū)動(dòng)器,,也即我們常說(shuō)的一個(gè)物理盤上多個(gè)邏輯盤,。
舉一個(gè)例子,一個(gè)10G的硬盤,,安裝Windows,有C:,、D:、E:三個(gè)邏輯盤,,那么它的分區(qū)情況可以是如下的方式:
分區(qū)一:主分區(qū)2GB,,格式化為C:盤。
分區(qū)二:擴(kuò)展分區(qū)8GB,。它被再劃分為兩個(gè)各4GB的邏輯盤,,格式化為以D:和E:盤。
在一個(gè)劃分有多個(gè)主分區(qū)的硬盤上,,則可安裝多個(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:邏輯盤的方式來(lái)管理,。而Linux則不同,,它是把“分區(qū)”看作一個(gè)設(shè)備,,既沒(méi)有“擴(kuò)展分區(qū)”的概念,也沒(méi)有“邏輯盤”的概念,。
1.邏輯盤的鏈接關(guān)系
在FAT文件系統(tǒng)中,,硬盤的邏輯盤字符用字符C:、D:,、E:,、...、Z:來(lái)表示,。主分區(qū)一般被格式化成C:盤,,從D:盤開始的邏輯盤是建立在擴(kuò)展分區(qū)之上的。在系統(tǒng)進(jìn)行讀寫操作時(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開始的第一分區(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所示,。
   硬盤                      第一個(gè)虛擬              第二個(gè)虛擬                   第三個(gè)虛擬  
MBR分區(qū)表                    MBR分區(qū)表               MBR分區(qū)表                    MBR分區(qū)表

定義C:盤

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

定義D:盤

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

定義E:盤

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

定義F:盤

描述剩余空間

描述剩余空間

描述剩余空間

描述剩余空間

未用

未用

未用

未用

未用

未用

未用

未用

55AA

55AA

55AA

55AA

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



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

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

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

邏輯壞道

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

物理壞道

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

低格的作用

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

編輯本段方法

工具低格

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

匯編語(yǔ)言低格

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

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

  用DM進(jìn)行低級(jí)格式化   DM的全名是Hard Disk Management Program,,它能對(duì)硬盤進(jìn)行低級(jí)格式化、校驗(yàn)等管理工作,,可以提高硬盤的使用效率,。總的來(lái)說(shuō),,DM具有如下幾個(gè)功能:硬盤低級(jí)格式化,、分區(qū)、高級(jí)格式化,、硬盤參數(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方式管理硬盤。   A DM軟件以PCAT方式管理硬盤,。   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):   1ADM (自動(dòng)方式,。初始化硬盤時(shí)很多參數(shù)都用默認(rèn)值幾乎不要人工干預(yù)),。   2ADM (手動(dòng)方式,。作格式化時(shí)一些參數(shù)要人工指定),。   啟動(dòng)dm工具后,用戶就可以根據(jù)自己的需要選擇相應(yīng)的操作,,由于它也是以DOS用戶界面的形式存,,所以使用起來(lái)也十分簡(jiǎn)捷、明了,。

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

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

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

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

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

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

    類似文章 更多