17 12
发新话题
打印

[讨论]硬盘分区表问题

[讨论]硬盘分区表问题

硬盘的分区表记录在0,0,1扇区的1BEH~1FDH。其中1C3~1C5是分区结束的Head、Sector、Cylinder。那么这三个字节的最大值为FF FF FF(Hex) ,Head为255;Sector为63;Cylinder为1023。此时能表示的最大容量是H*C*S*512/1000000=255*1023*63*512/1000000=8414.46MB
那么,如果分区大于8.4G时,该如何计算呢?请各位指教.
http://shop33034502.taobao.com/天敏视讯产品专卖

TOP

引用:
那么这三个字节的最大值为FF FF FF(Hex) ,Head为255;Sector为63;Cylinder为1023。
其实这时 Head为256;Sector为63;Cylinder为1024。不要忘记Head和Cylinder是从0开始算的

分区表偏移04字节处的值很关键。0c-扩展INT13h访问的FAT32分区;0b-传统INT13h访问的FAT32分区。从主引导程序中可看出如果分区大于8.4G时(就是0c标志),分区表偏移05-07字节就不起作用了,主要看08-0f字节。形式不是chs了而是LBA,4字节最大表示扇区数是多少你就自己算吧。











[此贴子已经被作者于2003-9-1 22:18:30编辑过]


TOP

谢谢fd999的指点。原来大于8.4G的分区,用1CA~1CD四个字节表示分区总的LBA数。

不过,1CD应该只有低四位和1CA~1CC的24位和起来总共28位表示LBA数。正因为如此,才有137G的限制啊。我说的对么?请指教。




[此贴子已经被作者于2003-9-2 17:54:06编辑过]


http://shop33034502.taobao.com/天敏视讯产品专卖

TOP

你说的对
12 34 56 08=08563412
注意那个0不算数。
[IMG]http://bbs.dostor.com/UploadFile/20038810272089329.gif[/IMG]

TOP

注意在有些硬盘里限制了那个08的最大值。
如WIDE-SCSI里最大值不能超过07,所以最大容量为64G。后来取消了限制,使标准的SCSI硬盘容量达到了147G。那些非标准的180GSCSI除外,它们是以类似RAID0的方式实现。
将来如果不淘汰当前的SCSI硬盘制造技术,就会利用到那个0的位置了,不过到现在还没有国际标准出来。
[IMG]http://bbs.dostor.com/UploadFile/20038810272089329.gif[/IMG]

TOP

1.分区表中1C2=0x0B时,1C3~1C5可以算出分区的容量,同时1CA~1CD也可算出容量。但两个数值有一些差别。这个差别怎么产生的呢?为什么?操作系统在访问时以那个为准?
2.分区表中1C2=0x0C时,1CA~1CD可算出分区的LBA数。此时1C3~1C5的值有没有意义呢?如果没有,那为何随着分区大小的变化,而不同?
3.无论多大的分区,1C3的值都为0xFE,为何?是否意味着分区只能以Cylinder的整数倍分。
4.这个问题和问题3可能有关系。为何分区时,实际容量总会与我们设定的不同?


[此贴子已经被作者于2003-9-3 15:57:58编辑过]


http://shop33034502.taobao.com/天敏视讯产品专卖

TOP

请问twain,分区软件分区时的流程是什么?如FDISK等。
http://shop33034502.taobao.com/天敏视讯产品专卖

TOP

三四年前我曾用LAB和CHS参数核对过几个硬盘的主分区,结果是完全一致的。我曾在自己的硬盘上做过试验,不过记得不太清楚了曾把部分(肯定不是全部)CHS都填成零,结果分区照样工作正常。这可能和CMOS中选择什么方式有关。如果选择LAB方式,是否就忽略了CHS参数。

TOP

关键在于主引导分区的程序,反汇编看看就解决了。

TOP

1和2:不好说,不知道你说的是针对什么文件系统的。
3和4:0XFE+1=?,物理的头和柱不允许跨逻辑盘,也就是物理的头柱不能涉及两个逻辑盘的数据区,当然还要涉及和匹配当前的文件分配单元,分区软件一般取接近值。
[IMG]http://bbs.dostor.com/UploadFile/20038810272089329.gif[/IMG]

TOP

 17 12
发新话题