实主要也就是硬盘以外的系统使用的C/H/S与硬盘ATA接口使用的C/H/S的匹配问题。下面就具体看看到底是什么让硬盘出现了所谓的限制:
1.3.2.1 528MB的容量限制
由于早先的硬盘容量比较小,因此设计的BIOS是:当把地址从INT13的地址寄存器转换到IDE(ATA)的地址寄存器时,仅仅把INT13管理中的10位柱面地址直接送给对应IDE(ATA)界面中的16位柱面寄存器,而把没有用到的6位(高位寄存器)地址都设定为0,把6位的扇区地址直接送给对应IDE(ATA)界面的8位扇区寄存器,其中没有用到的2位设置为0,把INT13管理的磁头寄存器4位(又去掉了4位)直接送给对应IDE(ATA)的磁头地址寄存器(当时的工程师们认为磁头数怎么也不可能超过16,现在物理磁头也确实没有超过16)。所以,此时的磁盘柱面最大数为210=1024,磁头的最大数是24=16,扇区的最大数是26-1=63,因此能寻址的扇区数就成了1,024x16x63=1,032,192。一个扇区的容量是512字节,也就是说如果以CHS方式寻址,IDE硬盘的最大容量为528MB,这样528MB的硬盘容量限制就出现了(有时也称504MB限制,这是因为把1MB当作1,048,576字节了,以后本书中再出现这种容量差别,就不再做说明,之所以不采用一种标准,主要是考虑到熟悉程度,比如说528MB限制,就很容易理解,而说504MB,可能就有点绕舌,还要去想一想,当然,这都是历史原因造成的)。
1.3.2.2 2.1GB的容量限制
这里分为两个部分,一部分是由磁盘服务的限制造成的,另外一部分是由于磁盘格式造成的,通常我们把前者称为2.1GB的硬件容量限制,后者称为2.1GB的软件容量限制。
1.3.2.2.1 硬件容量限制
当时,为了528MB容量限制的问题,人们提出了一些不同的办法,其中一个办法就是将INT13服务的磁头寄存器里没有用到的4位中的高2位保留给柱面数的第11、12位使用。这样,最大的磁头数就是26=64,最大的柱面数就是212=4096。但是,当时的操作系统不使用这种转换方法,而是认为磁头寄存器的所有位数只用来记录磁头数,它采用把柱面数除以某一整数,变成相应的逻辑柱面数、磁头数乘以同一整数,变
上一页 [1] [2] [3] [4] [5] [6] 下一页