1957 年 IBM 公司研制胜利的 IBM 350 RA MA C 第一台真正意义上的硬盘存储器,之后经历了漫长的技术革新,于 80 年代初期引入 PC 个人电脑)当时的容量仅为 20-40M 而经过 10 几年的发展,硬盘的容量逐步提高,而当时一些设计上的失误就造成了今天可能呈现的硬盘容量限制问题。容量限制问题:就是系统无法完全识别或正常使用超过一定容量的硬盘)
容量限制问题的成因
要明白这个原因我需要对 IDE 接口硬盘的工作方式做一个介绍,即使到现在今天的 IDE 硬盘驱动依旧使用早先的 DOS-BIOS 磁盘操作系统 - 基本输入 / 输出系统)分层结构上。基本工作模式就是顺序调用 ->DOS 功能调用 -> 文件管理设备 ->INT 13 中断管理(读 / 写) ->BIOS 磁盘服务 ->IDE ATA 界面 -> 磁盘控制器,也就是说我如果需要对硬盘进行操作必需通过以上的一系列步骤才能完成,那么我以下一起来看看这一系列步骤的作用http://www.xsyzj.cn。
文件管理设备:其负责文件及其在磁盘上存储位置之间的映射关系,不过需要通过磁盘读写中断 INT13 执行读写命令来存储、调入文件。当新文件被保存时,文件管理器决定它当前目录里的存储位置,文件分配表中为这个新文件添加文件目录项,并把文件写入磁盘。当读文件时,文件管理器在 FA T 中找到文件在磁盘上的位置,接着就调入文件。
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,536x16x255 一扇区又是 512 字节,也就是说如果以 CHS 寻址方式, IDE 硬盘的最大容量为 136.9GB LBA 寻址方式,上述的总共 28 位可用的寄存器空间 ( 16+8+4 被看作一个完整的 LBA 地址,因为包括位 0 CHS 里扇区不能从 0 开始计算)其能寻址的扇区数是 268,435,456 65,536x16x256 这时 IDE 硬盘的最大容量为 137.4GB
INT 13 管理: INT 13 管理其实也是依照寄存器的模式来设计的高层即文件管理器层发布数据读写命令和有关的参数给 CPU 然后触发 INT 13 中断的进行,激活 BIOS 磁盘服务来执行数据传输。数据的开始地址被写到 3 个 8 位寄存器里,分别是
柱面低位寄存器
柱面高位 / 扇区寄存器
磁头寄存器
柱面地址是 10 位(柱面低位寄存器占用 8 位、柱面高位寄存器占用 2 位)扇区地址为 6 位( 8 位-已经被计算过的高位寄存器的 2 位)磁头寄存器为 8 位。因此如果这样的话:柱面的最大数是 1024 2 10 次方) 磁头的最大数是 256 2 8 次方)扇区的最大数是 63 2 6 次方 -1 所以,通过 INT 13 管理能寻址的扇区数是 16,515,072 1,024x256x63 一扇区是 512 字节,也就是说如果以 CHS 寻址方式, IDE 硬盘的最大容量为 8.456GB LBA 寻址方式能寻址的扇区数是 16,777,216 1024x256x64 这时 IDE 硬盘的最大容量为 8.601GB
看到这里,应该感到硬盘容量限制的成因有了一些 “ 眉目 ” 吧,那么我具体来到底是什么让硬盘出现了所谓的限制: