2.3.1硬盤各分區(qū)的作用及原理
1.主引導(dǎo)扇區(qū)
接通電源后,計(jì)算機(jī)開始執(zhí)行主板BIOS程序。進(jìn)行完一系列檢測(cè)和配置以后。開始按BIOS中設(shè)定的系統(tǒng)引導(dǎo)順序引導(dǎo)系統(tǒng)。MBR (Master Boot Re-cord),即主引導(dǎo)記錄,有時(shí)也稱主引導(dǎo)扇區(qū)。位于整個(gè)硬盤的0柱面0磁頭1扇區(qū)/可以看作是硬盤的一第一扇區(qū)),BIOS在執(zhí)行自己固有的程序以后就會(huì)跳到MBR中的第一條指令。將系統(tǒng)的控制權(quán)交由主引導(dǎo)區(qū)來執(zhí)行。在總共512B的主引導(dǎo)記錄中,MBR的引導(dǎo)程序占了其中的前446B偏移OH偏移1BDH)、隨后的64B(偏移IBEH偏移1 FDH)為硬盤分區(qū)表(Disk Partition Table、 DPT),最后的兩個(gè)字節(jié)“55 AA”(偏移1 FEH移1FFH)是分區(qū)有效結(jié)束標(biāo)志。
MBR不隨操作系統(tǒng)的不同而不同,即不同的操作系統(tǒng)可能會(huì)存在相同的MBR,即使不同,MBR也不會(huì)夾帶操作系性質(zhì),具有公共引導(dǎo)的特性。
對(duì)于DPT部分,操作系統(tǒng)為了便于用戶對(duì)磁盤的管理,加入了磁盤分區(qū)的概念。即將一塊磁盤邏輯劃分為幾塊,磁盤分區(qū)數(shù)目的多少只受限于C~Z的英文字母的數(shù)目。在DPT中,共64個(gè)字節(jié),如何表示多個(gè)分區(qū)的屬性呢?微軟通過鏈接的方法解決了這個(gè)問題。在DPT的64個(gè)字節(jié)中,以16個(gè)字節(jié)為分區(qū)表項(xiàng)單位描述一個(gè)分區(qū)的屬性。第一個(gè)分區(qū)表項(xiàng)描述一個(gè)分區(qū)的屬性,一般為基本分區(qū);第二個(gè)分區(qū)表項(xiàng)描述除基本分區(qū)外的其余空間。一般而言,就是所說的擴(kuò)展分區(qū)。這部分的大體說明見表2-1。
2.操作系統(tǒng)引導(dǎo)扇區(qū)
操作系統(tǒng)引導(dǎo)扇區(qū)(DOS BOOT RECORD, DBR)通常位于硬盤的0磁道1柱面1扇區(qū)。這是對(duì)于DOS來說的,對(duì)于那些以多重引導(dǎo)方式啟動(dòng)的系統(tǒng)則位于相應(yīng)的主分區(qū)/擴(kuò)展分區(qū)的第一個(gè)扇區(qū)。它是操作系統(tǒng)可直接訪問的第一個(gè)扇區(qū),也包括一個(gè)引導(dǎo)程序和一個(gè)被稱為BPB的本分區(qū)參數(shù)記錄表。其實(shí)每個(gè)邏輯分區(qū)都有一個(gè)DBR,其參數(shù)視分區(qū)的大小、操作系統(tǒng)的不同而有所不同。引導(dǎo)程序的主要任務(wù)是判斷本分區(qū)根目錄前兩個(gè)文件是否為操作系統(tǒng)的引導(dǎo)文件,例如,MSDOS或者起源于MSDOS的Windows XP系統(tǒng)的10. SYS和MSDOW. SYS。引導(dǎo)程序就把第一個(gè)文件讀入內(nèi)存,并把控制權(quán)交予該文件。DBR參數(shù)塊記錄著本分區(qū)的起始扇區(qū)、結(jié)束扇區(qū)、文件存儲(chǔ)格式、硬盤介質(zhì)描述符、根目錄大小、FAT個(gè)數(shù)、分配單元(Allocation Unit,簇)的大小等重要參數(shù)。DBR由高級(jí)格式化程序產(chǎn)生,下面以最常用的FAT32為例,說明分區(qū)DBR各字節(jié)的含義,如圖2-24所示。
MBR將CPU發(fā)出的執(zhí)行指令轉(zhuǎn)移給引導(dǎo)扇區(qū)因此,引導(dǎo)扇區(qū)的前三個(gè)字節(jié)必須是合法的可執(zhí)行的基于X86的CPU指令。這通常是一條跳轉(zhuǎn)指令,該指令負(fù)責(zé)跳過接下來的幾個(gè)不可執(zhí)行的字節(jié)(BPB和擴(kuò)展BPB),跳到操作系統(tǒng)引導(dǎo)代碼部分。
跳轉(zhuǎn)指令之后是8字節(jié)處理OEM ID,它是一個(gè)字符串,OEM ID標(biāo)識(shí)了格式化該分區(qū)的操作系統(tǒng)的名稱和版本號(hào),為了保留與MS一DOS的兼容性,通常Windows 20由或Windows XP系統(tǒng)格式化該盤是在FAT32磁盤上的該字段中記錄了“MSDOS 5. 0”,在NTFS磁盤上Windows 2000或Windows XP記錄的是NT-FS格式的文件。
接下來的從偏移0X0B開始的是一段描述能夠使可執(zhí)行引導(dǎo)代碼找到相關(guān)參數(shù)的信息,通常稱為BPB (BIOS Parameter Block) , BPB一般開始于相同的位移量。因此,標(biāo)準(zhǔn)的參數(shù)都處于一個(gè)已知的位置。磁盤容量和幾何結(jié)構(gòu)變量都被封在BPB中。由于引導(dǎo)扇區(qū)的第一部分是一個(gè)x86跳線指令。因此,將來通過在BPB末端附加新的信息,可以對(duì)BPB進(jìn)行擴(kuò)展。只需要對(duì)該跳轉(zhuǎn)指令做一個(gè)小的調(diào)整就可以適應(yīng)BPB的變化。表2-4列出了FAT32分區(qū)的BPB字段名稱和含義。表2-5列出了FAT32分區(qū)的擴(kuò)展BPB字段名稱和含義。
DBR的偏移0X5A開始的數(shù)據(jù)為操作系統(tǒng)引導(dǎo)代碼。這是由偏移0X00開始的跳轉(zhuǎn)指令所指向的,在圖2-23所列出的移0X00 - 0X02的跳轉(zhuǎn)指令“EB58 90”,清楚地指明了OS引導(dǎo)代碼的偏移位置,Jump 58H加上跳轉(zhuǎn)指令所需的位移量,即開始于0X5 A。此段指令在不同的操作系統(tǒng)上和不同的引導(dǎo)方式上,其內(nèi)容也是不同的。Windows XP所使用的DBR只占用基本分區(qū)的0扇區(qū)。對(duì)于FAT32,一般的32個(gè)基本分區(qū)保留扇區(qū)只有第0扇區(qū)是有用的。以FAT32構(gòu)建的操作系統(tǒng)為例,如果是Windows 2000或Windows XP,系統(tǒng)會(huì)使用基本分區(qū)的第0扇區(qū)和第0XC扇區(qū)(Windows 2000或Windows XP,其第0XC的位置由第0扇區(qū)的0XAB偏移指出)存儲(chǔ)OS引導(dǎo)代碼。所以,在FAT32分區(qū)格式上,如果DBR一扇區(qū)的內(nèi)容正確而缺少第2扇區(qū)(Windows 98系統(tǒng))或第0XC扇區(qū)(Windows 2000或者Windows XP系統(tǒng)),系統(tǒng)也是無法啟動(dòng)的。如果自己手動(dòng)設(shè)置NTLDR雙系統(tǒng),必須知道這一點(diǎn)。
DBR扇區(qū)的最后兩個(gè)字節(jié)是一般存儲(chǔ)值為0X55AA的DBR有效標(biāo)志,對(duì)于其他的取值,系統(tǒng)將不會(huì)執(zhí)行DBR相關(guān)指令,上面提到的其他幾個(gè)參與OS引導(dǎo)的扇區(qū)也需以0X55AA為合法結(jié)束標(biāo)志。
FAT32中DBR的含義大致如此,對(duì)于FAT12和FAT16,其基本意義類似,只是相關(guān)偏移量和參數(shù)意義有小的差異,F(xiàn)AT16的扇區(qū)參數(shù)見表2-6~表2-8。
說明:
(1)這是FAT32短文件格式目錄項(xiàng)的意義,其中,文件名、擴(kuò)展名、時(shí)間、日期的算法和FAT16是相同的。
(2)由于FAT32可尋址的簇號(hào)到了32位二進(jìn)制數(shù)。所以,系統(tǒng)在記錄文件(文件夾)開始簇地址的時(shí)候也需要32位來記錄,F(xiàn)AT32啟用目錄項(xiàng)偏移0X12~0X13來表示起始簇號(hào)的高16位。
(3)文件長(zhǎng)度依然用4個(gè)字節(jié)表示,這說明FAT32依然只支持小于4GB的文件(目錄)。超過4GB的文件(目錄),系統(tǒng)會(huì)截?cái)嗵幚怼?br> FAT32的一個(gè)重要的特點(diǎn)是完全支持長(zhǎng)文件名,長(zhǎng)文件名依然是記錄在目錄項(xiàng)中的。為了低版本的OS或程序能正確讀取長(zhǎng)文件名文件,系統(tǒng)自動(dòng)為所有長(zhǎng)文件名文件創(chuàng)建了一個(gè)對(duì)應(yīng)的短文件名,使對(duì)應(yīng)數(shù)據(jù)既可以用長(zhǎng)文件名尋址,也可以用短文件名尋址,不支持長(zhǎng)文件名的OS或程序會(huì)忽略它認(rèn)為不合法的長(zhǎng)文件名字段,而支持長(zhǎng)文件名的OS或程序則會(huì)以長(zhǎng)文件名為顯式項(xiàng)來記錄和編輯,并隱藏起短文件名。
當(dāng)創(chuàng)建一個(gè)長(zhǎng)文件名文件時(shí),系統(tǒng)會(huì)自動(dòng)加上讀/取的短文件名,其一般原則如下:
(1)取長(zhǎng)文件名的前6個(gè)字符加上“~1”形成短文件名,擴(kuò)展名不變。
(2)如果已存在這個(gè)文件名,則符號(hào)“~”后的數(shù)字遞增,直到5。
(3)如果文件名中“~”后面的數(shù)字達(dá)到5,則短文件名只使用長(zhǎng)文件名的前兩個(gè)字母,通過數(shù)學(xué)操縱長(zhǎng)文件名的剩余字母生成短文件名的后四個(gè)字母,然后加后綴“~1”直到最后。
(4)如果存在DOS或程序無法讀取的字符,換以“-”。
長(zhǎng)文件名的實(shí)現(xiàn)有賴于目錄項(xiàng)偏移為0XB的屬性字節(jié),當(dāng)此字節(jié)的屬性為只讀、隱藏、系統(tǒng)、卷標(biāo),即其值為OFH時(shí),DOS和WIN32會(huì)認(rèn)為其不合法而忽略其存在。這正是長(zhǎng)文件名存在的依據(jù)。將目錄項(xiàng)的OXB置為OF,其他就任由系統(tǒng)定義了,Windows 2000, XP通常支持不超過255個(gè)字符的長(zhǎng)文件名。系統(tǒng)將長(zhǎng)文件名以13個(gè)字符為單位進(jìn)行切割,每一組占據(jù)一個(gè)目錄項(xiàng)。所以,可能一個(gè)文件需要多個(gè)目錄項(xiàng),這時(shí)長(zhǎng)文件名的各個(gè)目錄項(xiàng)按倒序排列在目錄表中,以防與其他文件名混淆。
長(zhǎng)文件名中的字符采用Unicode形式編碼,每個(gè)字符占據(jù)2B的空間,其目錄項(xiàng)定義見表2-12。
聯(lián)系客服