The 504 MB barrier
最著名的硬盘屏障是标准IDE/ATA硬盘的504MB限制。他指的是504MB或者528MB屏障,依赖于是二进制还是十进制。由于这个屏障,在某些环境下大于504MB的硬盘显示为504MB。这个问题是IDE/ATA标准和BIOS Int 13h标准几何规格限制相结合的结果。
这个问题是由于计划和标准不一致造成的。他们每个都存储了不同的几何参数位数。为了使用标准BIOS磁盘程序的IDE/ATA硬盘,这两种标准的限制一定会产生下面的影响。这意味着能够使用的硬盘更小。下面就是两个标准标准分配位数。
Standard Bits For
Cylinder Number Head Number Sector Number Total Geometry
IDE/ATA 16 4 8 28
BIOS Int 13h 10 8 6 24
Combination 10 4 6 20
每个参数支持的最大数是2^N,这里N是上表中的数字。所以在IDE/ATA下,支持2^16或者65536个柱面。把所有数字想乘的到支持扇区的总数,然后乘512byte(每扇区)的到最大支持的容量。如下图所示:
Standard Maximum Cylinders Maximum Heads Maximum Sectors Maximum Capacity
IDE/ATA 65,536 16 256 128 GB
BIOS Int 13h 1,024 256 63 7.88 GB
Combination 1,024 16 63 504 MB
注意:BIOS Int 13h限制的扇区数是63,而不是64,因为按照惯例扇区从1开始,不是0开始。
504MB数字正是1,024 * 16 * 63 * 512。这就是两种标准结合产生的问题。由于IDE/ATA 16磁头数的限制,没有IDE硬盘的逻辑磁头数大于16,他们总是有一个大数量的柱面。问题在于当你把一块硬盘放在一个标准非转换的BIOS的机器上,它不能看到大于1024的柱面数。这就是系统抵制硬盘容量不超过它所支持的几个方法。
对于504MB问题正常解决方法,就是使用BIOS几何参数转换(BIOS geometry translation)。软件驱动覆盖也能解决这个问题,但需要成本。
The 7.88 GB barrier
这个屏障,有时也被称为“8GB 屏障”,这是基于BIOS的限制。当Int 13h标准计划硬盘容量不超过10MB,没有会想到硬盘超过8GB。然而今天这是一个问题。
阅读完前两节之后,这个屏障的原因将很清楚。软中断Int 13h不允许硬盘经由BIOS出现超过24bit长的位数。这个导致了不可解决的7.88G屏障,即是1024柱面、256磁头、63扇区和512字节(每扇区)的乘积。如果基本Int 13h使用,屏障将牢不可破。这包括所有的IDE/ATA硬盘和SCSI硬盘。显而易见,采用BIOS几何参数转换(BIOS geometry translation)也不能解决这个问题。
突破7.88G屏障的唯一方法就是暂停过去的标准以及改变硬盘的存取方法。一个解决方法就是被称为Int 13h扩展功能,它允许使用更大的容量。使用这种方法需要BIOS和操作系统对这种扩展功能的一致支持。
围绕这个屏障的另一个工作是直接硬盘存取(Disk Disk Acess),即绕过BIOS。更高级的操作系统将接管从BIOS处理硬盘的责任,使用他们自己的硬盘存取程序,这个将比使用默认BIOS代码更快更有效。这主要是为提高性能而做。
注意:除了在这节中讲到的屏障,IDE/ATA硬盘还有另两个,叫:1.97G和2G。
注意:一些老的SCSI适配器存在问题,使他们不能存取超过1G的硬盘或者其他的一些限制。现在这些适配器不应该有这些限制。
注意:FAT-16文件系统每分区被限制在2GB。这是文件系统的问题,不是一个硬件或者BIOS问题。
注意:solaris 7和更早版本能够存取到IDE/ATA硬盘上的1024柱面。
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 资料 翻译 论坛 作为 硬盘 BIOS 分区 启动 参数 使用 |
注册
个人空间
