硬盘分区表简介

来源:互联网 发布:java动物乐园代码 编辑:程序博客网 时间:2024/05/16 19:05

毫无疑问,大多数人都有过对硬盘分区的经验。一块刚买来的新硬盘,必须要经过分区之后才能使用。但是具体的分区信息在硬盘上是怎么存储的呢?分区后的硬盘上有一个重要的数据结构,叫做硬盘分区表。这个数据结构就是保存分区信息的地方。

一般来说,硬盘分区表的第一部分(主分区表)位于硬盘的第一个扇区(主引导记录)中。占据这个扇区的第446-510个字节。这是一个4个元素的数组,每一项代表硬盘上的一个分区。硬盘分区表项结构可以用下面的C++结构表示

 

 

 

下面我们来解释一下这个结构中的各个字段

对于现在的硬盘,CHS地址已经基本不用,所以我们可以不用理会那两个CHS地址的字段。剩下的4个字段中,两个LBA地址不用说大家也知道是什么意思。剩下的文件系统标志字节,表明了每个分区上的文件系统,比如对于FAT16分区来说,这个字节是0x06

现在我们来解释一下分区的几总类型。第一种分区类型叫做主分区,也就是在硬盘MBR中的分区表中描述的普通分区。但是大家可以看到,主分区表中只能描述4个分区。也就是说一块硬盘上只能有4个分区。但是假如我们希望一块硬盘上有多余4个分区该如何操作呢?为了解决这个问题,人们定义了一种特殊的分区格式:扩展分区。如果一个分区表项的fileSystem字段为0x050x0F,那么这个分区表项就描述了一个扩展分区。一个扩展分区就相当于一块逻辑硬盘。在每个扩展分区的第一个扇区中也有一个分区表,格式和主分区表一样。里面可以定义4个分区。每个分区既可以是逻辑分区(可以建立文件系统的分区),也可以是嵌套的扩展分区。以这种方法,我们可以就在硬盘上划分任意多的分区了

 

下图是一个典型的硬盘分区结构

 

 

 

 

现在我们可以来看一下上次的主引导记录关于分区表的代码了,注意,这段代码暂时不支持扩展分区。

 

 

现在,读者应该可以看懂这段代码了

 

原创粉丝点击