在线帮助
 
 
 
 
 
 
 
当前位置:在线帮助
   
>>关于硬盘的一些知识

  操作系统(特殊的应用程序可绕过操作系统)通过中断INT13调用BIOS中的磁盘服务程序,该服务程序再将INT13 请求转换为硬盘的ATA接口请求,继而在硬盘上进行数据的存取。要使用硬盘,就必须提供硬盘的地址信息,早期的硬盘与BIOS磁盘服务程序一样通过CHS(柱面数、磁头数、每柱面扇区数)寻址,现在的硬盘支持LBA(逻辑块地址)寻址。
  与硬盘容量有关的部分就是INT13接口和ATA接口。INT13接口程序保存在主板的BIOS中,独立于操作系统;ATA接口与硬盘驱动器相关。这两种接口都是通过寄存器寻址的。

  列如:在一个8位的寄存器中,使用了其低6位来保存柱面扇区数信息,其余2位与另一个8位寄存器一起用来保存柱面数。由于柱面数和磁头数都是从0开始的,而扇区数是从1开始的,每个扇区的容量为512字节,所以当使用CHS寻址时,通过INT13接口,硬盘理论上可寻址的最大容量为:
  1024×63×256×512/1024 KB=7.75 GB

  接下来我们再看一下ATA接口的寄存器寻址情况。
  当使用CHS寻址时,通过ATA接口,硬盘理论上可寻址的最大容量为:
  65536×255×16×512/1024 KB=127.5 GB
  由于INT13和ATA两个接口表示硬盘地址的C、H、S三个参数的位数不一致,又因为早期的硬盘容量比较小(只有10MB、40MB等),所以开发商在开发BIOS程序时采用了最简单的办法:取两个接口中位数最少的参数来表示硬盘的地址,即用10位表示柱面数,用6位表示扇区数,用4位表示磁头数,系统在接口间传递参数时,只需将多余的高位清0就可以了,无需作任何额外的转换。这样在系统中能够支持的硬盘最大容量为:
  1024×63×16×512/1024 KB=504MB(由于硬盘标称的容量是以1000而不是1024来作为换算单位的,所以上式也可改为1024×63×16×512/10002 =528MB),这就是最初的硬盘具有528MB容量限制的原因。
  为了克服528MB容量的限制,BIOS和硬盘开发商想出了多种办法,主要的有如下两种:
  1采用位移变换法。即在INT13和ATA两个接口间传递硬盘地址参数时,BIOS磁盘服务程序保持硬盘的柱面扇区数不变,而采取减少(增加)柱面数,同时增加(减少)磁头数的方法,并保持磁盘的总容量不变。如假设一个硬盘有4096个柱面和16个磁头,其柱面数超出了INT13地址寄存器的最大范围(1024),则BIOS服务程序将其变换为1024(4096/4)个柱面和64(16×4)个磁头,这样既保证了硬盘的容量未变,又使操作系统或应用程序能够识别和访问到全部的硬盘空间。
  2采用LBA变换法。为了更好地支持大硬盘,硬盘开发商对ATA接口驱动做了改进,除了原来的CHS寻址方式外,又增加了LBA方式。LBA寻址方式,简单地说,就是把原来分别表示C、H、S三个参数的28个位(16+4+8),看成是一个表示地址的数,因此可以寻址的最大空间为:
  228×512/10243=128GB
  在LBA变换方式下,BIOS磁盘服务程序将来自ATA接口的表示硬盘LBA地址的数,按一定规则产生符合INT13接口要求的C、H、S值,提供给操作系统或应用程序;反之,BIOS磁盘服务程序只要将INT13地址寄存器中的C、H、S值相乘就得到一个有效的LBA地址值。
  对于大容量硬盘,人们基本上都是采用的LBA寻址方式,在该方式下,前面已经分析过,硬盘驱动器ATA接口的容量限制是128GB,而BIOS的INT13磁盘服务接口的容量限制是(见前面图二的分析,不同的是在LBA方式下,表示扇区数的0也是有效的,因为它是组成LBA地址值的一部分,而不是表示不存在的0扇区):
  1024×64×256×512/1024 KB=8 GB
  这就是目前一些微机系统不支持8GB以上大容量硬盘的原因。不难看出,问题出在BIOS的磁盘服务程序部分,所以只要升级BIOS程序就能解决。
  那么新的BIOS磁盘服务程序是如何克服8GB容量的障碍的呢?原来BIOS开发商重新定义了新的扩展INT13中断功能,该新的磁盘服务程序不再通过寄存器来传递硬盘地址信息,而是通过主存储器传递硬盘地址信息包,该信息包是一个64位的LBA地址(摆脱了原来通过寄存器寻址时24位8GB的限制),其中的低28位可以直接传送到ATA接口寄存器中。
  至此,硬盘8GB容量的限制已经不复存在,读者也一定能看出,硬盘容量的下一个障碍点是多少,对,是128GB,也就是硬盘驱动器接口地址28位的限制。

(点评:非常完善的介绍,将硬盘的有关容量的原理展现在读者面前。

CMOS设置中通常硬盘会有4个参数供选择,LBA、LARGE、NORMAL、AUTO 现在所有的硬盘应该都是LBA方式,或者选用AUTO方式。在某些机器上当两次开机选取的模式不同时,可能导致,磁盘无法辨认,这种情况会让人误以为是分区表损坏,而使用各种工具,导致最后真正的损坏。这一点非常重要。)