日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

硬盤分區、尋址和系統啟動過程

系統 1823 0

硬盤物理結構

先看下硬盤物理結構

硬盤分區、尋址和系統啟動過程 1 硬盤物理結構

硬盤物理上主要是盤片、機械手臂、磁頭、和主軸等組成。在盤片邏輯劃分上又分為磁道、扇區,例如下圖:

硬盤分區、尋址和系統啟動過程 2 盤片磁道、扇區

磁道:

當硬盤盤片旋轉時,磁頭若保持在一個位置上,則磁頭會在盤片表面劃出一個圓形軌跡,這些圓形軌跡就叫做磁道。以盤片中心為圓心,由此可以劃分出很多磁道來, 這些磁道用肉眼是根本看不到的,因為它們僅 是盤面上以特殊方式磁化了的一些磁化區,硬盤上的信息便是沿著這樣的軌道存放的,盤片上的磁道 由外向內 依次從 “0” 開始進行編號。

硬盤分區、尋址和系統啟動過程

柱面:

由于硬盤可以由很多盤片組成,不同盤片的相同磁道就組成了柱面 (cylinder) ,如圖 1 所示。

磁頭:

假設有 N 個盤片組成的硬盤,那么有 2N 個盤面 ( 一個盤片有 2 ) ,那么磁頭也就有 2N 個,即每個盤面有一個磁頭。

扇區

早期的硬盤盤片的盤面以圓心開始向外放射狀將磁道分割成等分的弧段,這些弧段便是硬盤的扇區 ( 如圖 2) 。每個扇區一般規定大小為 512byte ,這里大家應該比較疑惑,外圈周長很明顯比內圈要長,怎么可能每個扇區都是 512byte? 其實答案早期硬盤外圈存儲比內圈存儲密度低一些,所以外圈很長但是仍然只能存儲 512byte ,因此如果我們知道了柱面數 ( 磁道數 ) Cylinders 、磁頭數 Heads 、扇區數 Sectors ,基本上硬盤的容量我們能夠計算出來 硬盤總容量 = Cylinders * Heads * Sectors * 512byte 。 但是由于早期硬盤外圈密度低,導致盤片利用率不高,現在的硬盤盤片則采用內外存儲密度一致的方式,每個磁道都劃分成以 512byte 大小的弧段,這樣也造成了內外磁道上扇區數量會不一樣,外圈上的扇區數要多于內圈扇區數。

硬盤尋址方式

硬盤存取、讀取數據,首先要做的就是尋址,即定位到數據所在的物理地址,在硬盤上就要找到對應的柱面、磁頭以及對應的扇區,那么怎么尋址呢? 有兩種方式: CHS LBA

CHS 模式:

CHS Cylinder/Head/Sector )尋址模式也稱為 3D 模式,是硬盤最早采用的尋址模式,它是在硬盤容量較小的前提下產生的。

硬盤的 C/H/S 3D 參數既可以計算出硬盤的容量,也可以確定數據所在的具體位置。這是因為扇區的三維物理地址與硬盤上的物理扇區一一對應,即三維物理地址可完全確定硬盤上的物理扇區。三維物理地址通常以 C/H/S 的次序來書寫,如 C/H/S 0/1/1 ,則第一個數字 0 0 柱面,第二個數字 1 1 磁頭(盤面),第三個數字 1 1 扇區,表示該數據位于硬盤 1 盤面上的 0 磁道 1 扇區。現在定位已完成,硬盤內部的參數和主板 BIOS 之間進行協議,正確發出尋址信號,從而正確定位數據位置。

早期硬盤一個磁道上分 63 個扇區,物理磁頭最多 16 個( 8 個盤片,盤片多了硬盤那就真要加厚了)。采用 8 位尋址方式, 8 位二進制位的最大值是 256 0-255 ),可以表示磁頭數,而扇區只有 63 個( 1-63 ),只需要其中 6 個二進制位即可表示,剩下 2 位拿去表示柱面,柱面數用 10(8+2) 位來表達,達到 1024 個柱面( 0-1023 ),因此總扇區數( 1024×16×63 )。前面說一個扇區大小為 512byte ,這也就是說,如果以 C/H/S 尋址模式尋址,則 IDE 硬盤的最大容量只能為 1024×16×63×512B= 500MB 左右。

可以思考下,在 8 位尋址模式下,其實可以尋址的硬盤最大容量為 1024×256×63×512B =8G, 那為啥 CHS 模式硬盤只支持到 500MB 呢?原因很簡單,我們的硬盤盤片不可能讓 128 片盤片重疊起來吧,那會是多厚??如果采用 28 位尋址方式,那么可以尋址 137G ,盤片也不可能一直堆疊下去。

LBA(Logical Block Addressing)

經常去買硬盤的人都知道,目前硬盤經常都說單碟、雙碟,其實意思就是說硬盤盤片只有 1 個或者 2 個,而且都只是用一面,單碟一個磁頭而已,但是硬盤容量確是幾百 G ,而且硬盤柱面往往都大于 1024 個柱面, CHS 是無法尋址利用完這些硬盤容量的。

另外由于老硬盤的扇區劃分方式對硬盤利用率不高,因此出現了現在的等密度盤,外圈的扇區數要比內圈多,原來的 3D 尋址方式也就不能適應這種方式,因此也就出現了新的尋址方式 LBA ,這是以扇區為單位進行的線性尋址方式,即從最外圈柱面 0 開始,依次將扇區號編為 0 1…. 等等,舉個例子,假設硬盤有 1024 個柱面,由于是等密度硬盤,柱面 0( 最外圈 ) 假設有 128 個扇區,依次編號為 0-127 ,柱面 1 120 個扇區,則依次編號為 127-246 ….. 依次最內圈柱面 127 只有扇區 64 個,則編號到最后。因此要定位到硬盤某個位置,只需要給出 LBA 數即可,這個就是邏輯數。

LBA 模式下,為了保留原來 CHS 時的概念,也可以設置柱面、磁頭、扇區等參數,但是他們并不是實際硬盤的物理參數,只是為了計算方便而出的一個概念, 1023 之前的柱面號都一一物理對應,而 1023 以后的所有柱面號都記錄成 1023 磁頭最大數可以設置為 255 ,而扇區數一般是每磁道 63 個, 硬盤 控制器會把由柱面、磁頭、扇區等參數確定的地址轉換為 LBA 數。這里我們再此明確兩個概念:

物理扇區號:

一般我們稱 CHS 模式下的扇區號為物理扇區號,扇區編號開始位置是 1

邏輯扇區號:

LBA 下的編號,扇區編號是從 0 開始。

CHS 模式轉換到邏輯扇區號 LBA

計算公式

LBA( 邏輯扇區號 )= 磁頭數 × 每磁道扇區數 × 當前所在柱面號 + 每磁道扇區數 × 當前所在磁頭號 + 當前所在扇區號 – 1

例如: CHS=0/0/1 ,則根據公式 LBA=255 × 63 × 0 + 63 × 0 + 1 – 1= 0

也就是說物理 0 柱面 0 磁頭 1 扇區,是邏輯 0 扇區。

硬盤分區

我們知道,一般使用硬盤,我們首先會對硬盤進行分區,然后對分區使用某個文件系統格式 (NTFS FAT ext2/ext3) 進行分區格式化,然后才能正常使用。那么分區是怎么回事呢?我們常見的 windows 中說到的 c d e 盤是怎么劃分出來的呢?其實,在裝 windows 系統過程中,一般我們只需要填寫每個分區的大小,看不出來分區過程的實際工作情況,我們可以從 linux 系統分區過程反而能反應底層實際分區情況。

柱面是分區的最小單位,即分區是以某個某個柱面號開始到某個柱面號結束的。

硬盤分區、尋址和系統啟動過程 如圖,柱面 1~200 我們可以分為一個區,柱面 201~500 再劃分為一個區, 501~1000 再劃分為一個區,以此類推。大家可以看到,柱面 0 沒有在任何分區里面,為何?這里說說,前面說到硬盤從外圈 ( 柱面 0) 到內圈扇區是依次編號,看似各個扇區沒有什么區別,但是這里硬盤的柱面 0 的第一個扇區 ( 邏輯扇區 0 CHS 表示應該是 0/0/1) 卻是最重要的,因為硬盤的第一個扇區記錄了整個硬盤的重要信息,第一個扇區 (512 個字節 ) 主要記錄了兩部分:

MBR(Master Boot Record) :主引導程序就放在這里,主引導程序是引導操作系統的一個程序,但是這部分只占 446 字節。

DPT(Disk Partition table) :硬盤分區表也在這里,分區表就是用來記錄硬盤的分區情況的,例如 c 盤是 1~200 柱面, d 盤是 201~500 柱面,分區表總共只占 64 字節,可以看出,分區其實很簡單,就是在這個表里面修改一下記錄就重新分區了,但是由于只有 64 字節,而一條記錄就要占用 16 字節,這個分區表最多只能記錄 4 個分區信息,為了繼續分出更多分區來,引入了擴展分區的概念,也就是說,在這 4 個分區中,可以使用其中一條記錄來記錄擴展分區的信息,然后在擴展分區中再繼續劃分邏輯分區,而邏輯分區的分區記錄則記錄在擴展分區的第一個扇區中,如此則可以像鏈表一樣劃分出很多分區來。但是請注意,一個分區表中可以有 1~4 條主分區,但是最多只能有 1 個擴展分區。

舉例,主分區可以是 P1:1~200 ,擴展分區 P2: 2~1400 ,擴展分區開始的第一個扇區可以用來記錄擴展分區中劃分出來的邏輯分區。

硬盤分區、尋址和系統啟動過程 分區表鏈

分區表之間是如何關聯的,詳細講一下,分區表是一個單向鏈表,第一個分區表,也就是位于硬盤第一個扇區中的 DPT ,可以有一項記錄擴展分區的起始位置柱面,類似于指針的概念,指向擴展分區 ( 3) ,根據這項記錄我們可以找到擴展分區的某柱面 0 磁頭 1 扇區 (CHS) ,而這個扇區中又存放了第二個分區表,第二個分區表第一項記錄一般表述了當前所在的邏輯分區的起始 / 終止柱面,第二項記錄表述了下一個邏輯分區所在的 0 磁頭 1 扇區 (CHS), 第三、第四項記錄不存任何信息 ( 4)

請看下圖,主引導記錄 / 分區表所在的是硬盤第一個分區,基本分區 1 、基本分 2 、基本分區 3 都是主分區、擴展分區內有 2 個邏輯分區,每個邏輯分區的第一個扇區都是分區表,至于引導扇區 (DBR) ,在系統啟動一節中會提及。

硬盤分區、尋址和系統啟動過程

系統啟動:

之前提到 MBR 中安裝的引導加載程序,他的作用是什么?

提供開機菜單選項:可以供用戶選擇啟動哪個操作系統,這是多重引導功能。

加載操作系統內核:每個操作系統都有自己的內核,需要引導程序來加載

轉交給其他引導程序:可以將工作移交給其他引導程序來進行上述操作。

其實引導加載程序除了可以安裝在 MBR 中,還可以直接安裝在每個分區的引導扇區 (DBR) 中,注意下,每個分區 ( 主分區、邏輯分區 ) 都有一個自己的啟動扇區,專門用來安裝引導加載程序,如上圖標 3 結構圖。

系統啟動過程:

首先 ,BIOS 啟動后,讀取硬盤第一個扇區 MBR 中的引導加載程序 ( 可能是 windows 或者 linux grub)

MBR 中的引導程序提供開機菜單,你可以選擇 1) 直接加載 windows 內核 2) 將工作轉交給 windows 分區內的引導扇區中的加載程序,讓他自己去加載內核 3) 轉交給 linux 分區內引導扇區,讓他去加載 linux.

根據用戶選擇的選項和引導加載程序中記錄的分區,到分區表找對應的分區柱面號等分區信息,啟動內核或者分區加載程序。

Window 安裝時默認會自動將 MBR windows 所在分區的引導扇區都裝上引導程序,而不會提供任何選項給用戶選擇,因此如果之前裝過其他操作系統,然后再另外裝一個 windows 時,會把公用的 MBR 覆蓋掉,如此,原來的操作系統就無法啟動了。如果先裝 windows ,然后裝 linux linux 會覆蓋 MBR ,然后讓用戶選擇是否將 windows 等其他操作系統的啟動項添加進來,如果你選擇了添加進來,那么你在開機時就會有兩個選項讓用戶進行選擇了。

后記

l 這里討論的全部是硬盤相關的東西,光盤不在此列,而且光盤的磁道并不是從外圈到內圈編號,而是從內圈開始編號,這點注意。

l 硬盤第一個扇區是由 MBR 和分區表占據,因此 0 柱面 0 磁頭上剩下的 62 個扇區一般會空出來保留(這部分保留稱為隱藏扇區,因為操作系統讀取不到這部分扇區,這部分扇區是提供給 BIOS 讀取的),而系統分區則從 0 柱面 1 磁頭 1 扇區開始,折算成 LBA=255 × 63 × 0 + 63 × 1 + 1 – 1= 63 ,即從 LBA 63 號扇區開始分區。不過查閱有的資料提及到另外一種說法,那就是有的硬盤可能 0 柱面全部空下來,如果真是這樣,那浪費可就真的大了。

l 對于擴展分區的分區表我們知道也是由擴展分區的第一個扇區開始寫,而且是寫到每個邏輯驅動器的第一個扇區,同樣,擴展分區內的第一個扇區所在的磁道剩余的扇區也會全部空余出來,這些保留的扇區操作系統也是無法讀取的,注意在擴展分區的第一個扇區里面是沒有引導加載記錄的。引導加載記錄都是放在隱藏扇區后面的。可以看圖 3 ,圖 4

硬盤分區、尋址和系統啟動過程


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 仁寿县| 海南省| 平山县| 东丽区| 婺源县| 曲松县| 镇巴县| 易门县| 永城市| 平南县| 贵港市| 伊春市| 连南| 顺义区| 龙山县| 民勤县| 县级市| 唐河县| 区。| 克什克腾旗| 成都市| 阳曲县| 恩施市| 华阴市| 库尔勒市| 徐水县| 克东县| 乡城县| 江城| 濮阳县| 若尔盖县| 沙坪坝区| 滕州市| 石台县| 仙游县| 饶阳县| 弥渡县| 安福县| 惠安县| 略阳县| 龙游县|