Next Previous Contents

4. 转换与磁碟管理程式

没有人对磁碟的'真实' geometry 有兴趣.磁轨的磁区数通常是变动的 - 接近磁碟外围的磁轨有比较多的磁区 - 所以没有'真实'的每磁轨磁区数. 对於使用者而言最好是把磁碟当作编号 0,1,..., 的磁区组合成的线性阵列, 让控制器去找出磁区究竟位於磁碟的那里.

此线性编号一般通称为 LBA.对於 geometry 为 (C,H,S) 的磁碟而言属(c,h,s) 的线性位址为 c*H*S+h*S+(s-1).所有 SCSI 控制器都使用 LBA, 某些 IDE 控制器也是.

如果 BIOS 把这 24 个位元(c,h,s) 转换成 LBA 并□给懂得 LBA 的控制器, 那麽又可以定址到 7.875 GB .并不足以应付所有的磁碟, 但仍然是个改进.注意此处 BIOS 使用的 CHS, 它不再与'实体'有任何关系.

当控制器不懂何为 LBA 但是 BIOS 知道如何转换时有些类似的方法可行.(在 BIOS 设定中通常称为 'Large'.)现在 BIOS 将呈现 geometry 为(C',H',S')给作业系统, 而在与磁碟控制器沟通时则使用(C,H,S). 通常 S=S', C'=C/N 而 H'=H*N, 其中 N 是确保 C'<=1024 之 2 的最小次方(所以 C'=C/N 时舍去的数浪费少许容量).再一次, 这允许存取最多达 7.875 GB.

如果 BIOS 不知道 'Large' 或是 'LBA', 那麽还是有软体的解决方案.像是 OnTracker 或 EZ-Drive 这些个磁碟管理程式会以它们自己的函式(routines)替换掉 BIOS 的. 通常这是藉由将磁碟管理程式放在 MBR 及其後几个磁区(OnTrack 称这些程式码为 DDO: Dynamic Drive Overlay )来达成的, 所以它会在任何其它作业系统之前被启动. 这也就是为什麽在安装磁碟管理程式後从软碟启动可能会出问题.

这影响可能多於或少於 BIOS 转换 - 但特别是在相同的磁碟上跑数种不同的作业系统时, 磁碟管理程式可能引起许多问题.

Linux 从 1.3.14 版开始支援 OnTrack 磁碟管理程式, 从 1.3.29 开始 支援 EZ-Drive .下面有些更进一步的资讯.


Next Previous Contents