硬盤MBR詳細介紹

硬盤MBR詳細介紹ios

   硬盤是如今計算機上最經常使用的存儲器之一。咱們都知道,計算機之因此神奇,是由於它具備高速分析處理數據的能力。而這些數據都以文件的形式存儲在硬盤裏。不過,計算機可不像人那麼聰明。在讀取相應的文件時,你必需要給出相應的規則。這就是分區概念。數據結構

    分區從實質上說就是對硬盤的一種格式化。當咱們建立分區時,就已經設置好了硬盤的各項物理參數,指定了硬盤主引導記錄(即Master Boot Record,通常簡稱爲MBR)和引導記錄備份的存放位置。而對於文件系統以及其餘操做系統管理硬盤所須要的信息則是經過之後的高級格式化,即 Format命令來實現。面、磁道和扇區硬盤分區後,將會被劃分爲面(Side)、磁道(Track)和扇區(Sector)。須要注意的是,這些只是個 虛擬的概念,並非真正在硬盤上劃軌道。ide

    先從面提及,硬盤通常是由一片或幾片圓形薄膜疊加而成。咱們所說,每一個圓形薄膜都有兩個「面」,這兩個面都是用來存儲數據的。按照面的多少,依次稱爲0 面、1面、2面……因爲每一個面都專有一個讀寫磁頭,也經常使用0頭(head)、1頭……稱之。按照硬盤容量和規格的不一樣,硬盤面數(或頭數)也不必定相同, 少的只有2面,多的可達數十面。各面上磁道號相同的磁道合起來,稱爲一個柱面(Cylinder)。spa

    上面咱們提到了磁道的概念。那麼究竟何爲磁道呢?因爲磁盤是旋轉的,則連續寫入的數據是排列在一個圓周上的。咱們稱這樣的圓周爲一個磁道。若是讀寫磁頭沿 着圓形薄膜的半徑方向移動一段距離,之後寫入的數據又排列在另一個磁道上。根據硬盤規格的不一樣,磁道數能夠從幾百到數千不等;一個磁道上能夠容納數KB 的數據,而主機讀寫時每每並不須要一次讀寫那麼多,因而,磁道又被劃分紅若干段,每段稱爲一個扇區。一個扇區通常存放512字節的數據。扇區也須要編號, 同一磁道中的扇區,分別稱爲1扇區,2扇區……操作系統

    計算機對硬盤的讀寫,處於效率的考慮,是以扇區爲基本單位的。即便計算機只須要硬盤上存儲的某個字節,也必須一次把這個字節所在的扇區中的512字節所有 讀入內存,再使用所需的那個字節。不過,在上文中咱們也提到,硬盤上面、磁道、扇區的劃分表面上是看不到任何痕跡的,雖然磁頭能夠根據某個磁道的應有半徑 來對準這個磁道,但怎樣才能在首尾相連的一圈扇區中找出所須要的某一扇區呢?原來,每一個扇區並不只僅由512個字節組成的,在這些由計算機存取的數據的 前、後兩端,都另有一些特定的數據,這些數據構成了扇區的界限標誌,標誌中含有扇區的編號和其餘信息。計算機就憑藉着這些標誌來識別扇區。硬盤的數據結構 在上文中,咱們談了數據在硬盤中的存儲的通常原理。爲了能更深刻地瞭解硬盤,咱們還必須對硬盤的數據結構有個簡單的瞭解。硬盤上的數據按照其不一樣的特色和 做用大體可分爲5部分:MBR區、DBR區、FAT區、DIR區和DATA區。設計

咱們來分別介紹一下:orm

一、MBR區內存

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

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

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

    例: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,分區結束的扇區號爲6三、分區結束的柱面號爲764;「3F 00 00 00」表示首扇區的相對扇區號爲63;「7E 86 BB 00」表示總扇區數爲12289622。

二、DBR區

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

三、FAT區

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

四、DIR區

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

五、數據(DATA)區

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

1、硬盤的物理結構:

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

            

   硬盤工做時,盤片以設計轉速高速旋轉,設置在盤片表面的磁頭則在電路控制下徑向移動到指定位置而後將數據存儲或讀取出來。當系統向硬盤寫入數據時,磁頭中 「寫數據」電流產生磁場使盤片表面磁性物質狀態發生改變,並在寫電流磁場消失後仍能保持,這樣數據就存儲下來了;當系統從硬盤中讀數據時,磁頭通過盤片指 定區域,盤片表面磁場使磁頭產生感應電流或線圈阻抗產生變化,經相關電路處理後還原成數據。所以只要能將盤片表面處理得更平滑、磁頭設計得更精密以及儘可能 提升盤片旋轉速度,就能造出容量更大、讀寫數據速度更快的硬盤。這是由於盤片表面處理越平、轉速越快就能越使磁頭離盤片表面越近,提升讀、寫靈敏度和速 度;磁頭設計越小越精密就能使磁頭在盤片上佔用空間越小,使磁頭在一張盤片上創建更多的磁道以存儲更多的數據。

2、硬盤的邏輯結構:

    硬盤由不少盤片(platter)組成,每一個盤片的每一個面都有一個讀寫磁頭。若是有N個盤片。就有2N個面,對應2N個磁頭(Heads),從0、一、2 開始編號。每一個盤片被劃分紅若干個同心圓磁道(邏輯上的,是不可見的。)每一個盤片的劃分規則一般是同樣的。這樣每一個盤片的半徑均爲固定值R的同心圓再邏輯 上造成了一個以電機主軸爲軸的柱面(Cylinders),從外至裏編號爲0、一、2……每一個盤片上的每一個磁道又被劃分爲幾十個扇區(Sector),通 常的容量是512byte,並按照必定規則編號爲一、二、3……造成Cylinders×Heads×Sector個扇區。這三個參數便是硬盤的物理參 數。咱們下面的不少實踐須要深入理解這三個參數的意義。
硬盤存儲數據是根據電、磁轉換原理實現的。硬盤由一個或幾個表面鍍有磁性物質的金屬或玻璃等物質盤片以及盤片兩面所安裝的磁頭和相應的控制電路組成(圖1),其中盤片和磁頭密封在無塵的金屬殼中。

3、磁盤引導原理:

3.1 MBR(master boot record)扇區:

  計算機在按下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也不會夾帶操做系統的性質。具備公共引導的特性。

  咱們來分析一段mbr。下面是用winhex查看的一塊希捷120GB硬盤的mbr。

MBR扇區代碼

    你的硬盤的MBR引導代碼可能並不是這樣。不過即便不一樣,所執行的功能大致是同樣的。這裏找wowocock關於磁盤mbr的反編譯,已加了詳細的註釋,感興趣能夠細細研究一下。

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

          

DPT代碼分析

注:上表中的超過1字節的數據都以實際數據顯示,就是按高位到地位的方式顯示。存儲時是按低位到高位存儲的。二者表現不一樣,請仔細看清楚。之後出現的表,圖均同。

  也能夠在winhex中看到這些參數的意義:

    說明: 每一個分區表項佔用16個字節,假定偏移地址從0開始。如圖3的分區表項3。分區表項4同分區表項3。

  一、0H偏移爲活動分區是否標誌,只能選00H和80H。80H爲活動,00H爲非活動。其他值對microsoft而言爲非法值。

  二、從新說明一下(這個很是重要):大於1個字節的數被以低字節在前的存儲格式格式(little endian format)或稱反字節順序保存下來。低字節在前的格式是一種保存數的方法,這樣,最低位的字節最早出如今十六進制數符號中。例如,相對扇區數字段的值 0x3F000000的低字節在前表示爲0x0000003F。這個低字節在前的格式數的十進制數爲63。

  三、系統在分區時,各分區都不容許跨柱面,即均以柱面爲單位,這就是一般所說的分區粒度。有時候咱們分區是輸入分區的大小爲7000M,分出來 倒是6997M,就是這個緣由。 偏移2H和偏移6H的扇區和柱面參數中,扇區佔6位(bit),柱面佔10位(bit),以偏移6H爲例,其低6位用做扇區數的二進制表示。其高兩位作柱 面數10位中的高兩位,偏移7H組成的8位作柱面數10位中的低8位。由此可知,實際上用這種方式表示的分區容量是有限的,柱面和磁頭從0開始編號,扇區 從1開始編號,因此最多隻能表示1024個柱面×63個扇區×256個磁頭×512byte=8455716864byte。即一般的8.4GB(實際上 應該是7.8GB左右)限制。實際上磁頭數一般只用到255個(由彙編語言的尋址寄存器決定),即便把這3個字節按線性尋址,依然力不從心。 在後來的操做系統中,超過8.4GB的分區其實已經不經過C/H/S的方式尋址了。而是經過偏移CH~偏移FH共4個字節32位線性扇區地址來表示分區所 佔用的扇區總數。可知經過4個字節能夠表示2^32個扇區,即2TB=2048GB,目前對於大多數計算機而言,這已是個天文數字了。在未超過 8.4GB的分區上,C/H/S的表示方法和線性扇區的表示方法所表示的分區大小是一致的。也就是說,兩種表示方法是協調的。即便不協調,也以線性尋址爲 準。(可能在某些系統中會提示出錯)。超過8.4GB的分區結束C/H/S通常填充爲FEH FFH FFH。即C/H/S所能表示的最大值。有時候也會用柱面對1024的模來填充。不過這幾個字節是什麼其實都可有可無了。

  雖然如今的系統均採用線性尋址的方式來處理分區的大小。但不可跨柱面的原則依然沒變。本分區的扇區總數加上與前一分區之間的保留扇區數目依然必 須是柱面容量的整數倍。(保留扇區中的第一個扇區就是存放分區表的MBR或虛擬MBR的扇區,分區的扇區總數在線性表示方式上是不計入保留扇區的。若是是 第一個分區,保留扇區是本分區前的全部扇區。

  附:分區表類型標誌如圖4

      

3.2 擴展分區

擴展分區中的每一個邏輯驅動器都存在一個相似於MBR的擴展引導記錄( Extended Boot Record, EBR),也有人稱之爲虛擬mbr或擴展mbr,意思是同樣的。擴展引導記錄包括一個擴展分區表和該扇區的標籤。擴展引導記錄將記錄只包含擴展分區中每一個 邏輯驅動器的第一個柱面的第一面的信息。一個邏輯驅動器中的引導扇區通常位於相對扇區32或63。可是,若是磁盤上沒有擴展分區,那麼就不會有擴展引導記 錄和邏輯驅動器。第一個邏輯驅動器的擴展分區表中的第一項指向它自身的引導扇區。第二項指向下一個邏輯驅動器的EBR。若是不存在進一步的邏輯驅動器,第 二項就不會使用,並且被記錄成一系列零。若是有附加的邏輯驅動器,那麼第二個邏輯驅動器的擴展分區表的第一項會指向它自己的引導扇區。第二個邏輯驅動器的 擴展分區表的第二項指向下一個邏輯驅動器的EBR。擴展分區表的第三項和第四項永遠都不會被使用。

    經過一幅4分區的磁盤結構圖能夠看到磁盤的大體組織形式。如圖5

        

    關於擴展分區,如圖6所示,擴展分區中邏輯驅動器的擴展引導記錄是一個鏈接表。該圖顯示了一個擴展分區上的三個邏輯驅動器,說明了前面的邏輯驅動器和最後一個邏輯驅動器之間在擴展分區表中的差別。

              

   除了擴展分區上最後一個邏輯驅動器外,表2中所描述的擴展分區表的格式在每一個邏輯驅動器中都是重複的:第一個項標識了邏輯驅動器自己的引導扇區,第二個項 標識了下一個邏輯驅動器的EBR。最後一個邏輯驅動器的擴展分區表只會列出它自己的分區項。最後一個擴展分區表的第二個項到第四個項被使用。

       

   擴展分區表項中的相對扇區數字段所顯示的是從擴展分區開始到邏輯驅動器中第一個扇區的位移的字節數。總扇區數字段中的數是指組成該邏輯驅動器的扇區數目。總扇區數字段的值等於從擴展分區表項所定義的引導扇區到邏輯驅動器末尾的扇區數。

    有時候在磁盤的末尾會有剩餘空間,剩餘空間是什麼呢?咱們前面說到,分區是以1柱面的容量爲分區粒度的,那麼若是磁盤總空間不是整數個柱面的話,不夠一個 柱面的剩下的空間就是剩餘空間了,這部分空間並不參與分區,因此通常沒法利用。照道理說,磁盤的物理模式決定了磁盤的總容量就應該是整數個柱面的容量,爲 什麼會有不夠一個柱面的空間呢。在個人理解看來,原本如今的磁盤爲了更大的利用空間,通常在物理上並非按照外圍的扇區大於裏圈的扇區這種管理方式,只是 爲了與操做系統兼容而抽象出來CHS。可能其實際空間容量不必定正好爲整數個柱面的容量。

相關文章
相關標籤/搜索