硬盤結構,主引導記錄MBR,硬盤分區表DPT,主分區、擴展分區和邏輯分區,電腦啟動過程...

filex的文件系統看的云里霧里,還是先總結下FAT的一些基本知識吧。

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


主引導扇區
主引導扇區位于整個硬盤的0柱面0磁頭1扇區{(柱面,磁頭,扇區)|(0,0,1)},bios在執行自己固有的程序以后就會jump到MBR中的第一條指令。將系統的控制權交由mbr來執行。主引導扇區主要由三部分組成:主引導記錄 MBR(Master Boot Record或者Main Boot Record)、硬盤分區表 DPT(Disk Partition Table)和結束標志字三大部分組成。
41b86312270c843a58af534d.jpg

對于硬盤而言,一個扇區可能的字節數為128×2n (n=0,1,2,3)。大多情況下,取n=2,即一個扇區(sector)的大小為512字節。在總共512byte的主引導記錄中,MBR的引導程序占了其中的前446個字節(偏移0H~偏移1BDH),隨后的64個字節(偏移1BEH~偏移1FDH)為DPT(Disk PartitionTable,硬盤分區表),最后的兩個字節“55 AA”(偏移1FEH~偏移1FFH)是分區有效結束標志。

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

硬盤分區表DPT(Disk Partition Table)
硬盤分區表占據MBR扇區的64個字節(偏移01BEH--偏移01FDH),可以對四個分區的信息進行描述,其中每個分區的信息占據16個字節。具體每個字節的定義可以參見硬盤分區結構信息。
11ecf3358d2e3776241f1435.jpg


結束標志字
結束標志字55,AA(偏移1FEH- 偏移1FFH)是MBR扇區的最后兩個字節,是檢驗主引導記錄是否有效的標志。


電腦啟動過程
  • 系統開機或者重啟。
  • BIOS 加電自檢 ( Power On Self Test -- POST )。BIOS執行內存地址為 FFFF:0000H 處的跳轉指令,跳轉到固化在ROM中的自檢程序處,對系統硬件(包括內存)進行檢查。
  • 讀取主引導記錄(MBR)扇區。當BIOS檢查到硬件正常并與 CMOS 中的設置相符后,按照 CMOS 中對啟動設備的設置順序檢測可用的啟動設備。BIOS將相應啟動設備的第一個扇區(也就是MBR扇區)讀入內存地址為0000:7C00H 處。
  • 檢查0000:7DFEH-0000:7DFFH(MBR的結束標志位)是否等于 AA55H,若不等于則轉去嘗試其他啟動設備,如果沒有啟動設備滿足要求則顯示"NO ROM BASIC"然后死機。
  • 當檢測到有啟動設備滿足要求后,BIOS將控制權交給相應啟動設備。啟動設備的MBR將自己復制到0000:0600H處, 然后繼續執行。
  • 在主分區表中搜索標志為活動的分區,也就是檢驗磁盤分區表DPT的首字節是不是80H。如果檢測到80H,則表示該分區為活動分區,將該活動分區的第一個扇區(操作系統引導記錄區,Dos Boot Recorder,DBR)讀入內存地址 0000:7C00H 處。
  • 檢查0000:7DFEH-0000:7DFFH(DBR的結束標志位)是否等于 AA55H, 若不等于則顯示?: "Missing Operating System" 然后停止。
  • 當檢測到有分區滿足要求后,MBR將控制權交給相應的活動分區。
for short:
BIOS -> 硬盤MBR -> 活動分區DBR -> 操作系統

主引導扇區與硬盤分區

從主引導扇區的結構可以知道,它僅僅包含一個64個字節的硬盤分區表。由于每個分區信息需要16個字節,所以對于采用MBR型分區結構的硬盤(其磁盤卷標類型為MS-DOS),最多只能識別4個主要分區。所以對于一個采用此種分區結構的硬盤來說,想要得到4個以上的主要分區是不可能的。這里就需要引出擴展分區了。擴展分區也是Primary partition的一種,但它與主分區的不同在于可以劃分為無數個邏輯分區。

擴展分區中邏輯驅動器的引導記錄是鏈式的。每一個邏輯分區都有一個和MBR的分區表結構類似的擴展引導記錄(EBR),其分區表的第一項指向該邏輯分區本身的引導扇區,第二項指向下一個邏輯驅動器的EBR。對于Windows系統而言,一般都是只劃分一個主分區給系統,剩余的部分全部劃為擴展分區。

da8968b53e6c294b8ad4b2cb.jpg
藍色是主分區;綠、紅、紫是邏輯分區;灰色包含著邏輯分區是擴展分區;

9f0330030f0da3374afb51ab.jpg

cdcc0a0f9f1d53df34d1227b.jpg

0be222ee8635a0d7cc1b3e45.jpg

?擴展分區表項的內容

擴展分區表項 分區表項的內容 第一個項 包括數據的開始地址在內的與擴展分區中當前邏輯驅動器有關的信息 第二個項 有關擴展分區中的下一個邏輯驅動器的信息,包括包含下一個邏輯驅動器的EBR的扇區的地址。如果不存在進一步的邏輯驅動器的話,該字段不會被使用 第三個項 未用 第四個項 未用
reference:
http://zh.wikipedia.org/zh-cn/%E4%B8%BB%E5%BC%95%E5%AF%BC%E6%89%87%E5%8C%BA
www.raid-recovery.org/Article/sjhfdoc/200404/1.htmlwww.pcguide.com/ref/hdd/file/structPartitions-c.html
www.msexchange.org/tutorials/Disk-Geometry.html

轉載于:https://www.cnblogs.com/phyking/archive/2012/10/07/4456654.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260335.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260335.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260335.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

最全面 Nginx 入門教程 + 常用配置解析

轉自 http://blog.csdn.net/shootyou/article/details/6093562 Nginx介紹和安裝 一個簡單的配置文件 模塊介紹 常用場景配置 進階內容 參考資料 Nginx介紹和安裝 Nginx是一個自由、開源、高性能及輕量級的HTTP服務器及反轉代理服務器, 其性能與IMAP/POP3代理服務器…

linux 客戶機中不支持 unity_婚姻中的不理解,來源于夫妻雙方情感支持的不同

很多女性在婚姻中往往覺得無法得到丈夫的理解,當遇到一些生活或者工作上的問題的時候,她們想要在情感上得到丈夫的支持和理解。但是很多丈夫對此可能并不了解和理解,更傾向于用理性幫助妻子解決問題。而女性所需要的幫助可能并不是解決問題的…

Linux中使用crontab命令啟用自定義定時任務

一 簡介Linux下的任務調度分為兩類,系統任務調度和用戶任務調度系統任務調度:系統需要定期執行的任務,比如重啟、日志清理等,其配置文件是:/etc/crontab用戶任務調度:某個用戶需要定期執行的任務。用戶可以…

java 循環標記_深入淺析Java 循環中標簽的作用

continue和break可以改變循環的執行流程,但在多重循環中,這兩條語句無法直接從內層循環跳轉到外層循環。在C語言中,可以通過goto語句實現多重循環的跳轉,但在非循環結構中使用goto語句會使程序的結構紊亂,可讀性變差。…

JS,Jquery 調用 C#WebService

1&#xff0c;需要在服務下面把代碼的注釋去掉 // 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務&#xff0c;請取消對下行的注釋。   //[System.Web.Script.Services.ScriptService] 2,JS 調用方法如下 var request <?xml version"1.0" encoding"…

iOS tabview 適配問題

ios7的UITableView實現ios6的圓角效果 iOS7 UITableView做成類似iOS6風格 在iOS7的時候我們會發現cell的默認線條會向右偏移&#xff0c;使左邊空出了一些位置&#xff0c;這時候我們可以調用如下的方法來解決。這樣我們的cell就會和iOS6前的一樣鋪滿整個寬度了。 if ([tableVi…

PHP學習總結(14)——PHP入門篇之常用運算符

一、什么是運算符什么是運算符&#xff1f;運算符是告訴PHP做相關運算的標識符號。例如&#xff0c;你需要計算123乘以456等于多少&#xff0c;這時候就需要一個符號&#xff0c;告訴服務器&#xff0c;你需要做乘法運算。PHP中的運算符有哪些&#xff1f;PHP運算符一般分為算術…

百度時間顯示_文章的發布時間對百度優化網站重要嗎

文章的發布時間對百度優化網站重要嗎&#xff1f;這個問題&#xff0c;相信很多初做網站優化的萌新朋友都會問到&#xff0c;以小匠個人的經歷來分享這個問題的經驗&#xff0c;小匠認為&#xff0c;文章的發布時間對優化網站是非常重要的&#xff0c;下面小匠將從實際經歷來給…

循環鏈表解決約瑟夫環問題

約瑟夫環問題可以簡單的使用數組的方式實現&#xff0c;但是現在我使用循環鏈表的方法來實現&#xff0c;因為上午看到一道面試題規定使用循環鏈表解決約瑟夫環問題。 什么是約瑟夫環&#xff1f; “約瑟夫環是一個數學的應用問題&#xff1a;已知n個人&#xff08;以編號1&…

java 什么時候進行垃圾回收_java什么時候進行垃圾回收,垃圾回收的執行流程

java的垃圾回收分為三個區域新生代 老年代 永久代一個對象實例化時 先去看伊甸園有沒有足夠的空間如果有 不進行垃圾回收 ,對象直接在伊甸園存儲.如果伊甸園內存已滿,會進行一次minor gc然后再進行判斷伊甸園中的內存是否足夠如果不足 則去看存活區的內存是否足夠.如果內存足夠…

常用的webservice接口

商業和貿易&#xff1a; 1、股票行情數據 WEB 服務&#xff08;支持香港、深圳、上海基金、債券和股票&#xff1b;支持多股票同時查詢&#xff09; Endpoint: http://webservice.webxml.com.cn/WebServices/StockInfoWS.asmx Disco: http://webservice.webxml.com.cn/WebServ…

基于HTML5 Canvas 實現矢量工控風機葉輪旋轉

之前在拓撲上的應用都是些靜態的圖元&#xff0c;今天我們將在拓撲上設計一個會動的圖元——葉輪旋轉。 先看看最后我們實現的效果&#xff1a;http://www.hightopo.com/demo/fan/index.html 我們先來看下這個葉輪模型長什么樣 從模型上看&#xff0c;這個葉輪模型有三個葉片&a…

java 并發模型總類_java并發編程系列-內存模型基礎

java線程之間的通信對程序開發人員是完全透明的&#xff0c;內存的可見性問題很容易困擾很多開發人員。本篇博文將揭開java內存模型的神秘面紗&#xff0c;來看看內存模型到底是怎樣的。并發編程模型的分類并發編程中需要處理的兩個關鍵問題&#xff1a;線程之間如何通信線程之…

python調用java的jar包_python調用java的jar包報錯127

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓最近在弄python需要調用到Java的jar包&#xff0c;按照網上的教程走&#xff0c;最后總是報錯No matching overloads found for [init in find. at native\common\jp_method.cpp:127Java&#xff1a;package aes;import com.sun.cr…

iphone、Android接收System.Net.Mail發的郵件標題亂碼

參考地址&#xff1a;http://blog.csdn.net/whowhen21/article/details/5959225 在做項目時候&#xff0c;用到.Net的System.Net.Mail發送郵件&#xff0c;經測試&#xff0c;發現如果標題過長&#xff0c;收到的就會是亂碼了(那種Base64格式的數據)&#xff0c;幾經測試&#…

數據倉庫與數據挖掘的一些基本概念

下面內容摘自互聯網并作了整理。 名詞&#xff1a; BI(Business Intelligence)&#xff1a;商業智能&#xff0c; DW(Data Warehouse)&#xff1a;數據倉庫&#xff0c;詳見正文Q1部分。 OLTP(On-Line Transaction Processing)&#xff1a;聯機事務處理 也稱為面向交易的處理系…

ATS讀小文件(內存命中)

一個資源根據其大小可能會存在多個存儲對象中。如果足夠小&#xff08;連同doc結構的大小小于一個fragment的size&#xff09;&#xff0c;連同這個資源的meta信息一起存儲在一個doc中。如果比較大&#xff0c;第一個存儲對象保存資源的meta信息&#xff0c;后面跟著若干個frag…

python 加密解密_python加密解密

EncodeFile(python2.7加密)# -*- coding: utf8 -*-import base64import sysreload(sys)sys.setdefaultencoding(utf8)inFilesys.argv[1]try:fin open(inFile, "rb")fout open(inFile".txt", "w")base64.encode(fin, fout)passexcept Exception…

java double 兩位_java double 保留兩位小數

java保留兩位小數問題&#xff1a;方式一&#xff1a;四舍五入double f 111231.5585;BigDecimal b new BigDecimal(f);double f1 b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();保留兩位小數---------------------------------------------…

fatal error C1902: 程序數據庫管理器不匹配;請檢查安裝解決

終于找到原因了&#xff0c;原來是我安裝的字體渲染&#xff0c;并且采用注冊表的加載方式&#xff01;改掉就好了&#xff01;上天哪&#xff0c;這是怎么影響到的 卸載MacType程序后&#xff0c;進行嘗試&#xff01; VS2008 和 VS2010 又能用了&#xff01; 我想求教育。。。…