Monday, August 26, 2019

硬盤結構及MBR主引導記錄

硬盤由很多盤片(platter)組成,每個盤片的每個面都有一個讀寫磁頭。如果有N個盤片。就有2N個面,對應2N個磁頭(Heads),從0、1、2 開始編號。每個盤片被劃分成若干個同心圓磁道(邏輯上的,是不可見的。)每個盤片的劃分規則通常是一樣的。這樣每個盤片的半徑均為固定值R的同心圓再邏輯 上形成了一個以電機主軸為軸的柱面(Cylinders),從外至里編號為0、1、2……每個盤片上的每個磁道又被劃分為幾十個扇區(Sector),通 常的容量是512byte,並按照一定規則編號為1、2、3……形成Cylinders×Heads×Sector個扇區。這三個參數即是硬盤的物理參數。

硬盤存儲數據是根據電、磁轉換原理實現的。硬盤由一個或幾個表面鍍有磁性物質的金屬或玻璃等物質盤片以及盤片兩面所安裝的磁頭和相應的控制電路組成,其中盤片和磁頭密封在無塵的金屬殼中。

硬盤上的數據按照其不同的特點和作用大致可分為5部分:MBR區、DBR區、FAT區、DIR區和DATA區。

我們來分別介紹一下:

1、MBR區

MBR(Main Boot Record 主引導記錄區)位於整個硬盤的0磁道0柱面1扇區。不過,在總共512字節的主引導扇區中,MBR只佔用了其中的446個字節,另外的64個字節交給了 DPT(Disk Partition Table硬盤分區表),最後兩個字節“55,AA”是分區的結束標誌。這個整體構成了硬盤的主引導扇區。

主引導記錄中包含了硬盤的一系列參數和一段引導程序。其中的硬盤引導程序的主要作用是檢查分區表是否正確並且在系統硬件完成自檢以後引導具有激活標誌的分區上的操作系統,並將控制權交給啟動程序。MBR是由分區程序(如Fdisk.exe)所產生的,它不依賴任何操作系統,而且硬盤引導程序也是可以改變的,從而實現多系統共存。

下面,我們以一個實例讓大家更直觀地來了解主引導記錄:

例:80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00 在這裡我們可以看到,最前面的“80”是一個分區的激活標誌,表示系統可引導;“01 01 00”表示分區開始的磁頭號為01,開始的扇區號為01,開始的柱面號為00;“0B”表示分區的系統類型是FAT32,其他比較常用的有 04(FAT16)、07(NTFS);“FE BF FC”表示分區結束的磁頭號為254,分區結束的扇區號為63、分區結束的柱面號為764;“3F 00 00 00”表示首扇區的相對扇區號為63;“7E 86 BB 00”表示總扇區數為12289622。

磁盤引導原理:

計算機在按下power鍵以後,開始執行主板bios程序。進行完一系列檢測和配置以後。開始按bios中設定的系統引導順序引導系統。假定現在是硬盤。Bios執行完自己的程序後如何把執行權交給硬盤呢。交給硬盤後又執行存儲在哪裡的程序呢。其實,稱為mbr的一段代碼起着舉足輕重的作用。 MBR(master boot record),即主引導記錄,有時也稱主引導扇區。位於整個硬盤的0柱面0磁頭1扇區(可以看作是硬盤的第一個扇區),bios在執行自己固有的程序以 後就會jump到mbr中的第一條指令。將系統的控制權交由mbr來執行。在總共512byte的主引導記錄中,MBR的引導程序佔了其中的前446個字 節(偏移0H~偏移1BDH),隨後的64個字節(偏移1BEH~偏移1FDH)為DPT(Disk PartitionTable,硬盤分區表),最後的兩個字節“55 AA”(偏移1FEH~偏移1FFH)是分區有效結束標誌。

MBR不隨操作系統的不同而不同,意即不同的操作系統可能會存在相同的MBR,即使不同,MBR也不會夾帶操作系統的性質。具有公共引導的特性。

我們看DPT部分。操作系統為了便於用戶對磁盤的管理。加入了磁盤分區的概念。即將一塊磁盤邏輯劃分為幾塊。磁盤分區數目的多少只受限於C~Z的英文字母的數目,在DPT共64個字節中如何表示多個分區的屬性呢?Microsoft通過鏈接的方法解決了這個問題。在DPT共64個字節中,以16個字節為分區表項單位描述一個分區的屬性。也就是說,第一個分區表項描述一個分區的屬性,一般為基本分區。第二個分區表項描述除基本分區外的其餘空間,一般而言,就是我們所說的擴展分區。

2、DBR區

DBR(Dos Boot Record)是操作系統引導記錄區的意思。它通常位於硬盤的0磁道1柱面1扇區,是操作系統可以直接訪問的第一個扇區,它包括一個引導程序和一個被稱為 BPB(Bios Parameter Block)的本分區參數記錄表。引導程序的主要任務是當MBR將系統控制權交給它時,判斷本分區跟目錄前兩個文件是不是操作系統的引導文件(以DOS為 例,即是Io.sys和Msdos.sys)。如果確定存在,就把它讀入內存,並把控制權交給該文件。BPB參數塊記錄著本分區的起始扇區、結束扇區、文件存儲格式、硬盤介質描述符、根目錄大小、FAT個數,分配單元的大小等重要參數。DBR 是由高級格式化程序(即Format.com等程序)所產生的。

3、FAT區

在DBR之後的是我們比較熟悉的FAT(File Allocation Table文件分配表)區。在解釋文件分配表的概念之前,我們先來談談簇(Cluster)的概念。文件佔用磁盤空間時,基本單位不是字節而是簇。一般情況下,軟盤每簇是1個扇區,硬盤每簇的扇區數與硬盤的總容量大小有關,可能是4、8、16、32、64…… 同一個文件的數據並不一定完整地存放在磁盤的一個連續的區域內,而往往會分成若干段,像一條鏈子一樣存放。這種存儲方式稱為文件的鏈式存儲。由於硬盤上保存着段與段之間的連接信息(即FAT),操作系統在讀取文件時,總是能夠準確地找到各段的位置並正確讀出。為了實現文件的鏈式存儲,硬盤上必須準確地記錄哪些簇已經被文件佔用,還必須為每個已經佔用的簇指明存儲後繼內容的下一個簇的簇號。對一個文件的最後一簇,則要指明本簇無後繼簇。這些都是由FAT表來保存的,表中有很多表項,每項記錄一個簇的信息。由於FAT對於文件管理的重要性,所以FAT有一個備份,即在原FAT的後面再建一個同樣的FAT。初形成的FAT中所有項都標明為“未佔用”,但如果磁盤有局部損壞,那麼格式化程序會檢測出損壞的簇,在相應的項中標為“壞簇”,以後存文件時就不會再使用這個簇了。FAT的項數與硬盤上的總簇數相當,每一項佔用的字節數也要與總簇數相適應,因為其中需要存放簇號。FAT的格式有多種,最為常見的是FAT16和FAT32。

4、DIR區

DIR(Directory)是根目錄區,緊接着第二FAT表(即備份的FAT表)之後,記錄著根目錄下每個文件(目錄)的起始單元,文件的屬性等。定位文件位置時,操作系統根據DIR中的起始單元,結合FAT表就可以知道文件在硬盤中的具體位置和大小了。

5、數據(DATA)區

數據區是真正意義上的數據存儲的地方,位於DIR區之後,佔據硬盤上的大部分數據空間。

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.