La serie “El computador mágico” está disponible también en forma de libro. |
Ya hemos visto a lo largo de la serie cómo funciona el hardware de un ordenador, hemos visto más o menos qué hace un sistema operativo y cómo lo hace… solo nos queda ver cómo empieza el mundo: yo le doy al botón de encendido en el ordenador y entonces ¿qué ocurre?
El problema de explicar esto es que, aunque hay cosas comunes, cada ordenador y cada sistema operativo es diferente. Así que vamos a centrarnos en los sistemas que más utilizamos en casa: los PCs con MS Windows.
Todo empieza cuando el usuario le da al botón de encendido. Todos los microchips del ordenador reciben alimentación y empiezan a funcionar. En particular, la CPU empieza con su ciclo: mira la dirección de memoria a donde apunta PC (recordad: el Program Counter) y ejecuta lo que haya ahí… así una y otra vez.
Así que, como acaba de empezar, lo que hará es ejecutar lo que haya en la posición 0×00000000. ¿Qué hay ahí? En los ejemplos que hemos visto hasta ahora lo que había ahí era nuestro programa, pero claro, ahora queremos algo más versátil, un PC de escritorio normal y corriente, así que no podemos esperar que ahí esté precisamente el programa que quiere ejecutar el usuario.
Lo que hay ahí es la BIOS.
BIOS significa Basic Input-Output System (sistema de entrada-salida básico)[1] y lo que es es un programa, proporcionado por el fabricante del ordenador, que tiene lo básico para arrancar. Y está en esa posición 0×00000000 porque el fabricante la ha puesto ahí adrede.
Esa BIOS, nada más arrancar, configura el puntero de la pila (para poder manejar interrupciones y subrutinas a partir de ahora) y empieza a ejecutar su programa:
- Configura el vector de interrupciones para atender ella todas las interrupciones
- Hace un análisis básico del hardware que tiene el ordenador: comprueba cuánta memoria tiene, qué discos, qué tarjeta gráfica…
- Arranca el cargador de arranque (veremos esto luego)
¿No os parece que hace muchas cosas que hace el sistema operativo? Bueno, no del todo. De todo lo que hacía el sistema operativo, la BIOS prácticamente solamente sabe hacer la gestión de los dispositivos, y además solo de un conjunto muy limitado de ellos: teclado y pantalla básica; a veces también ratón o tarjeta de red.[2]
El caso es que la BIOS ya se está ejecutando y tratará de “arrancar” de un dispositivo. Esto se puede configurar, pero lo normal es que acabe arrancando de un disco duro. Así que lo que hace es irse al primer sector del disco duro seleccionado, leer todo lo que hay ahí y ponerlo en memoria. Eso es lo que se llama el “sector de arranque” del disco.
¿Y qué es lo que hay en ese sector de arranque? Pues lo que el usuario haya puesto ahí, claro… pero lo normal es que ahí haya un cargador de arranque (en inglés, bootloader).
¿Qué es el bootloader? El bootloader es otro programa, proporcionado por el fabricante del sistema operativo, que sabe cómo arrancar dicho sistema operativo. Bootloaders habituales en el mundillo Linux son LILO o GRUB; en el mundillo Microsoft probablemente ni siquiera seas consciente de que existe este cargador, porque no lo ves, pero también existe.
Así que de una forma u otra, el bootloader ha arrancado al sistema operativo (en nuestro ejemplo, alguna de las versiones de MS Windows). El sistema operativo, cuando arranca, configura su propio vector de interrupciones (eliminando la configuración que había puesto ahí la BIOS), detecta y configura todos los dispositivos que tiene, inicializa los módulos de gestión de procesos, de memoria y el sistema de ficheros y finalmente crea unos cuantos procesos: el gestor de impresiones, el de logon, el de red, el indexador… en fin, muchos procesos. Fíjate en que todos estos procesos son importantísimos, porque sin ellos el sistema operativo queda cojo, pero desde el punto de vista del módulo de gestión de procesos son un proceso más, no son diferentes de los procesos que ejecutará el usuario más adelante.
Uno de esos procesos será el encargado del logon del usuario, que típicamente le pedirá al usuario un nombre y una contraseña a través del teclado. El usuario mete su nombre y su contraseña y el sistema lanza otro montón de procesos… pero ahora esos procesos pertenecen al usuario. Entre ellos, ejecutará algún tipo de intérprete de comandos. Antiguamente, el intérprete de comandos era una línea de comandos, textual, en la que el usuario iba poniendo órdenes con el teclado; ahora lo normal es que esos comandos se den de forma gráfica, señalando con el cursor del ratón a un icono y haciéndole doble click, o algo similar.
El caso es que el usuario hace doble click en el icono del Buscaminas y el sistema operativo arranca el Buscaminas.
¿Y qué significa eso de arrancar el Buscaminas? En un capítulo muy muy lejano dijimos que no te preocuparas de cómo llegaban a la memoria los programas, que lo explicaríamos más adelante… bueno, pues el momento ha llegado… y estoy seguro de que eras capaz de deducirlo tú solo. Atento, porque esto no es solo la forma en que se carga el Buscaminas, sino cualquier otro programa, incluidos los que hemos visto que se lanzan durante el arranque del sistema operativo.
En realidad es muy sencillo: cuando se quiere cargar un programa, el módulo de gestión de procesos crea un proceso. Luego se lee el contenido del fichero ejecutable del disco (utilizando los servicios del módulo de sistema de ficheros, que a su vez utilizará los del sistema de gestión de dispositivos) y lo escribe en memoria principal (utilizando los servicios del módulo de gestión de memoria). Finalmente, se configura el contador de programa del proceso para que apunte al área de memoria recién escrita… et voilà! La próxima vez que le toque el turno a este proceso, ejecutará las instrucciones que había en el fichero ejecutable.[3]
Y ya está: ya puedes jugar al Buscaminas hasta que te canses; en ese momento decidirás cerrar el programa (seguramente haciendo click en la “x” de la parte superior derecha de la ventana), y en ese momento el programa informa al sistema de que debe finalizar. El sistema operativo, en concreto su gestor de procesos, elimina entonces la entrada que hacía referencia al programa de la lista de procesos, y el programa desaparece… hasta que vuelvas a hacer doble click en su icono, cuando todo vuelve a comenzar.
En el próximo (y último capítulo) veremos un resumen y daremos referencias para quien quiera profundizar.
- Aunque “sistema” es masculino, y por lo tanto también debería serlo BIOS, todo el mundo dice “la BIOS”, en femenino… no sé por qué. [↩]
- No obstante, sí es verdad que las BIOS modernas empiezan a ser cada vez más sofisticadas, incluso con navegadores web y sistema de ficheros. [↩]
- En realidad nos hemos saltado un paso intermedio, en el que el proceso creado es una copia del que lo creó, pero para el nivel de este artículo eso no es necesario. [↩]
The Computador mágico XXXI – Arranque hasta el buscaminas by , unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 2.5 Spain License.
{ 2 } Comentarios
¡Qué pena que se esté acabando!
Ésta es quizá la mejor serie posible para explicar las tripas de nuestros omnipresentes ordenadores que todos somos capaces de comprender.
Hala, a jugar la buscaminas…
Muy interesante, gracias por el esfuerzo. Aunque llego cuando ya está acabando
Escribe un comentario