Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Tecnología del PC

[Home]  [Inicio]  [Índice]


4.4 El BIOS: Soporte de dispositivos

§1 El sistema básico de entradas salidas

Aparte de los procesos de verificación y carga descritos en páginas anteriores, la característica fundamental del BIOS, que además justifica su nombre de "Sistema Básico de Entrada Salida", es que en este firmware se encuentran las instrucciones necesarias para acceder a determinados servicios básicos del hardware (dispositivos de Entrada/Salida), entre los que se encuentran el teclado, la pantalla, los puertos serie y los controladores de disco. Estos trozos de código son accedidos a través de las direcciones contenidas en la tabla de vectores de interrupción ( H2.4). De forma que cualquier software que se cargue en el ordenador, puede saber en que dirección buscar para encontrar los servicios correspondientes.

En realidad, esta es la parte más original y trascendente del diseño del PC; lo que ha posibilitado la existencia de "Clónicos", y hace que un conjunto de piezas hardware sean un PC. Es también lo que hace que cualquier programa para tecnología Intel-PC corra en un PC, con independencia de como sean realmente las interioridades de su hardware. Desde este punto de vista, la BIOS representa un elemento unificador común a todos los PCs;  todas estas máquinas presentan al exterior una misma interfaz (determinada por el BIOS). La filosofía de diseño que utilizaron los diseñadores de IBM fue, en palabras de Peter Norton [1]: "Deje que el BIOS lo haga, no se enrede con el control directo".

Cuando un programa necesita determinados recursos del hardware (lo que en último término viene a ser una entrada/salida), la BIOS representa una forma unificada de hacerlo; se pide a la BIOS el “servicio” de una forma estandarizada, de ahí el nombre: Sistema básico de Entradas/Salidas. En este sentido, el sistema de Entradas/Salidas del PC es un dispositivo virtual; se le interroga de una forma estándar y él se encarga de los detalles sucios del hardware. Observe que cuando se extiende este concepto, incluyendo no solo el sistema básico de E/S sino al procesador, se llega de forma natural a la máquina virtual de Java.

Aunque existen diversas versiones y fabricantes (la propia historia de la BIOS es muy interesante), su comportamiento externo está estandarizado. La BIOS es en realidad una caja negra, no importa como lo hace internamente. Lo importante es que al preguntarle de una forma estandarizada, produce el resultado deseado (aquí se llaman "Servicios"). Se han introducido pocos o ningún cambio básico desde su aparición con el primer PC, ya que en realidad, todas las mejoras del software se han aplicado a un nivel superior a esta capa básica, lo que ha hecho posible, entre otras cosas, cambiar de Sistema Operativo DOS, Windows o Linux (por ejemplo) sin necesidad de cambiar las BIOSes.

En la página adjunta se incluye una somera descripción de estos "Servicios" ( H2.4.1).

§2 Porqué este sistema

La división de las tareas básicas del ordenador en dos partes: una que corresponde al Sistema Operativo, y otra que corresponde a la BIOS, es atribuida a Gary Kildall, personaje al que ya hemos hecho referencia ( 1).  Cuando deseaba facilitar la implementación de sus Sistema Operativo CP/M en las distintas máquinas que comenzaban a aparecer entre los aficionados a la electrónica digital, pensó que dividirlo en dos partes ayudaría a sus propósitos. La parte específica de cada máquina, que trataba de los detalles de E/S, sería encomendada a un módulo denominado precisamente por esto BIOS. Mientras que el resto del Sistema sería relativamente independiente. De esta forma, la adaptación del Sistema a una nueva máquina solo requería reescribir los módulos correspondientes del BIOS.  Evidentemente el sistema fue todo un éxito y ha pervivido hasta nuestros días.

§3 Evolución

Aunque el principio de funcionamiento es el que hemos relatado a lo largo de estas páginas, el aumento de complejidad de los periféricos, junto con la insaciable demanda de velocidad, ha motivado que empiece a invertirse la tendencia. Cada vez más, el Sistema Operativo rehace los punteros situados por el BIOS en la tabla de vectores de interrupción IDT ( 2.4) para que señalen a sus propias rutinas. Por ejemplo, las controladoras gráficas actuales (2005) utilizan modos de operación impensables en las primitivas adaptadoras gráficas de color CGA, y los servicios de control utilizan rutinas específicas, de 32 o 64 bits, que explotan las nuevas posibilidades de los dispositivos. En este sentido, los servicios BIOS nativos solo son utilizados cuando se necesita compatibilidad hacia atrás. Por ejemplo, si arrancamos un equipo Pentium con un disquete DOS por razones de mantenimiento o diagnóstico.  En este caso, algunas de las características más avanzadas del sistema, como la controladora gráfica serán utilizadas en forma muy rudimentaria, mientras que otras, como los puertos USB, infrarrojos, firewire, etc. no serán accesibles. La razón es que tales "Servicios" sencillamente no existen en la BIOS tradicional.

§3.1 EFI

En 1998, Intel lideró una iniciativa conocida bajo las siglas IBI ("Intel Boot Initiative"), destinada a mejorar las capacidades y limitaciones de la BIOS tradicional. Posteriormente, en 2002, lanzó una extensión de las ideas anteriores denominada EFI ("Extensible Firmware Interface") y destinada las máquinas de arquitectura IA-32 e IA-64 [2] . Se trata de un nuevo estándar de BIOS que, al igual que la original, tiene la doble misión de iniciar la carga del sistema y servir de interfaz de bajo nivel con los dispositivos hardware y su firmware. La figura adjunta (original de Intel) muestra esta doble funcionalidad.

Como en el esquema tradicional, la BIOS contiene información relativa al hardware específico. Pero además de los servicios tradicionales de run-time, proporciona un conjunto estandarizado de servicios muy avanzado al sistema de carga. La idea es ofrecer a las utilidades de precarga (antes que se haya cargado el Sistema Operativo), mucha más operatividad que la ofrecida en las BIOSes tradicionales.

Nota: recordemos que, aparte del inventariado de recursos y comprobación del hardware ( 4.2), la funcionalidad ofrecida por las BIOSes tradicionales en los momentos iniciales, se reduce a localizar el sector maestro de carga MBR de determinadas unidades ( 4.3).

En realidad la iniciativa EFI convierte a las antiguas BIOSes en un Sistema Operativo por derecho propio, pequeño aunque bastante completo, que incluye capacidades básicas de trabajo en red ("Networking"); manejo de pantallas gráficas; teclado y capacidad de gestionar su propio sistema de almacenamiento (disco memorias flash, etc). Además de permitirle gestionar los discos y sus particiones, puede incluso disponer de su propio espacio, que puede aparecer como una partición específica en el disco.

El resultado es una plataforma que permite ejecutar aplicaciones de 32 bits en modo real (que son comunes para las arquitecturas IA-32 e IA-64). Para tal fin existe un entorno de desarrollo ("Application framework") que permite compilar aplicaciones C tradicionales para EFI.  Los resultados de las nuevas posibilidades son evidentes en todos los órdenes. Por ejemplo, están disponibles desde el principio dispositivos USB o PC-CARD (PCMCIA) entre otros, que antes solo eran accesibles tras la carga del Sistema. Es posible la gestión remota del sistema, lo que permite instalar servidores en rack sin que necesiten la correspondiente consola, o las complicaciones de los concentradores actuales (compartir un monitor, ratón y teclado entre distintos equipos). Son posibles rutinas de verificación y diagnóstico muy avanzadas. etc. 

Sitio oficial de EFI    www.intel.com/technology/efi/


  Inicio.


[1] Peter Norton "The Peter Norton Programer's guide to the IBM PC"  Microsoft Press 1.985.

[2] La arquitectura Intel IA-32 está constituida por máquinas "Little Endian" ( E2.2.6a) de 32 bits. Incluye procesadores Pentium de las familias P6; Pentium 4; Pentium M; Xeon; Pentium D y Pentium Extreme Editions. La familia P6 incluye los Pentium Pro; Pentium II y Pentium III. Estas máquinas ejecutan todas las instrucciones de su predecesoras, las máquinas de 16 bits que se inician en 1978 con el Intel 8086.

La arquitectura IA-64 representa la última tecnología de este fabricante destinada a sus procesadores Itanium. Son máquinas de 64 bits que pueden soportar los dos tipos de ordenación interna: Little Endian y Big Endian; gran número de registros internos (64) y un formato interno unificado para los datos de 82 bits que permite cálculos de alta precisión.