En primer lugar, el BIOS incluye un controlador para su controlador AHCI integrado. Y en caso de que el controlador no esté integrado, sino en una tarjeta PCI, la tarjeta proporcionará una ROM de opción PCI que contiene un controlador de BIOS para el controlador.
Si su firmware es compatible con UEFI, (o la ROM de opción) también incluirá un controlador UEFI para el controlador.
Lo mismo es cierto para todos los demás componentes de su PC pueden arrancar (es decir, usualmente USB, CD-ROM, red cableada). Otros componentes generalmente no tienen controladores BIOS / UEFI en absoluto.
Los sistemas operativos pueden usar los controladores BIOS o UEFI (por ejemplo, DOS o Windows 95), pero la mayoría de los sistemas operativos modernos intentan evitar la molestia y evitar las limitaciones de los controladores BIOS y, en su lugar, usan su propio formato de controlador.
Limitaciones comunes de los controladores de BIOS:
- generalmente pobre rendimiento de lectura e incluso peor rendimiento de escritura
- solo es compatible si solo se activa el primer procesador / núcleo
- solo funciona en modo de 16 bits (lo que implica una tarea única y una memoria direccionable de 640 KB)
- solo funciona si la puerta A20 está despejada (lo que implica 1 MB de memoria direccionable)
Lo que significa que durante el arranque, los sistemas operativos modernos tendrán que cambiar repetidamente entre el modo de tarea única de 16 bits y 32 bits / 64 bits y alternar repetidamente la puerta A20 hasta que hayan leído el núcleo del sistema operativo y al menos el controlador del disco en alto memoria (640K generalmente no es suficiente hoy); luego cambiarán al modo multitarea y continuarán cargando el resto del sistema operativo utilizando el kernel y el controlador de disco ahora cargados.
Las limitaciones de UEFI son menos malas (los controladores UEFI se ejecutan en modo de 64 bits, pero aún requieren el modo de tarea única y solo un núcleo activado), pero siguen siendo lo suficientemente malos como para que no conozca ningún sistema operativo que intente usar controladores UEFI después del arranque - y esa es probablemente la razón por la que nadie escribió un navegador web para UEFI puro (los navegadores web son inherentemente multiproceso y sería difícil escribir un navegador web de un solo subproceso con buen rendimiento).