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.1  El BIOS: Carga inicial

§1  El principio

Hemos indicado que el hardware de un PC sin Sistema Operativo es como un ser humano en coma profundo; incapaz de realizar ninguna actividad útil.  Pero entonces surge la pregunta:  ¿Como se carga el software después que se ha conectado el suministro de energía, si no existe ningún programa capaz de hacer nada?.

Antes de explicar como resolvieron el problema los diseñadores del PC, permitidme un poco de historia.  Igual que en la actualidad, a los ordenadores de hace unas décadas, una vez conectados había que cargarles el software.  Como después de conectada, en la máquina no había ningún programa, había que introducirlo manualmente a través de la consola.  En esos tiempos los ordenadores tenían una consola o panel frontal lleno de lucecitas e interruptores con los que manualmente se podían realizar determinadas operaciones; básicamente se reducían a poder reiniciar (resetear) los registros,  examinar el contenido de cualquier posición de memoria, y colocar en ella cualquier dato o instrucción en binario.  De esta forma se cargaba manualmente un pequeñísimo trozo de código, el "bootstrap", que una vez arrancado era capaz de dirigirse a un dispositivo.  Por ejemplo, un lector de cinta perforada, en la que se iniciaba la carga de un programa más avanzado; el cargador binario ("Binary loader") que ya era capaz de aceptar algunas órdenes de consola y cargar a su vez cualquier otro software.

En los PCs y compatibles actuales, el proceso de carga de un sistema operativo, DOS, Windows, Linux o cualquier otro, se compone de una serie de pasos que se inician cuando se conecta o reinicia el ordenador.  El desarrollo paso a paso de esta secuencia es el siguiente:

§2  Conexión 

Cuando se da tensión a la fuente de alimentación, transcurre un cierto tiempo hasta que desaparecen los transitorios de conexión y se genera una tensión estable y adecuada para alimentar el sistema.  Una vez que la alimentación se estabiliza, se genera una señal Power Good en uno de los cables que va de la fuente de alimentación a la placa base ( H2); esta señal es recibida en el juego de chips instalado en la referida placa, y a su vez generan una señal de reinicio (reset) al procesador.

La señal reset consiste en que una patilla del procesador es puesta a masa y después de un cierto tiempo (muy corto) recobra su tensión inicial (esta patilla está conectada a una línea del BUS del PC H2).  La finalidad de este proceso es evitar que el procesador arranque prematuramente, cuando las tensiones de alimentación no son todavía correctas, lo que podría producir daños en el hardware.  Es el mismo sistema que se utiliza para un reinicio en caliente, cuando pulsa en el botón marcado "Reset" en el frontal de su PC.  Este botón pone a masa la línea del bus conectada a la patilla reset de procesador.

Nota:  Precisamente debido a este mecanismo, en algunos casos de fuentes de alimentación defectuosas, se originan súbitos e imprevistos reseteos del sistema cuando la tensión baja demasiado y luego se restablece a valores correctos.

§3  Bootstrap

El procesador arranca cuando se retira la señal de reset, pero no existe en su memoria ninguna instrucción o dato, por lo que no puede hacer absolutamente nada.  Para salvar el obstáculo, los fabricantes incluyen en la circuitería de la placa base una especie de instinto.  Podríamos establecer un símil diciendo que es análogo al que hace que las tortugas corran hacia el agua cuando salen del huevo en la playa, solo que en este caso el sistema se dirige a una dirección fija de memoria FFFF0h (F000:FFF0 en forma segmentada H5.1).  Esta dirección, situada muy cerca del final de la memoria del sistema en los primeros PCs, es el punto de inicio de la BIOS.  Se eligió esta dirección para poder variar el tamaño del programa en la ROM BIOS sin crear problemas de compatibilidad (ver nota ), puesto que existen solo 16 bytes desde este punto y el final de la memoria DOS ( H5.1) que está en la posición FFFFFh (F000:FFFFh).  En realidad este punto de inicio contiene una instrucción de salto (jump) que indica al procesador donde tiene que dirigirse para encontrar el punto donde comienza realmente el programa de carga (bootstrap) de la BIOS.

La figura 1 muestra un esquema de la distribución de memoria (la escala vertical no guarda proporción)

Nota histórica: En los primeros diseños del PC, la ROM BIOS ocupaba solo 40 KB.   En esa época, el rango de direcciones de memoria que podía manejarse era 00000-FFFFFh;  un máximo de 1.048.576 Bytes  (1 MB) [1].  Es usual suponer que este Megabyte está compuesto por 16 segmentos de 64 KB.  Sin embargo, los ingenieros de IBM estimaron que debían reservar determinadas zonas para usos específicos del Sistema, para lo que reservaron 6 segmentos, de modo que para memoria de usuario (aplicaciones) quedaron solo 10, los famosos 640 KB del DOS (en realidad 655.360 Bytes), que en la época parecían más que suficientes para los programas y el propio Sistema Operativo.  Tenga en cuenta que el IBM-PC original carecía de disco duro; un disquete de 5 1/4" de 160 KB (que podía contener un máximo de 64 ficheros!!), era opcional. 

Los 10 segmentos correspondientes a memoria de usuario se establecieron en la zona baja (los primeros 1280 Bytes estaban ya asignados a la tabla de vectores de interrupción y otros datos del sistema ( 4.3).   A continuación estaban los 6 bloques reservados; la BIOS empieza en las dirección F0000h de este espacio reservado, con lo que hasta el punto de inicio (FFFF0h) anteriormente descrito, quedaban 65.520 Bytes; espacio más que suficiente para que se alojara una BIOS de solo 40 KB, y sin peligro de que su crecimiento llegara a invadir la posición del punto de inicio.

  Inicio.


[1]  El límite superior de la memoria que podía manejarse estaba dictada por el procesador utilizado.  Los 16 bits de los registros del 8088 permitían acceder directamente a 216 == 65.536 posiciones (en el rango 0000-FFFFh), pero utilizando una técnica de direccionamiento segmentado, se podían acceder a 16 "segmentos" de 65.536 Bytes cada uno, con lo que el total de memoria disponible se alargó entre 0h y FFFFFh  (trataremos esto con más detalle en el capítulo dedicado a la RAM  H5.1).