对分区表的分析 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

硬盘是由多个盘体组成的,盘体又是有无数盘片组成,(当然有人会问:不是存在单碟硬盘吗?没错,单碟硬盘是双面可读的硬盘,当然也相当于两个盘片。)每个盘片又分为许多磁道,每个磁道有63个扇区,扇区是硬盘存储的基本单位,这是一个理想化的模型,之所以将硬盘用一个理想化的模型是为了对硬盘的研究更方便和具体化,客观上符合了工程实施的可行性。

   那么硬盘在读取数据时是如何定位一个具体位置呢?这是必须要解决的问题,其实在硬盘的内部有一个我们看不到的地址翻译器,于是解决了扇区的定位问题。

   对扇区的定位有两种方法:其一是C/H/S;其二是LBA,即扇区的编号。操作系统一般用LBA来计算,更适合计算机的使用。

C/H/S 相对比较直观,但是计算复杂或者说有的时候用C/H/S表示不出来,这时必须采用LBA,它的特点是计算简单,但是相对不直观,下面对这两种对分区的定位进行分析一下。

首先,一个转化关系必须清晰:

1柱面=255个盘片=255个磁头
 
一个柱面包含了若干磁道,如何来准确表示柱面中的具体磁道呢?这时就可以使用磁头参数了。每个磁头负责读取柱面中的处于不同高度的磁道,我们只要给出具体的磁头数值,就知道对应柱面中的哪个磁道了。这样我们根据柱面和磁头两个参数就可以准确地定位到盘体中的某个磁道,一个磁道上有63个扇区,我们只要再知道扇区的编号,就可以完成在三维空间中定位扇区的任务了,C/H/S三个参数就是这样定位扇区的。

 
1扇区=512字节

1磁道=63个扇区

利用C/H/S计算,磁头从0254磁头,扇区从163扇区;但是利用LBA计算的话,扇区从0开始计算,这是需要注意的地方。

硬盘的读取机制:

0/0/1 0/0/2,…………0/0/63

<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /> 0/1/1 0/1/1,…………0/1/63

0/2/1 0/2/2,…………0/2/63

……

0/254/1 ……           0/254/63

到此,整个硬盘的所有数据读取完毕。

 

 

分区时柱面是分区的粒度,即精确到柱面。

 

         255*63*512

1 柱面=---------------=7.8M

     2 20次方

 

当然,7.8M是不准确的,硬盘会为柱面预留出空间作为动态磁盘使用。分区的确定就是起始扇区和结束扇区确定后,一个分区的大小即可确定。

硬盘的第一个扇区是主引导扇区,又叫MBR,总共512字节,MBR扇区又叫0号扇区,是一个硬盘的起始位置。硬盘的结构由引导扇区(446字节),分区表(64字节),55AA2个字节)的结束标志组成。用磁盘编辑器分析磁盘,如果是55AA结尾,说明扇区的分区表有效。分区表最多能有4个主分区,每个分区有16个字节。

首先,以一个分区的字节为单位分析一下分区表的计算原理。

XX    XX    XX   XX    XX   XX   XX    XX

1--------------4    5------------8

XX    XX    XX   XX    XX   XX   XX    XX

9---------------12) (13------------16

1 4 :引导标志,起始磁道,起始扇区,起始柱面

5 8 :分区类型,结束磁道,结束扇区,结束柱面

9 12 :分区起始前的扇区,即分区起始扇区,

13-16 :分区的大小

 

通过上面分区的含义理解,只要分区的起始扇区和结束扇区确定后,分区表即可确定,一般情况下,硬盘的第一个扇区都是从63扇区开始,如果用C/H/S表示即从0柱面,1磁头,1扇区开始,结束于254磁头,63扇区,在计算验证时如果符合,就说明计算正确,下一篇博文将以具体例子分析分区表,今天这些基本知识必须心中有数,为下面的学习作铺垫。

本文源出:shenleigang.blog.51cto.com

请尊重版权,谢谢!!!!