今天分析一下MBR的分区表字段,有点心得。本来想在CSDN上写个BLOG,备忘一下,谁知道插入不了图片。一冒火,跑来了CNBLOG。

发了牢骚,转入正题。

1:硬盘的基本结构

   硬盘有三个元素:磁头、柱面(磁道)、扇区,一个硬盘的大小计算公式为:

      硬盘大小=磁头 x 柱面(磁道)x 扇区 x 扇区大小(一般是512字节)

   硬盘结构的示意图如下所示:

   图片来自于:http://expl.cpst.net.cn/ehard/2011_12/324857111.html

    a.整体结构图

固态硬盘mbr分区 bios_固态硬盘mbr分区 bios

     b.磁头

       

固态硬盘mbr分区 bios_固态硬盘mbr分区 bios_02

      c.柱面

        

固态硬盘mbr分区 bios_分区表_03

    d.扇区

     

          

固态硬盘mbr分区 bios_固态硬盘mbr分区 bios_04

 

2:硬盘的LBA模式

    winHex工具可以查看自己的硬盘信息,工具-->磁盘工具-->设置磁盘信息,可以看到我的硬盘信息如下:

         

固态硬盘mbr分区 bios_磁道_05

    从上来可以看到,磁头数有255个,这个和我们实际了解的不太一样,实际上的硬盘一般磁头也就1-2个,这是怎么一回事呢。

原来上面的参数是逻辑上的表示,硬盘会通过一个LBA模式把逻辑的(磁头、柱面、扇区)转换成实际的硬盘(磁头、柱面、扇区)。

LBA更多的细节自己Baidu,Google吧。

 

3:自己硬盘上的相关信息

winHex-->工具-->打开磁盘-->物理磁盘-->确定

      然后点击“视图”-->主引导记录

     看到自己的MBR分区表信息如下:

固态硬盘mbr分区 bios_柱面_06

固态硬盘mbr分区 bios_固态硬盘mbr分区 bios_07

4:硬盘信息。

固态硬盘mbr分区 bios_磁道_08

5:分析
  为了方便,我们用(柱面,磁头,扇区)来表示硬盘位置,比如(0,0,1)表示0柱面,0磁头,1扇区

  分区表1:范围(0,1,1)--(0,32,32)

                前面跳过63扇区=1*63

                共有1985个扇区=(32-1)*63+ (32 -  1 + 1)

  分区表2:范围(0,32,33)--(12,223,19)

                前面跳过2048扇区= 63+1985=32*63+(33-1)
                共有204800个扇区=12*255*63+ (223-32)*63+(19-33+1)
  

 分区表3:范围(12,223,20)--(1023,254,63)

                前面跳过206848扇区= 2048+204800=12*255*63+ 223*63+(20 -1)
                共有81707008个扇区,注意(1023-12)*255*63 + (254-223)*63+(63-20+1) = 16243712 <81707008

   分区表4:范围(1023,254,63)--(1023,254,63)

               前面跳过81913856扇区= 206848 + 81707008

                共有543226544个扇区

 

    上面的分析过程中,我们知道每个柱面有255个磁头,每个磁头包含63个扇区。

    根据MBR的分区表结构定义:

     柱面用10Bit表示,范围值为[0~1023],

     磁头用8Bit表示,范围为[0~254],我也不知道为什么没有255

     扇区用6Bit表示,范围为[1~63],这里为什么没有0呢?

     因此,用(柱面,磁头,扇区)来表示可以最大表示为(1023,254,63),

     一个 1023*255*63+254*63+63=16450560个扇区。

     当扇区的起始值或者终止值大于16450560的时候,统一用(1023,254,63)表示,这就是分区表项3的终止值和表项4的初始、终止值都为(1023,254,63)的原因

    

6:对比

   分区1:不知道干什么用的

   分区2:204800个扇区=204800*0.5k(512Byte)=100M, 对应于系统保留的容量。

   分区3:81707008个扇区=81707008*512/1024/1024/1024=38.9609375G, 对应于C盘容量。

   分区4:543226544个扇区=543226544*512/1024/1024/1024=259.03060150146484375G, 磁盘的扩展分区的总大小。

 7: MBR的2T限制

     由上面的讨论知道,分区表用4Byte表示范围,一共可以表示2^32个扇区,共2^32*512Byte=2T大小。

    因此,如果要支持2T以上硬盘,就不能使用MBR来标示硬盘了。