1957年,IBM成功开发了IBM 350(RAMAC),这是第一个真正的硬盘存储。经过长期的技术创新,1980年代初期推出了PC(个人计算机),容量仅为20-40M,经过十多年的发展,硬盘的容量逐渐增加,有些当时的设计错误导致了今天可能出现的硬盘容量限制问题。 (容量限制的问题:即系统无法完全识别或正常使用超过一定容量的硬盘)
容量限制问题的原因
要了解这个原因,我们需要对IDE接口硬盘的工作模式进行介绍。即使在今天,我们的IDE硬盘驱动器仍使用较早的DOS-BIOS(基于磁盘操作系统的基本输入/输出系统)分层。在结构上。它的基本工作模式是:程序调用-> DOS函数调用->文件管理设备-> INT 13中断管理(读/写)-> BIOS磁盘服务-> IDE(ATA)接口->磁盘控制器,即如果需要操作硬盘,则必须完成上述一系列步骤才能完成,所以让我们看一下这一系列步骤的效果。
文件管理设备:它负责文件与其在磁盘上的存储位置之间的映射关系,但是它需要通过磁盘读写中断INT13执行读写命令来存储和加载文件。保存新文件后,文件管理器确定其在当前目录中的存储位置,并在文件分配表中为此新文件添加文件目录条目,并将该文件写入磁盘。读取文件时,文件管理器会在FAT中找到文件在磁盘上的位置,然后加载文件。
IDE(ATA)接口:在介绍IDE(ATA)接口之前,先简要介绍一下硬盘的结构:硬盘分为一定数量的圆柱体(同心的轨道以硬盘的中心为中心)中心)和每个圆柱体都需要一个磁头来读取和写入数据。此外,硬盘上的数据以每个扇区512字节的格式存储,并且所有数据传输均基于扇区(圆柱体被均分的圆弧轨道)。 IDE(ATA)接口是寄存器驱动的并行总线。要传输数据,BIOS首先将数据的起始地址和数据传输的长度写入IDE(ATA)中的特定寄存器,然后将相关的读/写命令发送到特定的寄存器以开始数据传输。
当前的硬盘通常支持逻辑块寻址(LBA)和圆柱头扇区寻址(CHS)。让我们以CHS寻址为例:数据传输的起始地址被写入4个8位寄存器中。
汽缸低位寄存器
汽缸高位
扇区寄存器
设备/头寄存器
因此,柱面地址为16位[柱面低位寄存器(8位),柱面高位寄存器(8位)]。扇区地址是8位(注意:扇区寄存器中的第一个扇区是扇区1,而不是扇区0)。头地址是4位(未完全占用8位)。因此,硬盘柱面的最大数量为65,536(2到16次幂),磁头的最大数量为16(2到4次幂),最大扇区数为255(2到8次幂-1)。 ,请注意,刚才我们提到了扇区注册问题)。因此,可以寻址的最大扇区数为267,386,880(65,536x16x25 5)。一个扇区还是512字节,这意味着如果使用CHS寻址,则IDE硬盘的最大容量为13 6. 9GB。 LBA寻址模式,以上28位可用寄存器空间(16 + 8 + 4))被视为完整的LBA地址,因为它包含位0(无法在CHS中从0开始计数扇区),可以找到该位。该地址处的扇区数为268,435,456(65,536x16x25 6),这时IDE硬盘的最大容量为13 7. 4GB。
INT 13管理:INT 13管理实际上是根据寄存器模式设计的。其上层(文件管理器层)向CPU发出数据读取和写入命令以及相关参数,然后触发INT 13中断以激活BIOS Disk服务来执行数据传输。数据的起始地址被写入三个8位寄存器,分别是:
汽缸低位寄存器
汽缸高位/扇区寄存器
头部寄存器
柱面地址为10位(柱面低位寄存器占8位,柱面高位寄存器占2位),扇区地址为6位(已计算的高位寄存器的8位至2位) 。起始寄存器为8位。因此,如果是这种情况:柱面的最大数量为1024(2的10的幂),最大磁头数量为256(2的8的幂),最大扇区数为63(2的整数)。因此,通过INT 13管理可寻址的扇区数为16,515,072(1,024x256x6 3)。一个扇区为512字节,这意味着如果使用CHS寻址模式,则最大值IDE硬盘的容量为8.456GB。LBA寻址模式可寻址的扇区数为16,777,216(1024x256x6 4),此时IDE硬盘的最大容量为8. 601GB。
看到这一点,我们应该感觉到硬盘容量限制的原因有些“眉毛”,那么我们到底是什么使硬盘成为所谓的限制:
1. 528MB容量限制:
由于较早的硬盘容量较小,因此在设计BIOS时,将地址从Int 13的地址寄存器转换为IDE(ATA)的地址寄存器时,只有10位柱面地址在INT 13的管理中,用来对应IDE(ATA)接口中的16位柱面寄存器,并将未使用的6位(高位寄存器)地址设置为0。只有6位扇区地址对应于IDE(ATA)接口的8位扇区寄存器,未使用的2位设置为0。INT13管理的头寄存器的4位(删除了4位)对应于IDE(ATA)。因此,此时的最大磁盘柱面数为1024(2到10次方),磁头的最大数量为16(2到4次方),最大扇区数为63(2到6次方)。 -1)。因此可以寻址的扇区数变为1,032,192(1,024x16x6 3)。一个扇区的容量为512字节,这意味着如果使用CHS寻址,则IDE硬盘的最大容量为52 8. 4MB。因此出现528MB硬盘容量限制。

2. 1GB容量限制:
这分为两部分,一部分是由磁盘服务的限制引起的,另一部分是由磁盘格式的引起的,通常我们将前者称为2. 1GB硬件容量限制,后者称为2.软件容量限制为1GB。
硬件容量硬件
当时,为了限制528MB的容量,人们提出了许多不同的方法。其中之一是保留INT 13服务的起始寄存器未使用的4位(准确地说是高2位)中的2位。使用汽缸编号的前1、个第12位数字。这样,最大打印头数为64(2到6的幂)。但是,当时的操作系统没有使用此转换方法,该方法认为头寄存器的所有位只能记录头的数量。例如,为了正确转换柱面数为2,04 8、个磁头为64的硬盘,操作系统需要将柱面数除以4(512个逻辑柱面),并将磁头数乘以4(256个逻辑头数)。但是,由于BIOS不会打开所有的机头号寄存器,因此当然不可能记录这样的机头号。因此,遇到这种操作机制的BIOS将导致系统在系统自检期间崩溃。
软件容量限制
当时DOS分区的限制由文件分配表(FAT)确定。 FAT处理存储空间基于群集。群集的最大长度为32,768字节,最多可以处理65,536个群集。如果将两个数字相乘,则DOS的最大分区限制值为2147483648字。 Section或2,048MB(2,147,483,648 / 1,024 2)。因此,如果硬盘超出此容量,则使用FAT格式,则可以识别2. 048GB的最大硬盘容量。
3. 2GB容量限制:
某些版本的BIOS无法识别具有超过6322个柱面的硬盘,但是这种类型的BIOS相对较少。由于柱面的限制,如果乘以512扇区容量,则支持的最大扇区数为6,372,576(6322x16x6 3));如果是,则最大支持容量为6,372,576x512 = 3,262,758,912 / 1024 = 3. 18GB。
4. 2GB硬盘容量限制:
当时,某些操作系统使用8位寄存器来存储磁头数,因此当BIOS报告硬盘的磁头数等于256(最大容量)时,仅第一位磁头的数量(即0)已由系统保存)。导致硬盘配置错误。一旦硬盘的磁头数为16,柱面数就大于8,192(2到13的幂),因为磁头寄存器已经借用了寄存器的最后三位,实际上,存在一个问题转换突破了528MB的容量限制。由于此部分比较负责,我在这里不做详细介绍,我们只需要了解存在此限制),系统就无法正常识别它,因此它的最大值容量限制为4. 2GB = 8192x16x63x512 / 1024。
8. 4GB容量限制
我们已经知道INT 13服务的寻址模式可以支持低于4GB的8.容量(柱面数,磁头数和扇区数的最大值为16)分别为38 3、 16和63,并将三乘以8. 456GB)。因此,出现此容量限制将是一个时间问题。因此,此限制是最经常遇到的容量限制。为了解决此问题,一些制造商定义了新的扩展INT 13服务扩展标准。新的INT 13服务扩展标准不使用操作系统寄存器来传输硬盘寻址参数,而是使用存储在操作系统内存中的地址包。地址包保存64位LBA地址。如果硬盘支持LBA寻址,则低28位将直接传输到ATA接口。如果不是,操作系统将首先将LBA地址转换为CHS地址,然后将其传输到ATA接口。 。这样,基于ATA总线的CHS寻址的最大容量为13 6. 9 GB,LBA寻址的最大容量为13 7. 4GB。
3 3. 8GB容量限制
在CHS寻址中,由于IDE(ATA)接口的限制,柱面数最多支持65,535(2到16次幂1),因此,当柱面数大于65,535时,柱面数系统将无法识别这种硬盘,但是LBA由于其唯一的寻址模式而不会出现此问题,具体的容量限制为:65535x16x63x512 / 1024 = 3 3. 8GB。
137GB容量限制
我相信这个问题不必提及。当前的磁盘工作方法注定会在IDE硬盘上出现此问题。较早引入IDE(ATA)接口时,已经出现了此问题。那么当系统遇到容量限制的问题时,系统会发生什么呢?以及如何解决这些问题?
容量限制的症状和解决方案:
528 MB
症状:无论硬盘有多大,操作系统都不能识别超过528MB的空间。
解决方案:将硬盘设置为LBA模式,但是当时许多硬盘和BIOS不支持此设置,因此只能更换主板
2. 1 GB
硬件问题
症状:开机自检期间崩溃
解决方案:升级BIOS,强制使用硬盘跳线,将硬盘设置为LBA模式
软件问题
症状:进行分区时,发现主分区被划分为2. 1GB容量
解决方案:替换FAT 32文件分配(但是某些较早的软件无法使用,并且不能使用不支持此文件格式的操作系统)划分多个分区
3. 2GB
症状:开机自检期间崩溃
解决方案:升级BIOS,将硬盘设置为LBA模式
4. 2GB
症状:在硬盘上创建分区后,重新启动计算机时它会崩溃。
解决方案:升级BIOS,将硬盘设置为LBA模式
8. 4GB
症状:系统报告硬盘容量不超过8. 4GB,并且可能会报告硬盘参数错误并在BIOS自检期间崩溃
解决方案:升级BIOS并使用特殊的分区软件

3 3. 8GB
症状:自检过程中系统崩溃
解决方案:升级BIOS,使用专用的硬盘管理软件,强制使用硬盘跳线,使用LBA模式管理硬盘
137GB
症状:自检过程中无法识别硬盘或系统崩溃
解决方案:硬盘和主板(可以由ATA 133控制卡支持)都支持最新的ATA 133规范(ATA 133规范是Maxtor刚刚提出的新的硬盘传输规范,该规范将目前最高的28位可用寄存器空间已增加到48位,以支持更大的硬盘)
解决方案的重点:
硬件解决方案:
从硬件思想的角度来看,由于许多问题是由BIOS引起的,因此升级到合适的版本可能会突破许多容量限制,例如:3. 2GB,4. 2GB,8. 4GB,3 3. 8GB,这也是解决硬盘容量限制的最简单方法。
此外,选择BIOS扩展卡也是一种解决方案,但是此方法在旧主板上使用。当前的主板BIOS支持擦除和写入。使用BIOS扩展卡很麻烦,需要我们投入更多的钱。
软件解决方案
从上述解决方案中,只要硬盘支持LBA寻址模式,许多方法都可以解决问题。因此,一些公司引入了解决此问题的方法。最好的是迈拓的MaxBlast和Western Digital的。 EZ Drive,这两个解决方案实际上是软件解决方案,它们可以转换大容量硬盘的各种参数,从而达到完全使用硬盘的目的。但是,在启动操作系统后(在磁盘分区中创建了磁盘管理BIOS,并用于与系统BIOS进行通信),不会加载此类软件,但是会在BIOS启动之后且在启动BIOS之前加载该软件。操作系统已启动,因此实现也相对简单。
此外,使用专用的硬盘分区软件也是一个很好的解决方案。由于新版本的硬盘分区软件已经带有INT 13扩展标准,因此它可以支持更大容量的硬盘,但是与MaxBlast和EZ Drive相同。系统启动后,将加载INT 13扩展名。当硬盘分区表损坏或被覆盖时,磁盘使用率将再次出现问题。
操作系统限制:
当前,一些操作系统不支持大容量硬盘:DOS 6. 22或更低版本不支持大于8. 4 GB的硬盘,并且没有解决方案。 Windows 95(NT 3. 5x)支持INT 13扩展并支持更大容量的硬盘驱动器,但是FAT 16将每个分区的最大支持容量限制为仅2GB。此外,上述两个操作系统不支持FAT 32格式,因此,如果要使用大硬盘,请尝试不要使用上述操作系统。 Windows NT 4. 0有一个奇怪的问题:当启动分区的容量大于8. 4 GB时,NT无法使用超过8. 4 GB的其他硬盘空间,因此使用此操作时要小心系统。
总而言之,每个人都应该对磁盘容量限制的原因和解决方案有更直观的了解。一般来说,避免容量限制的问题是更新BIOS并尝试不使用CHS硬盘寻址模式。 。以上两点是解决容量限制的最简单,最有效的方法,因为我们不需要投资任何成本,并且它适用于所有硬盘,并且不需要繁琐的软件设置或安装。
附件:8.中4GB容量限制问题的新解决方案:
在BIOS中,大容量硬盘限制为8. 4GB。无论如何,请保存CMOS信息,启动系统以执行FDISK,并在系统可以识别的8. 4GB硬盘上创建分区(即,它是C驱动器,大小是任意的),并在Windows上安装WINDOWS系统。分隔的分区(C驱动器)。 (请注意,首先只能分离一个分区)然后,将此大硬盘连接到可以识别大硬盘的全部容量的计算机,并使用所有剩余容量(请注意,每个逻辑分区的容量不能为大于8. 4GB),最后,将此大硬盘驱动器重新连接到无法识别8. 4GB或更大容量的计算机。 CMOS仍认为此硬盘驱动器为8. 4GB。无论如何,请保存CMOS信息并重新启动系统,然后进入WINDOWS系统。发现所有逻辑磁盘都存在,并且可以在格式化后使用它们。
注意:以上分区必须按照FAT 32模式执行
此方法对于已停止更新BIOS且不需要任何软件干预的主板非常有用。如果有时间,请尝试一下。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/dianqi/article-370283-1.html
好机智幽默得体不抖包袱真的很棒