当 Windows XP 在 SATA 系统上没有 AHCI 驱动程序的情况下启动时,您会看到类似的 BSOD 0x0000007b
。
我不明白的是为什么如果没有 AHCI 驱动程序,它就无法加载。显然,它已经能够加载导致 BSOD 的内核代码,那么为什么它不能以同样的方式加载操作系统的其余部分呢?
或者:所有形式的 ATA 都支持可编程 I/O,如果我没记错的话,Windows XP 也支持 PIO。所以他们也可以使用 PIO 加载操作系统的其余部分... 不是吗?
答案1
Windows 仅在以下情况下使用 INT13h (BIOS) 访问硬盘:非常最早阶段。如果在此期间没有加载适合访问磁盘的 Windows 驱动程序,则会弹出蓝屏。
INT13h 仅在实模式下可用。然而,现代 Windows 在保护模式或长模式 (x64) 下运行。
在原生 UEFI 上(例如:不使用 CSM 时),INT13h 不可用。Windows(大概)使用 UEFI 服务来访问此环境中的磁盘。
回应编辑:您的 SATA 控制器是否在 AHCI 模式下运行不受操作系统控制。相反,您可以在固件设置中选择使用哪种模式。固件会在控制器的寄存器中设置相应的位。
虚拟 8086 模式就是虚拟的。它不提供对真实 BIOS 功能的访问。相反,主机必须模拟这些功能。
虽然我不是专家,但我发现切换回实模式很可能会丢弃 MMU 中的重要信息等等,更不用说为了访问磁盘而停止所有保护模式的含义。