中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-30 17:58
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » [讨论] BIOS和分区软件究竟是如何确认硬盘容量的 精华I 查看 15,550 回复 40
31 发表于 2005-10-31 11:12 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
我一个245M的小硬盘在LBA
模式下工作时SPFDISK无法对它进行操作,在CHS模式下工作时SPFDISK可以对它进行操作,而且还多出了0.21M,不知道是什么原因。
32 发表于 2005-11-01 16:30 ·  中国 上海 黄浦区 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
21年会员
UID 35785
性别 男
状态 离线
你那200多兆的硬盘肯定不支持LBA寻址模式,当然只能用CHS模式了。你是接在哪台机器上的,什么版本的BIOS
33 发表于 2005-11-01 16:38 ·  中国 上海 黄浦区 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
21年会员
UID 35785
性别 男
状态 离线
CHS和LBA确实不是同一个算法,但我认为并不是在BIOS层面上,而是在ATA接口层面上。ATA接口的硬盘寻址寄存器(现以28bit寻址为讨论基础,48bit暂不讨论)分别用了16位,4位和8位来分别表示柱面数、磁头数和扇区数;所以,如果以CHS方式来寻址的话,最大可寻址空间为 2^16 * 2^4 * (2^8-1) = 267386880 个扇区,也就是 136,902,082,560 byte;如果把整个28位用来作表示为一个LBA的线性地址的话,那就是可寻址 2^28 = 268435456 个扇区,也就是 137,438,953,472 byte。这也就是两种方式最大可寻址空间的区别。

具体到某个硬盘是否如你计算所表达的那样我表示怀疑。还是以那块60G的硬盘为例,为了简便起见我们就以扇区为计算单位(其实都一样)。假如按照CHS模式的话,三个参数都在允许的范围以内。但假如按照LBA模式的话 0111111111111111110100110100(B) => 134,217,012(D) 所表示的扇区数已经超出这块硬盘的实际实用扇区数了。反过来,这块硬盘的最大实用扇区数为 120,103,200 (D) => 0111001010001010000100100000(B) 28bit,这个数值无论怎么分割也凑不成该模式下CHS各个参数的。

我们再把那块60G的硬盘的参数的表格扩充计算一下:

LBA Sector count: 120,103,200 sectors

Head * Sector * Cylinder = Total Sectors | Remain | Sectors/Cylinder
| |
CHS 16 255 29437 120,102,960 | 240 | 4080
| |
LARGE 240 255 1962 120,074,400 | 28800 | 61200
| |
LBA 255 63 7476 120,101,940 | 1260 | 16065


通过上面这个例子可以看出,无论哪种模式下,逻辑上的CHS参数乘积所得到的总扇区数都小于LBA(注意,此LBA非彼LBA,下面会说明)所给出的总扇区数,而且剩余的扇区数都不到该模式下每柱面的扇区数,也就是不足以构成一个柱面。因此,我认为CHS和LBA算法的不同只是表现在ATA接口层面上,而在BIOS层面上所显示出的各个模式的各个CHS参数都是以ATA接口的LBA总扇区数为基础进行换算的,而且是以柱面为单位分配的,所有这些柱面相加的总扇区数不超过LBA给出的总的扇区数,不足的部分省略。

说了那么多的LBA和CHS,我认为有必要说明一下,不然的话很可能会引起混淆

我认为有两个LBA的概念,一个是ATA层次上的 LBA ,也就是这个硬盘内部的可线性寻址的最大扇区数,我认为这就是这块硬盘的最大可用扇区数;而另一个 LBA 是指在BIOS层面上,也就是BIOS向OS报告的它的寻址模式。
同样,有两个CHS概念,一个是指 CHS模式 ,也就是BIOS的一种寻址方式;而另一个是 CHS参数 ,是所有模式下都要用到的柱面、磁头、扇区数的参数。

到此为止,我认为我们可以暂且得出一个结论,也就是我在表格下面的第一段话。对于这个结论我没有什么理论依据和实际实验来证明其正确性,只能通过纸面上的一些数据来“自圆其说”。关于两个LBA和CHS的概念也是我自己分析的结论,同样没有什么理论基础。现在,尽管还有许多细节问题没有搞清楚,比如 PC Tools 5.0 的逻辑定位问题,但我认为我们还是取得了一定的进展。真是非常感谢所有参与讨论和关注此问题的朋友,特别是 fdsiuha 。同时也希望有更多的朋友能提供试验数据和提出理论假设,也希望有功底深厚的大师能不惜赐教。

[ Last edited by DOSforever on 2005-11-1 at 16:48 ]
34 发表于 2005-11-01 19:21 ·  中国 湖北 武汉 联通
高级用户
★★★
积分 587
发帖 302
注册 2005-07-25 17:31
20年会员
UID 41046
性别 男
状态 离线

但假如按照LBA模式的话 0111111111111111110100110100(B) => 134,217,012(D) 所表示的扇区数已经超出这块硬盘的实际实用扇区数了。反过来,这块硬盘的最大实用扇区数为 120,103,200 (D) => 0111001010001010000100100000(B) 28bit,这个数值无论怎么分割也凑不成该模式下CHS各个参数的


不是这个意思,LBA的存取确实把28位的寄存器作为一个统一的部分存取,但是使用这个寄存器的时候,仍然分为C、H、S这3部分相乘,其中对于更大的硬盘来说,H更大些,另外两个参数是固定的(好好想一下3个参数的物理意义);此所谓地址线性增加,非我们所见的28位寄存器的大小,从0->n,而是硬盘内部的所有扇区都有一个从小到大的编号,这样做自然是把LBA看成是具有CHS参数的硬盘,保持兼容性。

所以你上面说的的B->D转换方式是不正确的。所以后面自然就“无法自圆其说”了。


PS:另外查了所谓LARGE,无非是在INT13的两个寄存器之间相互借4位来存取更多的空间罢了,与CHS没有本质区别。还有忘了说了,就是并不是LBA方式解决500MB的限制问题。

[ Last edited by fdsiuha on 2005-11-1 at 20:29 ]
欢迎造访DOS的小屋!
http://risky.ik8.com
35 发表于 2005-11-02 01:16 ·  中国 上海 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
21年会员
UID 35785
性别 男
状态 离线
我们先把讨论的基础确定下来,不然的话会陷入混乱。首先我们先确定有几件事是可以肯定的。一个是一个硬盘的最大可寻址扇区数是确定的,由厂商给出。另一个是要寻址的扇区地址是经过两次转换,一次是BIOS,另一次是ATA接口。假如这两件事是可以确定的,好,我们接着讨论。

我想你所说的寄存器应该是指ATA寄存器而不是Int 13h所用的寄存器吧,假如是的话,你说LBA模式使用这个寄存器的时候仍然是3部分相乘,那么这样一来岂不是和CHS模式没有区别了吗?怎么体现它的“整体”概念和CHS本质的区别呢?

另外,我认为随着硬盘容量的增加不是 H 值的增大而是 C 值的增大,H 反而是固定的,因为表示磁头的位数最少,最容易达到饱和。

我记得好象LARGE模式是最初突破504M限制的,后来才出现LBA模式的,由于这种模式现在也不常用,所以我们就不把它纳入讨论范围了。只要能搞清楚CHS和LBA也一样。

[ Last edited by DOSforever on 2005-11-2 at 01:17 ]
36 发表于 2005-11-02 15:44 ·  中国 湖北 武汉 联通
高级用户
★★★
积分 587
发帖 302
注册 2005-07-25 17:31
20年会员
UID 41046
性别 男
状态 离线
至于“整体”的概念,我说过了,它是硬盘内部的机制。现在的硬盘内部寻址是使用CHS的,而是把所有的扇区统统编号,直接靠这个编号来寻址。然后在硬盘的接口上它被转化为一个CHS参数。为什么要如此麻烦呢?第一,硬盘太大,里圈和外圈每道扇区数相差太大,用直接反映磁盘3维结构的CHS参数对于软件来说变化范围太大,而且不同的硬盘之间也不一样。这样做会使软件难以适应大部分的硬盘(譬如1头10柱面有128个扇区,由于你寻址到64为止,损失一半空间,在如1头1柱面只有32个扇区,由于寄存器可以寻址到64个,所以寻址就会经常出现越界),统一编号扇区后,逻辑上就只存在柱面的范围(就是盘片的直径乘密度,换句话,就是磁道密度的变化)的变化,不会越界,也不会损失空间。第二,虽然废除了CHS直接寻址,但是软件都使用固定的CHS格式来寻址,尤其微软的软件。所以对外还是要以CHS方式传递参数。

所以我的意思是:硬盘28位的寄存器,是软件和硬件之间的接口。就是当向硬盘提交了存取方式之后,硬盘内部寻址机构就会具此选择地址转换的模式。我在前面已经说过了,虽然LBA和CHS在硬盘的内部使用不同的方式寻址,所有的硬盘模式返回28位的都是CHS参数。这个转换过程由硬盘来完成,软件没有必要也操不到这个心。

LBA和CHS其实没有什么本质的区别。你去看你的电脑BIOS,它只有NORMAL、LARGE、LBA、AUTO而没有分成CHS、LBA、LARGE吧。因为LBA它就是用CHS的其中一个方式,只不过,他的28位全都可以为最大值,可以全是1。造成的影响就是每柱面的扇区多一些。

而我们以前那些所谓的限制只是由于软件-软件-软件之间的转换造成的。与CHS和LBA没有关系。只是到137G才是物理极限,新硬盘采用48位寄存器才能解决。

之后,才是软件--包括BIOS--负责接下来的工作,其中的I\O例程按照给定的C、H、S寻址,读写磁盘。

我们之所以软件看到的LBA、CHS设置以及不同的数值,只是硬盘内部按不同的寻址给出的。BIOS一般不做更进一步的变换(LARGE要稍微做一点变化,所以LARGE其实是软件实现的,因此兼容性不好)。

你还说过PC兔子的问题,不只是它,好多磁盘软件都出现过类似的问题,这种问题的根源就是地址的转换问题,就是因为它通过BIOS(通过DOS那就当然更不行了)存取磁盘。你把你现在使用的LBA或NORMAL换成NORMAL或LBA,再开机系统都启动不了,马上当机给你看--BIOS连操作系统的启动扇区都定位不到,你还能指望老版本的PC兔子能通过BIOS来做什么?我有一大把这样的DOS软件,十有八九,一打开就马上死机。


--------------------------------------------------
我的个人网站有关磁盘的详细介绍,还没做完估计到年底也做不完,唉

[ Last edited by fdsiuha on 2005-11-2 at 16:08 ]
欢迎造访DOS的小屋!
http://risky.ik8.com
37 发表于 2005-11-03 09:58 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
关于我的小硬盘(245M)请看http://www.cn-dos.net/forum/viewthread.php?tid=17118&fpage,至于多出了0.21M是SPFDIS认出来的,不是计算出来的,200多兆的硬盘肯定支持LBA寻址模式,而且FDISK可以在LBA寻址模式分区,在外加硬盘时,pqmagic正常启动,没发现错误,也能分区。该硬盘上的DOS启动正常,就是除了在CHS模式下工作时SPFDISK正常,其他模式下工作时SPFDISK均不认识小硬盘的分区。BIOS的版本请看『第 20 楼』!
38 发表于 2005-11-04 21:27 ·  中国 湖北 武汉 联通
高级用户
★★★
积分 587
发帖 302
注册 2005-07-25 17:31
20年会员
UID 41046
性别 男
状态 离线
建议联系该软件作者^^
欢迎造访DOS的小屋!
http://risky.ik8.com
39 发表于 2005-11-06 13:39 ·  中国 浙江 电信
中级用户
★★
积分 300
发帖 137
注册 2005-11-04 02:00
20年会员
UID 44559
性别 男
状态 离线
即便是用FDISK来分区,用SFDISK(一个我经常用的硬盘分区和格式化软件)来查看,还是有好多空闲的硬盘空间,也就是还没有100%的对硬盘进行分区.
40 CHS应该是物理方式,而LBA是模拟方式在早期兼容更大容量的 发表于 2005-11-07 11:27 ·  中国 上海 长宁区 电信
新手上路
积分 11
发帖 6
注册 2005-11-02 10:49
20年会员
UID 44460
状态 离线
早期的BIOS/DOS在CHS方式下不支持比较大的Cylinder值,LBR就是通过算法将Cylinder值虚拟成header,LARGE也是一种虚拟的算法。
后来的BIOS和32位系统已经支持了更大的Cylinder,所以用哪种方式应都是差不多的。
41 发表于 2006-10-06 08:34 ·  中国 浙江 衢州 电信
银牌会员
★★★
积分 1,270
发帖 548
注册 2004-05-31 00:00
22年会员
UID 25754
性别 男
状态 离线
这种对硬盘的讨论是很有价值的。可惜我的认识没有各位的深刻。要知道,整台电脑,就是这硬盘上的数据最重要了。
论坛跳转: