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.3  Inicialización y Carga del Sistema Operativo

§1  Inicialización

Parte de la tarea del POST ( 4.2) se refiere a la preparación del hardware disponible (periféricos).  Muchos de estos elementos precisan de la inicialización de registros, carga de parámetros y determinadas señales para ponerlos en orden de funcionamiento.  No olvidar que algunos de ellos, son controladores programables, y parte del trabajo de la BIOS consiste precisamente en esta programación.

§2  Tabla de vectores de interrupción

Entre otras funciones, la inicialización incluye cargar en la memoria RAM ciertas tablas y programas muy básicos, imprescindibles para el manejo de muy bajo nivel del hardware.  Por ejemplo, la carga en memoria baja de los vectores de interrupción, de forma que cuando ocurra una interrupción se sepa donde encontrar la rutina adecuada.

Nota:  En los PCs estándar se pueden manejar un total de 256 interrupciones distintas, y cada una requiere un programa de control especial.  Este programa se sitúa en memoria RAM o en la ROM-BIOS, pero en cualquier caso, en los primeros 1024 octetos (1 KB) de la memoria RAM (direcciones 000-400h) se carga una tabla de 256 punteros de 4 bytes, denominada de vectores de interrupción.  Cada puntero de la tabla señala la dirección de memoria donde comienza el programa de control correspondiente a la interrupción de igual número ( H2.4).

§3  Memoria de la BIOS

Puesto que los programas contenidos en la BIOS requieren cierta área de trabajo donde almacenar variables y datos, se asignaron para este propósito 256 Bytes en la zona de memoria situada inmediatamente por encima de la tabla de vectores de interrupción;  en las direcciones 400-4FFh (estas direcciones son frecuentemente señaladas como 0040:0000 - 0040:00FF).

Esta área de memoria es conocida como memoria de datos de la ROM-BIOS, y en ella se maneja información muy diversa.  Por ejemplo, las últimas pulsaciones de teclas; capacidad de memoria encontrada; los ciclos de reloj pasados desde media noche (hora del sistema); el número de líneas y columnas que caben en la pantalla, o la lista de los dispositivos que han sido detectados en el sistema durante la fase de inventario del hardware ( 4.2).  Entre las funciones de inicialización encomendadas a la secuencia POST se encuentra la inicialización de los datos en este área.

§4  Carga del Sistema

Una vez terminadas las verificaciones previas, la BIOS inicia un recorrido en busca un dispositivo donde encontrar un programa que pueda continuar el proceso con la carga del Sistema Operativo.  Este recorrido se denomina secuencia de carga ("Boot sequence") y su orden puede ser establecido mediante un programa auxiliar ( set-up de la BIOS) que es accesible mediante la pulsación de ciertas teclas durante los instantes iniciales de carga.  Una vez fijada, la secuencia de carga es almacenada en la memoria de datos de la BIOS , de forma que puede ser recordada y utilizada la próxima vez que se reinicia el sistema.

En los sistemas primitivos, la secuencia de carga era fija,  empezando en el disquete (A:) y siguiendo en la primera unidad de disco (C:).  Esta sigue siendo aún la secuencia normal, pero las BIOS actuales pueden alterar este orden e incluso dispositivos alternativos como CD-ROM o LAN, como puntos de inicio para la carga del Sistema.  En estos apuntes denominamos unidad o disco maestro a aquel que puede ser accedido por la BIOS durante su secuencia de carga.  El set-up de la BIOS establece el orden en que serán consultados los dispositivos disponibles.

Nota:  El hecho de que una unidad pueda ser maestra depende exclusivamente de la BIOS.  Por ejemplo, supongamos un portátil en el que instalamos sendas unidades de disco exteriores; la primera mediante conexión USB y la segunda mediante una tarjeta PC-CARD que incluye un controlador SATA.

Por lo general, en el estado actual de la técnica (2005), las BIOSes solo están preparadas para arrancar desde unidades internas, que pueden ser disco, disquete, CD/DVD o mediante LAN (tarjeta de red).  En tal caso, aunque la unidad USB o la SATA tuviesen una partición primaria activa, no podrían ser utilizadas para la carga inicial del sistema, ya que la BIOS no puede "verlas".  Sin embargo, una vez cargado el SO y los controladores pertinentes, ambas unidades podrían ser utilizadas sin problema.

La descripción detallada del proceso de carga del Sistema requiere conocer la estructura lógica de las unidades de disco y disquete, para lo que remitimos al lector al capítulo correspondientes ( 8.1.2).  Aquí supondremos que el lector está familiarizado con la terminología introducida en dichos epígrafes y su significado.

Empezando por el final, en realidad, lo que se necesita para cargar el Sistema Operativo es un ejecutable como WININIT.EXE (Windows);  NTLDR.EXE (Windows NT/2000); /boot/vmlinuz (Linux) etc.  Tales ficheros solo pueden estar en un volumen o partición lógica, y la información básica sobre los mismos está contenida en su primer sector, conocido como VBS ("Volume boot sector" 8.1.2c2).  Una vez localizado y cargado, se tiene conocimiento de su estructura y es fácil localizar el fichero adecuado.  Pero antes hay que averiguar cómo está organizada la unidad para saber cuantos son los volúmenes y por cual empezar.  Como se ha visto en el capítulo correspondiente, la estructura lógica de las unidades está organizada de forma que el principio del ovillo se encuentra en el primer sector de la unidad.  En consecuencia, la BIOS recorre los dispositivos definidos en la secuencia de carga mirando el primer sector.  En caso que no apareciera un sector adecuado en ninguna de las unidades [2], aparece un mensaje:  No boot device available, o  NO ROM BASIC - System Halted

Nota:  En el proceso que sigue suponemos que la carga se realiza desde el disco duro (lo más frecuente).  La carga desde el disquete es análoga aunque más simple.  Dado que los disquetes no pueden tener particiones, no tienen un MBR ("Master Boot Record").  Esto significa que no son necesarios los pasos previos en busca de un posible VBS.  Así que de existir alguno, es precisamente el primer sector del disquete.

En el caso de los discos duros, el primer sector se denomina  sector de arranque o registro maestro de carga MBR ("Master boot record" 8.1.2c).  Que además de un trozo de código MBC ("Master Boot Code"), contiene una tabla MPT ("Master Partition Table") que describe las particiones definidas en la unidad.  En caso de que alguna unidad de la secuencia de carga contenga un MBR, se carga en memoria y se trasmite el control a su MBC.

El MBC examina la Master Partition table buscando dos cosas:  En primer lugar determinar si existe una partición DOS extendida xDp ( 8.1.2c1) que pueda contener volúmenes lógicos en su interior, ya que la totalidad de la estructura a manejar debe ser inventariada y reconocida [1].  En segundo lugar, determinar si existe una partición cargable (activa).

Si el MBC encuentra una partición extendida, carga su primer sector EBR ("Extended Boot Record"), que describe el primer volumen lógico de la partición y lo examina para ver si enlaza con algún otro; en este último caso, el nuevo EBR contiene información sobre el segundo volumen lógico, de forma que también es cargado y examinado.  El proceso continúa hasta que todos los volúmenes lógicos de la partición han sido reconocidos por el sistema.

Después de reconocida la partición extendida (en su caso), el MBC intenta cargar la partición primaria señalada como activa. En caso de no haber ninguna, el proceso termina con un error; el mensaje suele ser el mismo que cuando la BIOS no encuentra un dispositivo cargable:  No boot device available , o el conocido  NO ROM BASIC - System Halted .  Si por el contrario existe una partición activa, el MBC se dirige a su primer sector lógico VBS ("Volume Boot Sector") y lo carga. En lo que sigue suponemos que se trata de una partición primaria DOS, que es el caso más frecuente [3].

Nota:  Es significativo que, en las máquinas ix86, el proceso seguido hasta este punto es conducido por código de 16 bits sin soporte de ningún Sistema Operativo.  El código del VBS es precisamente el primer código dependiente que aparece.  Depende del SO utilizado en el formateo de alto nivel del volumen.  En cambio el código y estructura del MBR (instalado por fdisk 8.1.2c3), es estándar y universal.

El VBS es cargado en memoria y verificado.  Pasándose entonces el control de la ejecución a un trozo de código VBC ("Volume Boot Code") contenido en él.  El VBC examina la estructura del volumen que se está cargando para asegurar que todo está correcto, en caso contrario el proceso se detiene en este punto con un error.  Si todo está bien, el VBC busca en el directorio raíz del volumen en busca de los ficheros del sistema operativo, que en el caso del MS-DOS son IO.SYS,MSDOS.SYS y COMMAND.COM.

Si no se encuentran dichos ficheros, el programa mostrará un mensaje; generalmente el consabido:  Non-system disk or disk error - Replace and press any key when ready .   Alguna gente cree que este mensaje significa que el sistema no ha sido cargado; que la BIOS examina el disquete y que lo rehúsa porque no puede cargarlo, cuando en realidad como se ha visto, el VBC ha sido efectivamente cargado y ejecutado, siendo él realmente el que ha generado el mensaje cuando no ha podido encontrar los ficheros del sistema operativo.

Si los ficheros del SO son correctos, el programa de carga los trae a memoria y les transfiere el control; estos ficheros contienen a su vez programas que se encargan de cargar e iniciar el resto del SO. En el caso del MS-DOS esto significa cargar el intérprete de comandos COMMAND.COM y a continuación leer e interpretar el contenido de los ficheros CONFIG.SYS y AUTOEXEC.BAT.  En este momento es el propio SO el que controla el sistema; si se trata de Windows el proceso de carga inicia muchas más rutinas.

En realidad, los detalles de la carga del sistema requerirían todo un libro.  Pero podemos resumir que una vez encontrado el cargador del Sistema Operativo, este toma el control del proceso que había sido iniciado por la BIOS y continuado por los "bootstrap".  Generalmente el Sistema realiza un nuevo inventario de memoria y de los dispositivos disponibles, y procede a cargar los controladores de dispositivos adecuados para su manejo.  Por ejemplo, impresoras, ratón y teclado.  En los sistemas personales, la última operación consiste en invocar la shell (generalmente una interfaz gráfica) que permite al usuario controlar el Sistema y de los programas de aplicación.  En otros casos. Por ejemplo, servidores Web, de Ficheros, de Correo, etc, es posible que la consola, ratón y teclado no estén conectados inicialmente.  En su lugar se inician una serie de procesos (demonios) que proporcionan determinados servicios de forma automatizada y sin intervención de ningún operador.

  Inicio.


[1]  Nos referimos a la estructura lógica (interna) de las unidades físicas (discos).  El recuento de estos últimos fue realizado previamente por la BIOS durante el inventario de recursos ( 4.2).

[2]  La identificación del MBR y del VBS se realiza buscando dos caracteres específicos 55h AAh ("Boot record signature") en los 2 últimos bytes del sector.

[3]  Casi todos los SOs dependen de la existencia de una partición activa para su carga:

  • DOS, Windows 3.x, y Windows 95/98 solo pueden cargar desde una partición primaria activa del primer disco.

  • Windows NT; Windows 2000 y Linux pueden cargar desde un volumen lógico, pero el programa de carga debe estar en una partición primaria activa.

  • OS/2 puede ser cargado desde un volumen lógico, pero la partición extendida que lo contiene debe estar situada en los primeros 2 GB de la unidad.