|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
『楼 主』:
[讨论] BIOS和分区软件究竟是如何确认硬盘容量的
这是一个困扰于我已久的问题
我就先从当初的504M容量限制的问题说起,当初超过500M的硬盘出现后许多386、486的机器都不认,后来才知道需要有带LBA寻址模式的BIOS支持才行。从那时起,大容量硬盘在BIOS中选LBA似乎是当仁不让的选择。到后来出现了8G容量的限制问题(中间我跳过一些其它不常见的限制),才知道需要有带扩充Int 13h支持的BIOS才行。注意,从这时候起,我的问题来了。我就以AWARD BIOS为例,在4.5版的情况下,我使用它自己的硬盘参数检测功能,当一个超过8G,比如10G、20G、40G的硬盘,BIOS检测后能给出三种参数:NORMAL模式(我认为其实就是传统的CHS模式),LARGE模式和LBA模式。我想我们大多数人都会毫不犹豫的选择LBA模式,然后分区,格式化,装系统,OK!这都没问题。如果我们的目的只是在于机器可以使用,管它内部究竟是怎么回事,那么我们也不必要来这里了,也没必要讨论这个问题了。
我的问题在于:我曾经试过用其它模式,也可以照常使用,那么是否是现在使用什么模式对硬盘来说是无所谓的呢?如果再仔细比较一下就会发现,三种模式下所能识别出的硬盘容量不是完全一样的,但相差不多,只差那么一点点,这不象以前是有“质”的区别。而且有趣的是,过去能够识别最大容量模式的LBA现在所能识别出的反而最小,而过去所能识别容量最小的CHS模式反倒能识别出最大容量,过去处于中庸的LARGE仍然处于中间水平。那么这个硬盘实际的最大可用容量究竟是多少呢?那个在CHS模式下所认出的最大容量究竟是不是可靠的呢?如果在它这个模式下对硬盘的访问会不会有所损伤呢?由于对这些疑问我始终没有找到答案,所以出于保守起见,我以后一直使用的还是LBA模式,在BIOS给出这三种模式下硬盘参数的同时也默认的推荐是这个模式。此外,在一些品牌机的用户手册中也指导用户使用这一模式,我不知道他们这样做确实是有科学依据的,还是人云亦云不经过调查研究图省事写的。
后来BIOS发展到6.0版的时候情况又发生了新的变化,连手工检测硬盘参数的步骤都省去了,只要接上硬盘开机就能自动识别容量和寻址模式(当然,你也可以手工设定其它模式),而且在BIOS中AUTO方式下自动检测出的硬盘模式和参数都是按照CHS方式的,但奇怪的是自检时所显示的硬件信息概要中所报告的硬盘模式几乎都变成了是LBA?!(特殊情况除外,下面我会说明)那么如此看来似乎LBA应该是唯一的、正确的选择了?按理,硬盘的(最大)容量是固定的,BIOS是根据硬盘固件中的信息来识别硬盘容量的,但好象现在的BIOS都过于“聪明”了,它似乎能根据分区表中的信息再来判断一下硬盘的参数、寻址模式和容量,我说的“再来”是因为BIOS似乎有两次检测,第一次是当你进入BIOS设置的时候可以看到它认出缺省的寻址方式(几乎都是CHS,后来实际变成LBA),而当启动时显示硬件配置信息的时候(不一定就是这时候,只是我们是在这时候看到)它还要检测一次,为什么我要这样说呢,如果你的硬盘是全新的、重新分区的,你是看不出两次变化是有什么意义的,可能认为这种变化只是一个假象,只不过是BIOS“例行公事”。但当你的硬盘在另一台机器上是以CHS方式分区的,再装到这台机器上的时候,你就会看到配置信息中显示的也是CHS方式而不是同样会变成LBA模式。另外,我还曾遇到过这样一种情况:一块4G的老硬盘,在BIOS中认出的确实是4G,但在启动时会变成1G,以后在BIOS中就一直变成1G了,我在BIOS中让它重新检测一下还是1G?!在每次清除CMOS让BIOS重新正确认一遍后,每次启动时又会变成1G?!后来我把MBS清零后就再也没有出现这种怪现象。我虽然不清楚BIOS到底是如何识别硬盘的,但通过上述两个例子,我认为现在的BIOS除了通过固件中的信息外,还会通过启动时在引导OS之前会读取硬盘的分区信息来“智能”地确定硬盘的寻址模式和容量。当然,这些只是我的猜测,到底是怎么回事请熟悉BIOS内部结构的朋友来解答一下。
现在再谈谈分区软件对容量的识别问题,传统的FDISK看不出什么,我先不谈。我现在一般是用DM来分区的,并且通常一直使用带/M参数的手动模式下进行操作,我发现DM和FDISK一样,最小的分区单位也是以柱面为单位的,但奇怪的是我常常碰到用DM分过区的硬盘在FDISK的查看下往往还会显示还有1%的未使用空间,(其实也只不过几兆而已,并不是硬盘容量真正的1%)。所以我一直在想会不会是DM是以LBA模式来识别硬盘的,而FDISK是以CHS来识别的,所以要比DM能多认些扇区?其它的分区软件如PM我估计也是以柱面为单位的。UNIX可以以磁道为单位,LINUX不太清楚。
|
DOS倒下了,但永远不死
DOS NEVER DIES !
投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187
本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747 |
|
2005-10-14 15:26 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2005-10-14 15:48 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2005-10-14 16:34 |
|
|
maya0su
中级用户
积分 241
发帖 131
注册 2005-9-28
状态 离线
|
『第
4 楼』:
分区软件有二种方式察看硬盘容量,一个是通过BIOS,另一个是直接察看!但是很遗憾的是DM和FDISK都是直接察看的!我说的这些还是不能解决你的疑惑,就是说出来罢了!呵呵……
|
房东说:这娃是个好孩子! |
|
2005-10-14 16:52 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2005-10-14 16:55 |
|
|
willsort
元老会员
Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
6 楼』:
Re dosforever:
Quote: | 新的INT13不使用操作系统的寄存器传递硬盘的寻址参数,它使用存储在操作系统内存里的地址包。地址包里保存的是64位LBA地址,如果硬盘支持LBA寻址,就把低28位直接传递给ATA界面,如果不支持,操作系统就先把LBA地址转换为CHS地址,再传递给ATA界面。通过这种方式,能实现在ATA总线基础上CHS寻址最大容量是136.9GB,而LBA寻址最大容量是137.4GB。 |
|
据此来看,你的关于CHS>LBA的言论可能属于经验上的误差,从而影响了你的判断。
|
※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2005-10-15 18:37 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2005-10-16 13:17 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2005-10-16 15:12 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2005-10-16 16:48 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2005-10-19 08:46 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2005-10-19 09:39 |
|
|
lfdjssz
初级用户
积分 125
发帖 72
注册 2005-9-13
状态 离线
|
『第
12 楼』:
学习.....................................
|
|
2005-10-20 12:03 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2005-10-21 16:59 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2005-10-21 17:35 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2005-10-24 13:01 |
|