我正在学习操作系统开发,并且处于初级阶段。我创建了一个简单的引导加载程序。要访问磁盘上的其他文件(例如 HDD 或 USB 驱动器),我应该使用哪种寻址模式?(CHS 或 LBA 或 INT 13h 扩展名)。
这些寻址模式中哪一种非常有效(意味着可以用于大多数驱动器)?
谢谢
我正在学习操作系统开发,并且处于初级阶段。我创建了一个简单的引导加载程序。要访问磁盘上的其他文件(例如 HDD 或 USB 驱动器),我应该使用哪种寻址模式?(CHS 或 LBA 或 INT 13h 扩展名)。
这些寻址模式中哪一种非常有效(意味着可以用于大多数驱动器)?
谢谢
首先,INT13h 扩展是对 API 的扩展,而不是 HD 寻址方法。
您必须确定是要使用 BIOS 还是直接访问硬件。
使用 BIOS 是不切实际的,因为它提供 16 位接口。但是,它非常易于使用。在这种情况下,您将使用 LBA 作为寻址方法。
LBA 是 CHS,就像弧度是度数一样。它是一个更自然的单元,它打破了 504 MiB 和 7.9 GiB 的限制。几乎没有理由使用 CHS。CHS 是 HDD 在公共市场上传播之前的历史产物。
如果要使用直接硬件访问,则只能使用 LBA。在撰写本文时,当前的ATA/ATAPI 8 命令集已弃用 CHS:
在标准 ATA/ATAPI-5 和更早的版本中,定义了 CHS 转换。此转换已过时,但如果实施,则应按照 ATA/ATAPI-5 中的定义实施。
然而,通过直接硬件访问来访问磁盘还不是很快,您至少需要一个基本的 PCI/PCIe 或 USB 总线驱动程序来访问磁盘控制器,一个主机控制器驱动程序(可以是IDE、AHCI、NVMe PCI/PCIe 设备)向磁盘和驱动程序发出命令,这些命令实现了这些命令使用的协议(例如SCSI 和变体、ATA/ATAPI、MMC、UMS等)。
所以我相信你会使用 INT13h 扩展,在这种情况下,最好的寻址方法是 BIOS 提供的 64 位 LBA。