使用哪种寻址方式访问磁盘?
Which addressing mode to be used to access disk?
我正在学习 OS 开发,我处于初级阶段。我创建了一个简单的引导加载程序。要访问磁盘上的其他文件(比如 HDD 或 USB 驱动器),我应该使用哪种寻址模式?(CHS 或 LBA 或 INT 13h 扩展名)。
这些寻址方式中哪种方式效率高(意思是,可以用于大部分驱动器)?
谢谢
首先,INT13h扩展是API的扩展,不是HD寻址方式。
您必须决定是使用 BIOS 还是直接硬件访问。
使用 BIOS 是不切实际的,因为它提供 16 位接口。但是,它非常易于使用。在这种情况下,您将使用 LBA 作为寻址方法。
LBA 之于 CHS 就像弧度之于度数。
它是一个更自然的单位,它打破了 504 MiB 和 7.9 GiB 的限制。
有。 CHS 是一种历史产物,早于 HDD 在 public 市场上的普及。
如果你打算使用直接硬件访问,那么你只能使用LBA。在撰写本文时,当前 ATA/ATAPI 8 Command Set 已弃用 CHS:
In standards ATA/ATAPI-5 and earlier, a CHS translation was defined. This translation is obsolete but if
implemented it shall be implemented as defined in ATA/ATAPI-5.
然而,通过直接硬件访问来访问磁盘并不是指日可待,您至少需要一个基本的 PCI/PCIe 或 USB 总线驱动程序来访问磁盘控制器,一个主机控制器驱动程序(它可以是 IDE, AHCI, NVMe for PCI/PCIe devices) to issue commands to the disks and and driver that implements the protocol used by those commands (e.g. SCSI and variants, ATA/ATAPI, MMC, UMS 等等)。
所以我相信你会使用INT13h扩展,在这种情况下,最好的寻址方法是BIOS提供的64位LBA。
我正在学习 OS 开发,我处于初级阶段。我创建了一个简单的引导加载程序。要访问磁盘上的其他文件(比如 HDD 或 USB 驱动器),我应该使用哪种寻址模式?(CHS 或 LBA 或 INT 13h 扩展名)。
这些寻址方式中哪种方式效率高(意思是,可以用于大部分驱动器)?
谢谢
首先,INT13h扩展是API的扩展,不是HD寻址方式。
您必须决定是使用 BIOS 还是直接硬件访问。
使用 BIOS 是不切实际的,因为它提供 16 位接口。但是,它非常易于使用。在这种情况下,您将使用 LBA 作为寻址方法。
LBA 之于 CHS 就像弧度之于度数。
它是一个更自然的单位,它打破了 504 MiB 和 7.9 GiB 的限制。
有
如果你打算使用直接硬件访问,那么你只能使用LBA。在撰写本文时,当前 ATA/ATAPI 8 Command Set 已弃用 CHS:
In standards ATA/ATAPI-5 and earlier, a CHS translation was defined. This translation is obsolete but if implemented it shall be implemented as defined in ATA/ATAPI-5.
然而,通过直接硬件访问来访问磁盘并不是指日可待,您至少需要一个基本的 PCI/PCIe 或 USB 总线驱动程序来访问磁盘控制器,一个主机控制器驱动程序(它可以是 IDE, AHCI, NVMe for PCI/PCIe devices) to issue commands to the disks and and driver that implements the protocol used by those commands (e.g. SCSI and variants, ATA/ATAPI, MMC, UMS 等等)。
所以我相信你会使用INT13h扩展,在这种情况下,最好的寻址方法是BIOS提供的64位LBA。