¿Por qué Windows XP requiere controladores AHCI cuando ya no podía cargarse?

0

Cuando Windows XP arranca sin controladores AHCI en un sistema SATA, obtienes un BSOD similar 0x0000007b.

Lo que no entiendo es por qué no se puede cargar sin los controladores AHCI. Claramente, ya era capaz de cargar el código del núcleo que le proporciona el BSOD, entonces ¿por qué no podría cargar el resto del sistema operativo de la misma manera?

Alternativamente: todas las formas de ATA admiten E / S programadas, y IIRC Windows XP también admite PIO. Entonces podrían haber cargado el resto del sistema operativo usando PIO también ... ¿no podrían?

Mehrdad
fuente
Buena pregunta. Estoy adivinando se usa el firmware (por ejemplo, BIOS de UEFI en modo CSM) para acceder a la unidad antes de cambiar a los conductores internos.
Hennes
@Hennes: Posiblemente. Pero de nuevo, ¿por qué no podía seguir haciendo eso?
Mehrdad
Los controladores internos se pueden actualizar y probablemente funcionen mucho mejor. Tampoco necesitan un cambio de contexto a través de una interrupción cada vez que desee cargar un nuevo sector. No es que esté adivinando. Es una razón probable. Tengo curiosidad por saber si alguien con hechos concretos lo confirmará.
Hennes
@Hennes: Correcto, pero ese es solo un argumento de por qué los controladores internos son mejores, no por qué deberían ser la única opción.
Mehrdad

Respuestas:

3

Windows utiliza INT13h de acceso (BIOS) para discos duros sólo en las muy primeras etapas. Si durante este tiempo no se carga un controlador de Windows adecuado para acceder al disco, aparece la pantalla azul.

INT13h solo está disponible en modo real. Sin embargo, Windows moderno se ejecuta en modo protegido o modo largo (x64).

En UEFI nativo (como en: cuando no está usando el CSM), INT13h no está disponible. Windows (presumiblemente) usa servicios UEFI para acceder a los discos en este entorno.

Respuesta a la edición : el sistema operativo no controla si su controlador SATA se ejecuta en modo AHCI o no. En su lugar, selecciona cuál usar en la configuración del firmware. El firmware establece los bits correspondientes en los registros del controlador.

El modo virtual 8086 es solo eso: virtual. No proporciona acceso a las características reales del BIOS. En cambio, el host debe emular estas características.

Aunque no soy un experto, creo que es muy probable que volver al modo real descarte información importante en la MMU y otras cosas, por no hablar de las implicaciones de detener todo el modo protegido solo para acceder al disco.

Daniel B
fuente
Entonces, ¿la respuesta real a la pregunta sería que no han implementado un cambio del modo protegido al modo real? Porque es totalmente posible hacer esto y me sorprende un poco si aún no lo hicieran ...
Mehrdad
No puede volver a cambiar. Todo Windows depende de las características del Modo protegido.
Daniel B
Pero no necesita que todo Windows se ejecute mientras se accede al disco duro, ¿verdad? Puede cambiar mientras accede al disco y luego volver a cambiar. Y de nuevo: ¿estás diciendo que ya no están haciendo esto por nada más?
Mehrdad
Por cierto, tenga en cuenta que ATA (incluido SATA) también es compatible con E / S programada, que también es compatible con Windows XP. Entonces también tenían ese mecanismo disponible. Entonces, ¿por qué era tan crucial cargar los controladores AHCI?
Mehrdad
Si "todo Windows" se detuviera cada vez que algo accede al almacenamiento (¡lento!), Probablemente tiraría su PC por la ventana. Estoy bastante seguro de que no es posible por otras razones. también. ¿Qué quieres decir con "ya haciendo esto"? Si su controlador SATA se ejecuta en modo AHCI o no, no depende del sistema operativo. Es una configuración de firmware. También tenga en cuenta que los comentarios no son para una discusión prolongada.
Daniel B