哪种寻址方式用于访问磁盘?

时间:2016-12-16 21:43:01

标签: assembly x86 kernel bootloader disk-access

我正在学习操作系统开发,而且我正处于初级水平。我创建了一个简单的启动加载器要访问磁盘上的其他文件(比如HDD或USB驱动器),我应该使用哪种寻址模式?(CHS或LBA或INT 13h扩展)。

这些寻址模式中的哪一种非常有效(手段,可以用于大多数驱动器)?

由于

1 个答案:

答案 0 :(得分:5)

首先,INT13h扩展是API的扩展,而不是HD寻址方法。

您必须确定是要使用BIOS还是直接硬件访问 使用BIOS是不切实际的,因为它提供了16位接口。但是,它非常容易使用。在这种情况下,您将使用LBA作为寻址方法。

LBA对于CHS就像弧度一样。 这是一个更自然的单位,它突破了504 MiB和7.9 GiB限制。 有little reason to use CHS。 CHS是一种历史人工制品,早于硬盘驱动器在公共市场上的传播。

如果要使用直接硬件访问,则只能使用LBA。在撰写本文时,当前ATA/ATAPI 8 Command Set已弃用CHS:

  

在标准ATA / ATAPI-5及更早版本中,定义了CHS翻译。这个翻译已经过时但是如果   实施它应按照ATA / ATAPI-5的规定实施。

访问具有直接硬件访问权限的磁盘并不是即将到来,您至少需要一个基本的PCI / PCIe或USB总线驱动程序才能访问磁盘控制器,即主控制器驱动程序(可以是{{3 }},IDEAHCI用于PCI / PCIe设备)向磁盘和驱动程序发出命令,以实现这些命令使用的协议(例如NVMeSCSI and variantsATA/ATAPIMMC等等。

所以我相信你会使用INT13h扩展,在这种情况下,最好的寻址方法是BIOS提供的64位LBA。