viernes, 5 de abril de 2019

Breve Resumen del Proceso de Inicio de una PC


§1  Bootstrap
La alimentación de la fuente llega a la placa madre y con ella al sistema completo, pero demora un tiempo en generar voltajes estables y dentro de los parámetros de operación permisibles, por lo que el chipset generará una señal de reset al procesador para evitar que reciba tensiones eléctricas hasta tanto estas no se encuentren totalmente estabilizadas. Una vez que la fuente de alimentación ha estabilizado sus voltajes de salida, enviará una señal llamada Power Good que le indicará a los circuitos lógicos asociados al procesador que le den un reset al mismo para iniciar su operación.
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. Esta dirección apunta al comienzo del programa de carga (bootstrap) de la BIOS.

Una vez iniciado el programa contenido en la BIOS, su primera tarea consiste en un proceso de comprobación del hardware, denominado POST (Power-On Self Test).
En caso de existir errores graves, la secuencia se detiene emitiendo una serie de pitidos (eventualmente algún mensaje en pantalla) que codifican el tipo de error encontrado.  Se adoptó el sistema de aviso mediante pitidos ("Beeps") cortos y largos, porque en estos tempranos momentos del inicio del sistema, no existe ningún dispositivo de salida utilizable.  Por ejemplo, pantalla.  La cantidad y calidad de los test de diagnóstico varía según el fabricante y versión del BIOS, sin que exista un estándar claro al respecto.


§2  Carga del Sistema

Una vez terminadas las verificaciones previas, la BIOS inicia un recorrido en busca de un dispositivo donde encontrar un programa que pueda continuar con el proceso de carga del Sistema Operativo.  Este recorrido se denomina secuencia de carga o secuencia de booteo ("Boot sequence") y su orden puede ser establecido mediante un programa auxiliar (setup de la BIOS).  Una vez fijada, la secuencia de carga es almacenada en la memoria de datos de la BIOS (RAM de la ROM), de forma que puede ser recordada y utilizada la próxima vez que se reinicia el sistema.

Empezando por el final, en realidad, lo que se necesita para cargar el Sistema Operativo es el archivo de inicio, que es un ejecutable como WININIT.EXE (Windows Vista); NTLDR.EXE (Windows NT/2000/XP/SEVEN); /boot/vmlinuz (Linux) etc. Tales archivos solo pueden estar en un volumen o partición lógica, y la información básica sobre los mismos está contenida en el primer sector de cada partición, conocido como PBR (Registro de Arranque de la Partición). Una vez localizado y cargado, se tiene conocimiento de su estructura y es fácil localizar el archivo adecuado. Pero antes hay que averiguar cómo está organizada la unidad (el disco) para saber cuántas son las particiones y por cual empezar. La estructura lógica de las unidades está organizada de forma que el principio del ovillo se encuentra en el primer sector físico 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, aparece un mensaje: No boot device available (no existe un dispositivo arrancable), o NO ROM BASIC - System Halted (sistema parado).
En los discos duros, el primer sector físico se denomina sector de arranque o registro maestro de carga MBR ("Master boot record"). Que además de un trozo de código MBC ("Master Boot Code – Código de arranque maestro"), contiene una tabla MPT ("Master Partition Table – Tabla de particiones maestra") 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 Tabla de Particiones buscando determinar si existe una partición cargable (activa). 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 PBR (Registro de Arranque de la Partición) y lo carga. En lo que sigue suponemos que se trata de una partición primaria DOS, que es el caso más frecuente.
Nota: 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 PBR es precisamente el primer código dependiente que aparece. Depende del SO utilizado en el formateo de alto nivel de la partición. En cambio el código y estructura del MBR (instalado por fdisk), es estándar y universal.
El PBR es cargado en memoria y verificado. Pasándose entonces el control de la ejecución a un trozo de código PBC ("Partition Boot Code") contenido en él. El PBC 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 PBC busca en el directorio raíz del volumen en busca de los archivos del sistema operativo, que en el caso del MS-DOS son IO.SYS, MSDOS.SYS y COMMAND.COM.
Si no se encuentran dichos archivos, 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; cuando en realidad como se ha visto, el PBC ha sido efectivamente cargado y ejecutado, siendo él realmente el que ha generado el mensaje cuando no ha podido encontrar los archivos del sistema operativo.
Si los archivos del S.O. son correctos, el programa de carga los trae a memoria y les transfiere el control; estos archivos contienen a su vez programas que se encargan de cargar e iniciar el resto del S.O. 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 S.O. 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 los programas de aplicación.

No hay comentarios:

Publicar un comentario