|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2005-10-27 19:52 |
|
|
fdsiuha
高级用户
闷
积分 587
发帖 302
注册 2005-7-25
状态 离线
|
『第
17 楼』:
硬盘发展的历史到处都找的到,而且每次硬盘发展的时候突破的限制都有详细介绍。我就不贴了。
我想说的是,这是硬件软件发展不同步的表现,就像在64位CPU上运行16位程序,其他的好多硬件都会有类似的现象。
尤其明显在硬盘上的是,硬盘参数一般是通过BIOS存取的。那么首先BIOS能够接受到的数据地址位数要比硬盘所能够提供的要相等或更大。同样,软件存取BIOS的时候,软件能够接受的数据地址位数也要大于等于BIOS。
所以,每次盘片技术的突破,都会造成已有的软件(包括固化在ROM中的)更新换代。
至于容量的差别是不同计算方法造成的,实际上都是使用28位的寄存器,并没有很大的区别,把硬盘设置成不同模式没有什么实际意义。
PS:我也使用的是80G硬盘,但是我的主板是97年买的430HX主板,通过修改BIOS硬盘模块能够支持80G已经算是个奇迹了,现在的BIOS不能手动设置,只能AUTO。
[ Last edited by fdsiuha on 2005-11-1 at 20:17 ]
|
欢迎造访DOS的小屋!
http://risky.ik8.com |
|
2005-10-27 22:37 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2005-10-28 00:46 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2005-10-28 01:21 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2005-10-28 07:17 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2005-10-28 09:24 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2005-10-28 10:02 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2005-10-28 14:19 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2005-10-28 15:27 |
|
|
fdsiuha
高级用户
闷
积分 587
发帖 302
注册 2005-7-25
状态 离线
|
『第
25 楼』:
我的BIOS程序经过两道PATCH的,其中有一个PATCH明确指出PATCH后只能使用AUTO利用PATCH的程序检测硬盘,自己设置当场死机,或自检当机。
其实如果是老BIOS依赖CHS/LARGE/LBA选择的话,你就算在同一个机子中修改了模式,硬盘都是不能正常存取的。更不说移到其他机器上使用了。
|
欢迎造访DOS的小屋!
http://risky.ik8.com |
|
2005-10-28 17:33 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2005-10-28 18:00 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
『第
27 楼』:
Quote: | Originally posted by DOSforever at 2005-10-28 15:27:
那看来是你自己写错了咯,那你还跟我激动个啥!你前面和我瞎激动了几次我都没怎么和你计较了!要不是看你小子可爱,我……
你现在还写错了, ... |
|
是我没有搞清楚,应该是:
Head Sector Cylinder Landing zone Capacity
CHS 16 255 39236 39235 81G (81962434560)
LARGE 240 255 2615 39235 81G (81939456000)
LBA 255 63 9964 39235 81G (81956689920)
|
我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件 |
|
2005-10-29 11:07 |
|
|
fdsiuha
高级用户
闷
积分 587
发帖 302
注册 2005-7-25
状态 离线
|
『第
28 楼』:
其实没有担心的必要,不同的存取方式都是硬盘所能够接受的。不会说40G硬盘你发出存取80G地址的指令时候磁盘上的机械臂会移出盘片外。显示不同的容量只是硬盘上的空余空间的分配方式不一样。
我们逻辑上的多少头、多少扇、多少道,现在只是一个逻辑概念,并不是真正对应盘片上的3维结构,这个是由硬盘内部的寻址转换引起的。而且即使是在这些所谓被分配的空间之间,也不是连续的,譬如有出厂的时候被标为坏扇区的部分,也有被硬盘登记为未使用的扇区(备分以取代使用后出现的坏扇区)。这些都是硬盘的逻辑电路处理的内部问题。
除了上述的情况,事实上硬盘盘片上可用物理空间要大于实际我们使用的范围不少,很多时候机械臂也可以使磁头移到这些地方上,但是保留这些空间一般都是为了安全或其他的目的,比如所谓的磁头PARK区,不会完完全全用掉。但是这些也都是硬盘内部电路控制的,对不论什么级别的软件,都是不可见的(但是有些硬盘采用不公开的特殊的指令,可以使自己厂商的一些专业硬盘修复、检测软件进行操作)。
|
欢迎造访DOS的小屋!
http://risky.ik8.com |
|
2005-10-29 16:52 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
『第
29 楼』:
我们现在讨论的硬盘最大可用容量当然不包括它的P-LIST和G-LIST以及其它内部所用掉的扇区,我们只是讨论一个从逻辑上来讲对用户是一个“完好无损”的硬盘。实际上我记得好象从几十兆的硬盘开始,在CMOS中的CHS参数就已经不是实际的物理参数了,那时候如果手工指定参数错误是不能正常使用的。所以依照此想法,我在想,尽管你现在无论选择何种寻址模式硬盘都可以正常使用,但会不会假如我选择了一个不恰当的模式,它所寻址的各个扇区,相对与它“应有”的模式是不可靠的呢?或者前面一部分比较接近,而越往后就越是偏离“正常”位置呢?现在,我们没有一个理论根据或者实际使用经验来证明这三种模式都可以完全正常使用,也就是说无非是寻址容量有所差别罢了。如果是这样的话那太好了,看来我们都没有用足我们硬盘的最大容量,今后我们安装新硬盘设置的时候都应该选择CHS模式。根据qwe1234567提供的数据,在CHS模式下与LARGE模式竟有20多兆容量的相差 (81,962,434,560 - 81,939,456,000 = 22,978,560) ,与我们常用的LBA模式也有5兆多的相差 (81,962,434,560 - 81,956,689,920 = 5,744,640) 。即便是有人经过实践证明无论哪种模式都能够完全正常使用,也最好有人能够从理论上来解释一下为什么会造成这一现象,以及我们应该使用CHS模式来达到硬盘的最大使用容量。
这里我再讲一个有关事例:
大名鼎鼎的 PC Tools 5.0 相信各位都一定用过吧,不知你们现在手头还有没有,我还一直保留着,而且有好几种版本,呵呵(我还想以后发个贴专门讨论这件事情)。我们知道,当时它的磁盘编辑功能是很强的。在LBA寻址模式的BIOS和硬盘出现以前,它可以很方便的编辑逻辑盘的各个逻辑扇区或某一簇,以及FAT12/16系统定义的各个逻辑区域,比如可以直接跳转到BOOT区,第一个FAT扇区,第一个FDT扇区和第一个数据扇区。当突破528M容量的BIOS也就是支持LBA的BIOS出现以后, PC Tools 5.0 的磁盘编辑的定位问题来了:当我指定要它跳转到第一个FAT扇区或者第一个FDT扇区的时候,它实际跳转到的并不是该区域,也就是说它的扇区计算位置出现了错误。我想这很可能是由于 PC Tools 是按照CHS寻址模式来设计的,而实际硬盘却是按照LBA来寻址的,所以会造成这一现象。但奇怪的是后来Ext int13h出现后,这么古老的 PC Tools 反而可以正常定位了?!同样是在LBA模式下,为什么会出现两种不同的结果呢?
我举这个事例和我前面所怀疑的扇区定位问题不是一回事,前面我怀疑的是物理定位,也就是说怀疑偏离了扇区的真正的物理位置,而这个例子我认为是逻辑定位问题,也就是说某个扇区的物理位置没错,但不是我要找的扇区。当然,还有可能随着要找的扇区位置的后移,同时具有逻辑定位的偏差和物理位置的偏差。
|
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-30 05:08 |
|
|
fdsiuha
高级用户
闷
积分 587
发帖 302
注册 2005-7-25
状态 离线
|
『第
30 楼』:
哎呀哎呀
CHS和LBA不是同一个计算方法...
28位的寄存器是这样的(就以你前面的60G硬盘为例子):
CHS和LBA分别为:
10000/111 11111/11001011111101
11111 111/11111/11110100110100
因为CHS是C、H、S三个不同寄存器,所以每个寄存器都分别规定最大值,其中的磁头固定为10000。
但是LBA是整个28位全都作为一个整体传送给BIOS,所以可以是2^28=137G。
在这个计算容量的过程中,LBA容量的增量为
LBA=255(磁头,固定)*63(扇区,固定)*512/1024=8032.5K
也就是说,磁盘的最小单位为8M。
这样的好处就是,用户不用知道自己的CHS参数究竟是多少,直接转换为线性地址了(修改:这句话说的%$^&@#,让人误解,其实是我想说的是“这样的好处就是,用户不用知道自己的CHS参数究竟是多少,因为它是由线性地址直接转换而来的”)。
但是CHS的计算方法不是这样,因为是对应物理参数(当然后来也是硬盘内部的地址转换),所以,他的所有3个寄存器的值都是可以变动的,这样计算出来的值当然与LBA有微小差别(8M以下),就算是现在前两个寄存器达到最大(现在的所有硬盘所使用的方式),其增量为
CHS=16(磁头,固定)*255(扇区,固定)*512=2040K
与LBA的增量不一样。
这样,一个固定的磁盘空间要同时表示为两个互不能相约的参数,只能牺牲一点(<6M)磁盘空间的寻址了,由于线性寻址的普及,那么这个工作统一由磁盘的内部电路来完成。
你所谓的用CHS达到最大空间的利用率,确实有道理,毕竟LBA的最小增量大一些,容易留下“边角料”。但是LBA是更为先进的性质,尤其是运行在系统级的软件,将逐渐抛弃CHS方式,而且对于现在120G、160G甚至更大的硬盘,<6M的空间没有什么意义,而且以后可能还会采用更大单位的储存方式。另外LBA虽然同样有137G限制,但是它表示地址范围的大一些(最大容量比CHS多500MB左右),而且极其容易的扩展到更大的空间。
至于LARGE我还没有资料,不知道它的工作方式,不好说
[ Last edited by fdsiuha on 2005-11-1 at 20:23 ]
|
欢迎造访DOS的小屋!
http://risky.ik8.com |
|
2005-10-31 10:48 |
|