日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

浅尝硬盘分区表

發布時間:2023/12/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅尝硬盘分区表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【0】README

0.1) text description from orange’s implemention of a os;
0.2) there are a number of analysis and attention proves to be essence of this page, I think;
0.3)Conclusion about hd partition table

  • C1)存在一個硬盤的情況下:

    • C1.1) 1~4這4個數字 為 主引導扇區 中的分區表項所用(主引導扇區分區表可以儲存最多1個擴展分區 和 不大于4個 的主分區,總數量==4), 從5 開始依次表示邏輯分區;(主引導扇區是硬盤的第一個扇區,而其他引導扇區是各個分區的第一個扇區)
    • C1.2)主設備號告訴os 應該用哪個驅動程序來處理,次設備號告訴driver 這是具體哪個設備(分區);
  • C2)存在兩塊硬盤的情況:

    • C2.1)主盤是hd0,次設備號是0,它的主引導扇區分區表對應的四個分區分別是 hd1、hd2、hd3、hd4;
    • C2.2)每個擴展分區中最多有16 個邏輯分區,邏輯分區的次設備號以hd1a 為基準遞增的;
    • C2.3)這種編號的好處是, 給定一個次設備號可以很容易計算出它是主分區還是擴展分區,或者是哪個擴展分區的哪個邏輯分區;
  • C3)百度總結:

    • C3.1) 一個硬盤主分區至少有1個,最多4個,擴展分區可以沒有,最多1個。且主分區+擴展分區總共不能超過4個。邏輯分區可以有若干個;
    • C3.2) MBR(主引導記錄)的分區表(主分區表)只能存放4個分區,如果要分更多的分區的話就要一個擴展分區表(EBR),擴展分區表放在一個系統ID為0x05的主分區上,這個主分區就是擴展分區,擴展分區能可以分若干個分區,每個分區都是個邏輯分區;

【1】intro to hard disk partioning tab

  • 1.1) 硬盤分區表其實就是一個數據結構,數組的每個成員是一個 16字節的結構體;這個結構體數組位于引導扇區的1BEh處,共有四個成員——因為IBM 當時覺得一臺PC最多會裝四個os;
  • 1.2) 現在我們的計算機中 每塊硬盤經常劃分為不止四個分區, 這是因為 每個主分區可以進一步分成多個邏輯分區;

  • 1.3) 對硬盤進行分區操作,如何創建虛擬硬盤,參見http://blog.csdn.net/PacosonSWJTU/article/details/48846887





如上圖所示,我們把一個80M 的硬盤映像分成了一個主分區和一個擴展分區,然后擴展分區又分成了 五個邏輯分區;我們的orange’s os 安裝在 第一個邏輯分區上(標有 ‘*’ 號);


【2】我們實際看一下分區表是什么樣子,用二進制查看器看一下引導扇區:

  • Alert):

    • A1)要知道,分區表就是個結構體數組, 共有四個成員,每個成員16個字節,那分區表結構體數組共占64字節,也即是除外引導扇區標志 0xAA55 后 的 最后64字節了;
    • A2)這個分區表結構體數組 存在于 引導扇區中除開 0xAA55 后的最后64個字節;

      第一個分區:00 ,01 ,01 ,00 ,83 ,0F ,3F ,13 ,3F 00 00 00 ,81 4E 00 00 第二個分區:00 ,00 ,01 ,14 ,05 ,0F ,3F ,A1 ,C0 4E 00 00 ,20 2F 02 00


【3】利用引導扇區中記錄的擴展分區的起始字節(0x4EC0 * 512 = 0x9D8000),我們來查看擴展分區的信息:

Attention):擴展分區的起始字節,也即是擴展分區的第一個邏輯分區的起始字節;

第一個分區:80 ,01 ,01 ,14 ,99 ,0F ,3F ,3B ,3F 00 00 00 ,41 9D 00 00 第二個分區:00 ,00 ,01 ,3C ,05 ,0F ,3F ,59 ,80 9D 00 00 ,20 76 00 00

3.1)對上表的分析-Analysis:

  • A1)當前擴展分區的第一個分區的起始扇區LBA 是0x3F,這個是相對于擴展分區基地址的LBA,它的真正LBA 是 4EC0h + 3Fh = 4EFFh;
  • A2)當前擴展分區的第二個分區的分區類型是 0x05,可知它又是一個擴展分區,起始扇區LBA 為 4EC0h + 9D80h = EC40h,字節偏移為 EC40h * 512 = 1D88000h,我們轉到該起始字節;

3.2)利用上述擴展分區的第一個邏輯分區的分區表數據結構 記錄的嵌套擴展分區的起始字節(EC40h * 512 = 1D88000h),我們來查看嵌套擴展分區的信息:
(因為,擴展分區中的第一個邏輯分區的分區表記錄著 另一個擴展分區的起始扇區,所以我們把這種擴展分區 叫做 嵌套擴展分區)

第一個分區:00 ,01 ,01 ,3C ,83 ,0F ,3F ,59 ,3F 00 00 00 ,E1 75 00 00 第二個分區:00 ,00 ,01 ,5A ,05 ,0F ,3F ,83 ,A0 13 01 00 ,60 A5 00 00

3.3)對上表的分析-Analysis:

  • A1)從分區類型值可以看出(0x05),在這個分區中, 又包含了一個普通分區和一個擴展分區,你可能一下子明白了,多個邏輯分區是由嵌套來實現的;
  • A2)一個擴展分區包含一個普通分區的同時, 又可以嵌套一個擴展分區;
  • A3)當前擴展分區的第一個分區的起始扇區LBA 是0x3F,這個是相對于擴展分區基地址的LBA,它的真正LBA 是 EC40h + 3Fh = EC7Fh;
  • A4)當前擴展分區的第二個分區的分區類型是 0x05,可知它又是一個擴展分區,起始扇區LBA 為 4EC0h + 0x113A0h = 16260h,字節偏移為 16260h * 51與2 = 2C4C000h,我們轉到該起始字節;

Attention)為什么 第一個分區的 起始扇區LBA 最后要加上 EC40h, 而第二個分區的 起始扇區LBA 最后要加上 4EC0h 呢?

  • A1)這里需要留意一點, 前一個表項(當前擴展分區的第一個分區)中的 起始扇區LBA 是相對于當前擴展分區的,而后一個表項(當前擴展分區的第二個分區)中的起始扇區——也就是下一個擴展分區的起始扇區——是相對于硬盤主引導扇區所指明的擴展分區的起始扇區的;
  • A2)很顯然,當前擴展分區的第一個分區(前一個表項)的起始扇區LBA是相對于 當前擴展分區,而當前擴展分區的基扇區號為 EC40,當然其要 加上 EC40了;
  • A3)還有,當前擴展分區的第二個分區(后一個表項)的起始扇區LBA是相對于 硬盤主引導扇區所指明的擴展分區的起始扇區而不是 當前擴展分區基扇區號,而引導扇區記錄的擴展分區起始扇區為 4EC0,當然其要 加上 4EC0了(表a所示);
  • A4)還有一個重要問題就是,為什么第二個分區表示的是擴展分區,因為我們通過它的分區類型 為 0x05,看出來的;
  • A5)就這樣,擴展分區的分區表信息就像一個鏈表一樣,我們可以一步一步地遍歷所有分區;

總結

以上是生活随笔為你收集整理的浅尝硬盘分区表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。