乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      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ū))沒有相對(duì)扇區(qū)又叫DOS扇區(qū)編號(hào),只能調(diào)用BIOS訪問。

      第一個(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不能直接訪問。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ì)超過2^6 - 1 = 63;用8位二進(jìn)制數(shù)表示的磁頭號(hào)不會(huì)超過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è)界和用戶所接受。硬盤廠商解決這一問題的方法是定義了新的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接口。通過這種方式,能實(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ū)都不允許跨柱面,即均以柱面為單位,這就是通常所說的分區(qū)粒度。在未超過8.4GB的分區(qū)上,C/H/S的表示方法和扇區(qū)數(shù)的表示方法所表示的分區(qū)大小是一致的。超過8.4GB的/H/S/C一般填充為FEH/FFH/FFH,即C/H/S所能表示的最大值;有時(shí)候也會(huì)用柱面對(duì)1024的模來填充。不過這幾個(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。如果磁盤上沒有擴(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ū),可用來引導(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ù)挠嗔浚現(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)和磁盤文件的訪問具有至關(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ū)來引導(dǎo)系統(tǒng)。由于在磁盤正常工作過程中系統(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è)值,指明訪問的設(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)可以不訪問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ū)來說,分區(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ū)才能正常訪問。其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ú)法下載或查看附件本文來自:創(chuàng)幻論壇 http://www.

      UID55456帖子9783 精華45 積分47222 威望0 金幣0  閱讀權(quán)限18 性別男 來自有樹砍的地方 在線時(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)用了。一般來說,INT19先從第一個(gè)軟盤驅(qū)動(dòng)器中讀啟動(dòng)扇區(qū)記錄。

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

      地址上,INT19也跳到了這個(gè)地址上。但是,如果沒有在軟盤中找到這個(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ù)來決定用來啟動(dòng)的驅(qū)動(dòng)器和這個(gè)驅(qū)動(dòng)器分區(qū)在硬盤上

      的位置。

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

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

      注意(非常之重要):

        1)活動(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來讀取活動(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中沒有任何地址是有用的。

      (另一個(gè)LBA不能解決>528M問題的原因)   這點(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           #沒有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.*

      本文來自:創(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用來描述本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)行分配的最基本單位是簇。文件分配表是反映硬盤上所有簇的使用情況,通過查文件分配表可以得知任一簇的使用情況。DOS在給一個(gè)文件分配空間時(shí)總先掃描FAT,找到第一個(gè)可用簇,將該空間分配給文件,并將該簇的簇號(hào)填到目錄的相應(yīng)段內(nèi)。即形成了“簇號(hào)鏈”。FAT就是記錄文件簇號(hào)的一張表。FAT的頭兩個(gè)域?yàn)楸A粲?,?duì)FAT12來說是3個(gè)字節(jié),F(xiàn)AT來說是4個(gè)字節(jié)。其中頭一個(gè)字節(jié)是用來描述介質(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反映硬盤上所有簇的使用情況,它記錄了文件在硬盤中具體位置(簇)。

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

      據(jù)這條鏈。

        ?。?)由簇號(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)文件名使用了上表中所說的“保留”這片區(qū)域。

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

            登記表.

         (2)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í)格式化劃分出來的扇區(qū)格式磁性記錄部分丟失,從而出現(xiàn)大量“壞扇區(qū)”時(shí),可以通過低級(jí)格式化來重新劃分“扇區(qū)”。但是前提是硬盤的盤片沒有受到物理性劃傷。硬盤低級(jí)格式化的功用硬盤低格格式化是對(duì)硬盤最徹底的初始化方式,經(jīng)過低格后的硬盤,原來保護(hù)的數(shù)據(jù)將全部丟失,所以一般來說低格硬盤是非常不可取的,只有非常必要的時(shí)候才能低格硬盤。當(dāng)硬盤出現(xiàn)某種類型的壞道時(shí),使用低級(jí)格式化能起到一定的緩解或者屏蔽作用。

        邏輯壞道相對(duì)比較容易解決,它指硬盤在寫入時(shí)受到意外干擾,造成有ECC錯(cuò)誤。從過程上講,它是指硬盤在寫入數(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ù)軟件)來修復(fù),此外,對(duì)于微小的硬盤表面損傷,一些硬盤工具(例如西部數(shù)據(jù)的Data Lifeguard Tools)就可以重新定向到一個(gè)好的保留扇區(qū)來修正錯(cuò)誤。

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

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

      2、對(duì)扇區(qū)進(jìn)行讀寫檢查,并嘗試替換缺陷扇區(qū)。有些低格工具會(huì)對(duì)每個(gè)扇區(qū)進(jìn)行讀寫檢查,如果發(fā)現(xiàn)在讀過程或?qū)戇^程出錯(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接口的硬盤),需要在低格過程中重寫每個(gè)扇區(qū)的標(biāo)識(shí)(ID)信息和某些保留磁道的其他一些信息,當(dāng)時(shí)低格工具都必須有這樣的功能。但現(xiàn)在的硬盤結(jié)構(gòu)已經(jīng)大不一樣,如果再使用多年前的工具來做低格會(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)過編號(hào)后,每個(gè)扇區(qū)都分配到一個(gè)特定的標(biāo)識(shí)信息(ID)。編號(hào)時(shí),會(huì)自動(dòng)跳過P-list中所記錄的缺陷扇區(qū),使用戶無(wú)法訪問到那些缺陷扇區(qū)(用戶不必在乎永遠(yuǎn)用不到的地方的好壞)。如果這個(gè)過程半途而廢,有可能導(dǎo)致部分甚至所有扇區(qū)被報(bào)告為標(biāo)識(shí)不對(duì)(Sector ID not found, IDNF)。要特別注意的是,這個(gè)編號(hào)過程是根據(jù)真正的物理參數(shù)來進(jìn)行的,如果某些低格工具按邏輯參數(shù)(以 16heads 63sector為最典型)來進(jìn)行低格,是不可能進(jìn)行這樣的操作。

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

      6、寫狀態(tài)參數(shù),并修改特定參數(shù)。有些硬盤會(huì)有一個(gè)狀態(tài)參數(shù),記錄著低格過程是否正常結(jié)束,如果不是正常結(jié)束低格,會(huì)導(dǎo)致整個(gè)硬盤拒絕讀寫操作,這個(gè)參數(shù)以富士通IDE硬盤和希捷SCSI硬盤為典型。有些硬盤還可能根據(jù)低格過程的記錄改寫某些參數(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 ……(完成后詢問是否處理壞磁道)

        Do you want to format bad track-answer YN?

        若沒有則用“N”回答。屏幕顯示:

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

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

        (2)、通過調(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)等管理工作,可以提高硬盤的使用效率。總的來說,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用戶界面的形式存,所以使用起來也十分簡(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í)回答一些程序提問即可進(jìn)行硬盤低級(jí)格式化。

        2、lformat.com程序低格硬盤

        除了dm工具外,還有一款比較常見的低格程序是lformat.exe,它是由邁拓公司推出的低級(jí)格式化硬盤工具。在DOS狀態(tài)下運(yùn)行 lformat.exe后,程序即啟動(dòng)警告界面。在該畫面中說明的大概意思是,如果用戶使用這個(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)行低格,接著,問答幾個(gè)提問,即可開始硬盤低級(jí)格式化過程。

      編輯本段低格,高格及快格的區(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í)別問題。使用Format命令格式化不會(huì)自動(dòng)修復(fù)邏輯壞道,如果發(fā)現(xiàn)有壞道,最好使用SCANDISK或WINDOWS系統(tǒng)的磁盤檢查功能、還有其它第三方軟件進(jìn)行修復(fù)或隱藏,邏輯壞道既可以通過磁盤檢查也可以通過低格解決,這取決于是扇區(qū)的哪個(gè)部分出現(xiàn)了錯(cuò)誤。

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

      硬盤MBR全面分析

      主板芯片和CPU收到了不符合規(guī)定的電流,將自動(dòng)產(chǎn)生一個(gè)RESET信號(hào),在主板沒有收到電源的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)存有問題,將顯示錯(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的電腦早過時(shí)了:P),不同型號(hào)的硬盤MBR稍有不同,不過功能都是一樣的

      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開始,下面看反編譯的結(jié)果(經(jīng)過修改)

      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)問題,這個(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)提供的磁盤操作命令來讀取它。但我們可以用ROM-BIOS中提供的INT13H的2號(hào)功能來讀出該扇區(qū)的內(nèi)容,也可用軟件工具Norton8.0中的DISKEDIT.EXE來讀取。

      用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ū)說確定的。在實(shí)際應(yīng)用中,F(xiàn)DISK對(duì)一個(gè)磁盤劃分的主分區(qū)可少于4個(gè),但最多不超過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ū)未用(即沒有指定);
          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ū)信息表來管理硬盤。
      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問世以后,用戶就可以在一個(gè)物理硬盤驅(qū)動(dòng)器上劃分一個(gè)主分區(qū)和一個(gè)擴(kuò)展分區(qū),并在擴(kuò)展分區(qū)上創(chuàng)建多個(gè)邏輯驅(qū)動(dòng)器,也即我們常說的一個(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來說,它能夠把它所能管轄的一個(gè)主分區(qū)和一個(gè)擴(kuò)展分區(qū)格式化,然后按照C:、D:、E:邏輯盤的方式來管理。而Linux則不同,它是把“分區(qū)”看作一個(gè)設(shè)備,既沒有“擴(kuò)展分區(qū)”的概念,也沒有“邏輯盤”的概念。
      1.邏輯盤的鏈接關(guān)系
      在FAT文件系統(tǒng)中,硬盤的邏輯盤字符用字符C:、D:、E:、...、Z:來表示。主分區(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ū)鏈表示意圖
      舉例來說,本來位于柱面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ì)于其它的邏輯盤,則就沒有這種對(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就是用這種方法來使一個(gè)擴(kuò)展分區(qū)看起來象是有多個(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í)格式化劃分出來的扇區(qū)格式磁性記錄部分丟失,從而出現(xiàn)大量“壞扇區(qū)”時(shí),可以通過低級(jí)格式化來重新劃分“扇區(qū)”。但是前提是硬盤的盤片沒有受到物理性劃傷。   硬盤低級(jí)格式化的功用硬盤低格格式化是對(duì)硬盤最徹底的初始化方式,經(jīng)過低格后的硬盤,原來保護(hù)的數(shù)據(jù)將全部丟失,所以一般來說低格硬盤是非常不可取的,只有非常必要的時(shí)候才能低格硬盤。而這個(gè)所謂的必要時(shí)候有兩種,一是硬盤出廠前,硬盤廠會(huì)對(duì)硬盤進(jìn)行一次低級(jí)格式化;另一個(gè)是當(dāng)硬盤出現(xiàn)某種類型的壞道時(shí),使用低級(jí)格式化能起到一定的緩解或者屏蔽作用。   對(duì)于第一種情況,這里不用多說了,因?yàn)橛脖P出廠前的低格工作只有硬盤工程師們才會(huì)接觸到,對(duì)于普通用戶而言,根本無(wú)須考慮這方面的事情。至于第二種情況,是什么類型的壞道時(shí)才需要低格呢?在說明這個(gè)關(guān)鍵性問題前,先來看看硬盤壞道的類型。

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

      邏輯壞道

        總的來說,壞道可以分為物理壞道和邏輯壞道。其中邏輯壞道相對(duì)比較容易解決,它指硬盤在寫入時(shí)受到意外干擾,造成有ECC錯(cuò)誤。從過程上講,它是指硬盤在寫入數(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ù)軟件)來修復(fù),此外,對(duì)于微小的硬盤表面損傷,一些硬盤工具(例如西部數(shù)據(jù)的Data Lifeguard Tools)就可以重新定向到一個(gè)好的保留扇區(qū)來修正錯(cuò)誤。   對(duì)于這些壞道類型,硬性的物理壞道肯定是無(wú)法修復(fù)的,它是對(duì)硬盤表面的一種最直接的損壞,所以即使再低格或者使用硬盤工具也無(wú)法修復(fù)(除非是非常微小的損壞,部分工具可以將這部份壞道保留不用以此達(dá)到解決目的)。

      低格的作用

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

      編輯本段方法

      工具低格

        對(duì)于如何進(jìn)行硬盤低格,一般來說是使用低格工具來操作,這個(gè)將在下面的章節(jié)中詳細(xì)介紹,這里再說一些相關(guān)話題。即低格工具跟硬盤檢測(cè)工具是有著本質(zhì)的區(qū)別,低格工具就是對(duì)硬盤進(jìn)行低格的作用,而硬盤檢測(cè)工具一般來說是硬盤廠商推出的用來檢測(cè)硬盤,及早發(fā)現(xiàn)硬盤錯(cuò)誤,以提醒用戶備份重要數(shù)據(jù)或者檢修硬盤用的,它不是用于低格硬盤。 而最常見的莫過于使用一些工具軟件來對(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 ……(完成后詢問是否處理壞磁道)   Do you want to format bad track-answer YN   若沒有則用“N”回答。屏幕顯示:   Format Successfulsystem will new restartInsert Dos diskette indrive A   插入系統(tǒng)盤到A驅(qū)動(dòng)器,即可進(jìn)行分區(qū),高級(jí)格式化等操作來安裝系統(tǒng)了。   (2)、通過調(diào)用INT 13H中斷的7號(hào)功能對(duì)硬盤進(jìn)行低格   操作如下:   A:\>DEBUG   -A 100   -XXXX0100 MOV AX,0703;(交叉因子為3   -XXXX0103 MOV CX,0001;(0磁道0扇區(qū)起)   -XXXX0106 MOV DX,0080;(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 BX,0180;(設(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)等管理工作,可以提高硬盤的使用效率??偟膩碚f,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ù))。   2、ADM (手動(dòng)方式。作格式化時(shí)一些參數(shù)要人工指定)   啟動(dòng)dm工具后,用戶就可以根據(jù)自己的需要選擇相應(yīng)的操作,由于它也是以DOS用戶界面的形式存,所以使用起來也十分簡(jiǎn)捷、明了。

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

        除了上面介紹的兩種低格工具外,還有許多其它低級(jí)格式化方法。   1CMOS中直接操作   如果主板支持,用戶可以直接在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í)回答一些程序提問即可進(jìn)行硬盤低級(jí)格式化。   2、lformat.com程序低格硬盤   除了dm工具外,還有一款比較常見的低格程序是lformat.exe,它是由邁拓公司推出的低級(jí)格式化硬盤工具。在DOS狀態(tài)下運(yùn)行 lformat.exe后,程序即啟動(dòng)警告界面。在該畫面中說明的大概意思是,如果用戶使用這個(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)行低格,接著,問答幾個(gè)提問,即可開始硬盤低級(jí)格式化過程。

      編輯本段低格,高格及快格的區(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)過低格的,實(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í)別問題。使用Format命令格式化不會(huì)自動(dòng)修復(fù)邏輯壞道,如果發(fā)現(xiàn)有壞道,最好使用SCANDISKWINDOWS系統(tǒng)的磁盤檢查功能、還有其它第三方軟件進(jìn)行修復(fù)或隱藏,邏輯壞道既可以通過磁盤檢查也可以通過低格解決,這取決于是扇區(qū)的哪個(gè)部分出現(xiàn)了錯(cuò)誤。

      快速格式化 刪除文件分配表;不檢查扇區(qū)損壞情況; 可以在DOS和操作系統(tǒng)上進(jìn)行,只能對(duì)分區(qū)操作??焖俑袷交仓皇谴鎯?chǔ)數(shù)據(jù) DOS下可能有分區(qū)識(shí)別問題。另外,似乎Linux系統(tǒng)沒有快速格式化命令。

        本站是提供個(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)論公約

        類似文章 更多