欢迎来到天天文库
浏览记录
ID:6772094
大小:33.50 KB
页数:9页
时间:2018-01-25
《硬盘容量限制问题的形成以及解决方案》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、硬盘容量限制问题的形成以及解决方案硬盘容量限制问题的形成以及解决方案1957年IBM公司研制成功的IBM350(RAMAC)是第一台真正意义上的硬盘存储器,之后经历了漫长的技术革新,于80年代初期引入PC(个人电脑),当时的容量仅为20-40M,而经过10几年的发展,硬盘的容量逐步提高,而当时一些设计上的失误就造成了今天可能出现的硬盘容量限制问题。(容量限制问题:就是系统无法完全识别或正常使用超过一定容量的硬盘)容量限制问题的成因要明白这个原因我们需要对IDE接口硬盘的工作方式做一个介绍,即使到现在我们今天的IDE硬盘驱动依旧使用早先的DOS-BIOS(磁盘操作系统-基本输入/输出系
2、统)的分层结构上。它的基本工作模式就是:程序调用->DOS功能调用->文件管理设备->INT13中断管理(读/写)->BIOS磁盘服务->IDE(ATA)界面->磁盘控制器,也就是说我们如果需要对硬盘进行操作必须通过以上的一系列步骤才能完成,那么我们以下一起来看看这一系列步骤的作用。文件管理设备:其负责文件及其在磁盘上存储位置之间的映射关系,不过需要通过磁盘读写中断INT13执行读写命令来存储、调入文件。当新文件被保存时,文件管理器决定它在当前目录里的存储位置,在文件分配表中为这个新文件添加文件目录项,并把文件写入磁盘。当读文件时,文件管理器在FAT中找到文件在磁盘上的位置,接着就调
3、入文件。IDE(ATA)界面:在介绍IDE(ATA)界面前,简单说说硬盘的结构:硬盘分为一定数量的柱面(以硬盘中心为圆心的同心圆磁迹),每个柱面都需要磁头来读写数据。另外,硬盘上的数据都是以每扇区512字节的格式存储的,所有的数据传输都是以扇区(柱面被等分的园弧磁迹)为单位的。IDE(ATA)界面是寄存器驱动式的并口总线。要传输数据,BIOS首先往IDE(ATA)里特定的寄存器写入数据的开始地址和数据传输的长度,再把有关的读/写命令往特定的寄存器里发送从而开始数据传输。现在的硬盘一般都支持逻辑块寻址(LBA)和柱面磁头扇区寻址(CHS),我们以CHS寻址方式来举例:数据传输的开始地址
4、是写到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硬盘的最大容量为13
5、6.9GB。LBA寻址方式,上述的总共28位可用的寄存器空间(16+8+4)被看作一个完整的LBA地址,因为包括位0(CHS里扇区不能从0开始计算),其能寻址的扇区数是268,435,456(65,536x16x256),这时IDE硬盘的最大容量为137.4GB。INT13管理:INT13管理其实也是按照寄存器的模式来设计的,它的高层即文件管理器层发布数据读写命令和有关的参数给CPU,然后触发INT13中断的进行,激活BIOS的磁盘服务来执行数据传输。数据的开始地址被写到3个8位寄存器里,分别是:柱面低位寄存器柱面高位/扇区寄存器磁头寄存器柱面地址是10位(柱面低位寄存器占用8位、柱
6、面高位寄存器占用2位),扇区地址为6位(8位-已经被计算过的高位寄存器的2位)。磁头寄存器为8位。因此如果这样的话:柱面的最大数是1024(2的10次方),磁头的最大数是256(2的8次方),扇区的最大数是63(2的6次方-1)。所以,通过INT13管理能寻址的扇区数是16,515,072(1,024x256x63)。一扇区是512字节,也就是说如果以CHS寻址方式,IDE硬盘的最大容量为8.456GB。LBA寻址方式能寻址的扇区数是16,777,216(1024x256x64),这时IDE硬盘的最大容量为8.601GB。看到这里,我们应该感到硬盘容量限制的成因有了一些“眉目”了吧,
7、那么我们具体来到底是什么让硬盘出现了所谓的限制:1.528MB的容量限制:由于早先的硬盘容量比较小,因此设计的BIOS的时候当把地址从Int13的地址寄存器转换为IDE(ATA)的地址寄存器时,仅仅把INT13管理中10位的柱面地址用来对应IDE(ATA)界面中的16位柱面寄存器,而把没有用到的6位(高位寄存器)地址都设定为0。并且也仅把6位的扇区地址来对应IDE(ATA)界面的8位扇区寄存器,其中没有用到的2位设置为0。并且INT13管理的磁头寄存器4位
此文档下载收益归作者所有