![](https://csdnimg.cn/release/download_crawler_static/11454917/bg8.jpg)
[返回索引]
说明: 每个分区表项占用 16 个字节,假定偏移地址从 0 开始。如图 3 的
分区表项 3。分区表项 4 同分区表项 3。
1、0H偏移为活动分区是否标志,只能选 00H和 80H。80H为活动,00H为非
活动。其余值对microsoft而言为非法值。
2、重新说明一下(这个非常重要):大于 1 个字节的数被以低字节在前的存
储格式格式(little endian format)或称反字节顺序保存下来。低字节在前的
格式是一种保存数的方法,这样,最低位的字节最先出现在十六进制数符号
中。例如,相对扇区数字段的值 0x3F000000 的低字节在前表示为
0x0000003F。这个低字节在前 的格式数的十进制数为 63。
3、系统在分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通
常所说的分区粒度。有时候我们分区是输入分区的大小为 7000M,分出来却是
6997M,就是这个原因。 偏移 2H和偏移 6H的扇区和柱面参数中,扇区占 6 位
(bit),柱面占 10 位(bit),以偏移 6H为例,其低 6 位用作扇区数的二进制表
示。其高两位做柱面数 10 位中的高两位,偏移 7H组成的 8 位做柱面数 10 位中
的低 8 位。由此可知,实际上用这种方式表示的分区容量是有限的,柱面和磁
头从 0 开始编号,扇区从 1 开始编号,所以最多只能表示 1024 个柱面×63 个扇
区×256 个磁头×512byte=8455716864byte。即通常的 8.4GB(实际上应该是
7.8GB左右)限制。实际上磁头数通常只用到 255 个(由汇编语言的寻址寄存器决
定),即使把这 3 个字节按线性寻址,依然力不从心。 在后来的操作系统中,超
过 8.4GB的分区其实已经不通过C/H/S的方式寻址了。而是通过偏移CH~偏移FH
共 4 个字节 32 位线性扇区地址来表示分区所占用的扇区总数。可知通过 4 个字
节可以表示 2^32 个扇区,即 2TB=2048GB,目前对于大多数计算机而言,这已
经是个天文数字了。在未超过 8.4GB的分区上,C/H/S的表示方法和线性扇区的
表示方法所表示的分区大小是一致的。也就是说,两种表示方法是协调的。即
使不协调,也以线性寻址为准。(可能在某些系统中会提示出错)。超过 8.4GB
的分区结束C/H/S一般填充为FEH FFH FFH。即C/H/S所能表示的最大值。有时候
也会用柱面对 1024 的模来填充。不过这几个字节是什么其实都无关紧要了。
虽然现在的系统均采用线性寻址的方式来处理分区的大小。但不可跨柱面
的原则依然没变。本分区的扇区总数加上与前一分区之间的保留扇区数目依然
必须是柱面容量的整数倍。(保留扇区中的第一个扇区就是存放分区表的MBR或
虚拟MBR的扇区,分区的扇区总数在线性表示方式上是不计入保留扇区的。如果
是第一个分区,保留扇区是本分区前的所有扇区。
附:分区表类型标志如图 4
第 8/39 页 数据恢复(http://www.sjhf.net)