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

Pan*_*der -1 x86 assembly kernel disk-access bootloader

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

哪种寻址方式非常有效(手段,可以用于大多数驱动器)?

谢谢

Mar*_*oom 5

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


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

LBA对于CHS就像弧度一样.它是一个更自然的单位,它突破了504 MiB和7.9 GiB限制.有什么理由使用CHS.CHS是一种历史人工制品,早于硬盘驱动器在公共市场上的传播.

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

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

然而,访问具有直接硬件访问权限的磁盘并非即将到来,您至少需要一个基本的PCI/PCIe或USB总线驱动程序来访问磁盘控制器,一个主机控制器驱动程序(可以是IDE,AHCI,NVMe for PCI/PCIe设备)向磁盘和驱动程序发出命令,实现这些命令使用的协议(例如SCSI和变体,ATA/ATAPI,MMC,UMS等).

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