El documento describe la historia y funcionalidad del BIOS. El BIOS fue inventado en 1975 como parte del sistema operativo CP/M y posteriormente adoptado como estándar en los IBM PC en 1981. El BIOS contiene código para inicializar hardware y cargar el sistema operativo. Se ha actualizado para admitir nuevos dispositivos, almacenamiento en memoria flash y reemplazos como EFI para admitir arquitecturas de 64 bits.
2. El acrónimo BIOS (-Basic Input/Output System-) fue inventado por Gary Kildall el creador
del sistema operativo CP/M en 1975, siendo el nombre de un archivo del sistema. Las
máquinas con CP/M usualmente tenían una ROM muy simple que hacía que la unidad
de disquete leyera datos desde su primera posición de memoria donde se encontraba
la primera instrucción del archivo BIOS que se encargaba de configurar el sistema o
programa BIOS.
El diseño del IBM PC (1981) incluyó todas las funcionalidades básicas de entrada y
salida en memorias tipo ROM, uso que posteriormente se erigió como el estándar de
facto para la industria. El BIOS del 5150 fue el único programa que la compañía IBM
desarrolló para el equipo, siendo la única pieza de código sobre la que se tenían
derechos exclusivos. Basándose en procesos de Ingeniería Inversa, se escribieron
versiones que tenían idénticas funcionalidades a la BIOS IBM pero además incluyeron
nuevos dispositivos como los discos duros y varias unidades de disquete manteniendo la
retrocompatibilidad hasta el día de hoy.
Hasta 1990 el BIOS era almacenado en memorias ROM o EPROM, después comenzó a
utilizarse memorias Flash que pueden ser actualizadas por el usuario sin necesidad de
destapar la caja.
En la última década se ha desarrollado el firmware EFI como esquema de ROM que
reemplazará a la BIOS legada que está limitada a ejecutarse en 16 bits cuando la
mayoría de procesadores son capaces de funcionar a 64 bits.
3. Después de un reset o del encendido, el procesador ejecuta la instrucción que
encuentra en el llamado vector de reset (16 bytes antes de la instrucción máxima
direccionable en el caso de los procesadores x86), ahí se encuentra la primera línea de
código del BIOS: es una instrucción de salto incondicional, que remite a una dirección
más baja en la BIOS. En los PC más antiguos el procesador continuaba leyendo
directamente en la memoria RAM las instrucciones (dado que esa memoria era de la
misma velocidad de la RAM), ejecutando las rutinas POST para verificar el
funcionamiento del sistema y posteriormente cargando un sistema operativo (de 16
bits) en la RAM, que compartiría funcionalidades de la BIOS.
De acuerdo a cada fabricante del BIOS, realizará procedimientos diferentes, pero en
general se carga una copia del firmware hacia la memoria RAM, dado que esta última
es más rápida. Desde allí se realiza la detección y la configuración de los diversos
dispositivos que pueden contener un sistema operativo. Mientras se realiza el proceso
de búsqueda de un SO, el programa del BIOS ofrece la opción de acceder a la RAM-
CMOS del sistema donde el usuario puede configurar varias características del
sistema, por ejemplo, el reloj de tiempo real. La información contenida en la RAM-
CMOS es utilizada durante la ejecución del BIOS para configurar dispositivos
como ventiladores, buses y controladores.
Los controladores de hardware del BIOS están escritos en 16 bits siendo incompatibles
con los SO de 32 y 64 bits, estos cargan sus propias versiones durante su arranque que
reemplazan a los utilizados en las primeras etapas.
4. Para una referencia de tarjeta madre el fabricante puede
publicar varias revisiones del BIOS, en las cuales se
solucionan problemas detectados en los primeros lotes, se
codifican mejores controladores o se da soporte a nuevos
procesadores.
La actualización de este firmware puede ser realizado
con algún programa para quemar una nueva versión
directamente desde el sistema operativo, los programas
son propietarios de cada compañía desarrolladora del
firmware y por lo general pueden conseguirse
en internet junto al BIOS propiamente dicho.
La actualización del BIOS es percibida como no exenta
de riesgos, dado que un fallo en el procedimiento
conduce a que la tarjeta madre no arranque. Debido a
ello algunos fabricantes usan sistemas como
el bootblock, que es una porción de BIOS que está
protegida y que no es actualizable como el resto del
firmware.
5. A diferencia de otros componentes del sistema, la tarjeta de
vídeo debe funcionar desde el arranque inicial, mucho antes de
que cualquier sistema operativo esté siendo cargado en la
memoria RAM: en los sistemas con vídeo integrado, la BIOS de la
tarjeta madre contiene las rutinas necesarias para hacer
funcionar el vídeo de la placa.
Los primeros ordenadores (que no poseían vídeo integrado)
tenían BIOS capaces de controlar cualquier tarjeta
adaptadora MDA y CGA. En 1984 cuando aparecieron sistemas
nuevos como el EGA fue necesario agregar una BIOS de vídeo
para mantener la compatibilidad con esos sistemas que no
tenían las rutinas de manejo para el nuevo estándar; desde esa
época las tarjetas de vídeo incluyen un firmware propio.
El BIOS de estas adaptadoras provee herramientas básicas para
manejar el hardware de vídeo que ofrece la tarjeta. Cuando el
computador inicia, algunas de esas tarjetas muestran en
pantalla la marca de la misma, el modelo y la versión del
firmware además del tamaño de la memoria de vídeo.