Когда Windows XP загружается без драйверов AHCI в системе SATA, вы получаете BSOD, например 0x0000007b .

Чего я не понимаю, так это того, почему он не может загружаться без драйверов AHCI. Очевидно, что он уже мог загружать код ядра, который дает вам BSOD, так почему же он не может загрузить остальную часть ОС таким же образом?

Альтернативно: все формы ATA поддерживают программируемый ввод / вывод, а IIRC Windows XP также поддерживает PIO. Таким образом, они могли бы загрузить остальную часть ОС, используя PIO тоже ... не так ли?

1 ответ1

3

Windows использует INT13h (BIOS) для доступа к жестким дискам только на самых ранних этапах. Если в течение этого времени не загружен подходящий драйвер Windows для доступа к диску, появится синий экран.

INT13h доступен только в реальном режиме. Современная Windows, однако, работает в защищенном режиме или в длинном режиме (x64).

На собственном UEFI (как в: когда не используется CSM) INT13h недоступен. Windows (предположительно) использует службы UEFI для доступа к дискам в этой среде.

Ответ на редактирование: работает ли ваш контроллер SATA в режиме AHCI или нет, не контролируется операционной системой. Вместо этого вы выбираете, что использовать в настройках прошивки. Микропрограмма устанавливает соответствующие биты в регистрах контроллера.

Виртуальный режим 8086 это просто виртуальный. Он не обеспечивает доступ к реальным функциям BIOS. Вместо этого хост должен эмулировать эти функции.

Несмотря на то, что я не эксперт, я нахожу весьма вероятным, что переключение обратно в реальный режим приведет к удалению важной информации в MMU и так далее, не говоря уже о последствиях остановки всего защищенного режима только для доступа к диску.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .