martes, 25 de enero de 2011

Entendiendo el proceso de arranque de GNU/Linux

El proceso de arranque de GNU/Linux es el proceso de inicialización del sistema operativo. Este, en muchas maneras, es muy similar al de los sistemas BSD y otros similares a Unix, del cual se deriva.

En GNU/Linux, el proceso de arranque (booteo) es un flujo que comienza en el BIOS, sigue al cargador de arranque y luego hacia el kernel. El kernel entonces inicia el planificador (para permitir multitarea) y ejecuta el primer programa de entorno de usuario (userland) (es decir, el exterior del kernel space) llamado Init (el cual configura el entorno del usuario y permite la interacción del usuario mismo y loguearnos en el sistema, para lo cual en este punto el kernel se vuelve inactivo, a menos que sea llamado externamente.
En general lo que ocurre es lo siguiente:

  1. El BIOS realiza las tareas de inicio específicas de la plataforma física. 
  2. Una vez que el hardware es reconocido e iniciado correctamente, el BIOS carga y ejecuta el código de la partición de booteo del disco asignato para ello, el cual contiene la primera fase de un boot loader. La fase 1 carga la fase 2 (la mayor parte del código del boot loader). Algunos cargadores utilizan una fase intermediaria (conocida como fase 1.5) para lograrlo, esto desde que los discos modernos de gran tamaño no pueden ser leídos completamente sin más código. 
  3. El boot loader a menudo presenta al usuario un menú con las posibles opciones de booteo. Entonces éste carga el sistema operativo, el cual se descomprime en memoria, y configura las funciones del sistema como la paginación de memoria y hardware esencial, todo esto antes de llamar la función start_kernel()
  4. Entonces es cuando start_kernel() realiza la mayor parte de la configuración del sistema operativo  (interrupciones, el resto de la administración de memoria, inicialización de dispositivos, controladores, etc.) antes de intercambiar separadamente, el idle process y el planificador, y el Init process (el cual es ejecutado en user space). 
  5. El planificador toma el control efectivo de la administración, mientras el kernel se va a "dormir" (idle). 
  6. El proceso Init ejecuta los scripts necesarios para configurar todos los servicios que no son propios del sistema operativo y las demás estructuras a fin de permitir la creación del entorno de usuario, y finalmente presenta el usuario (o los usuarios) con su login screen. 

Durante el apagado (shutdown) Init es llamdo para cerrar todas las funciones del user space de manera controlada, de nuevo dirigido con scripts, seguidamente el Init termina el Kernel ejecuta su propio apagado (shutdown).


Más recusos:


Artículos relacionados



Widget by Hoctro | Jack Book

0 comments:

Publicar un comentario en la entrada