¿Qué cosas suceden realmente cuando se inicia una computadora?

Buena pregunta … Vamos a discutir.

Lo primero que debe hacer una computadora cuando está encendida es iniciar un programa especial llamado sistema operativo .

El trabajo del sistema operativo es ayudar a otros programas de computadora a trabajar manejando los detalles desordenados de controlar el hardware de la computadora.

El proceso de abrir el sistema operativo se llama arranque (originalmente esto era bootstrappi).

Su computadora sabe cómo arrancar porque las instrucciones para arrancar están integradas en uno de sus chips, el chip BIOS (o sistema básico de entrada / salida).

El chip BIOS le dice que busque en un lugar fijo, generalmente en el disco duro con el número más bajo (el disco de arranque ) para un programa especial llamado cargador de arranque (en Linux el cargador de arranque se llama Grub o LILO). El cargador de arranque se extrae en la memoria y se inicia. El trabajo del gestor de arranque es iniciar el sistema operativo real.

Loader hace esto buscando un kernel , cargándolo en la memoria e iniciándolo. Si usa Linux y ve “LILO” en la pantalla seguido de un montón de puntos, está cargando el núcleo.

Una vez que se inicia el kernel, tiene que mirar alrededor, encontrar el resto del hardware y prepararse para ejecutar programas. Lo hace al tocar no en ubicaciones de memoria ordinarias, sino más bien en puertos de E / S , direcciones de bus especiales que probablemente tengan tarjetas de controlador de dispositivo escuchándoles los comandos. El núcleo no toca al azar; tiene una gran cantidad de conocimiento incorporado sobre qué es probable que encuentre dónde y cómo responderán los controladores si están presentes. Este proceso se llama autoprobing .

Es posible que no pueda ver nada de esto. Cuando los sistemas Unix usaban consolas de texto, veías que los mensajes de arranque se desplazaban en tu pantalla cuando se iniciaba el sistema. Hoy en día, Unixes a menudo oculta los mensajes de arranque detrás de una pantalla de presentación gráfica. Puede verlos cambiando a una vista de consola de texto con la combinación de teclas Ctrl-Shift-F1. Si esto funciona, debería poder volver a la pantalla gráfica de arranque con una secuencia Ctrl-Shift diferente; pruebe F7, F8 y F9.

La mayoría de los mensajes emitidos en el tiempo de arranque son el kernel que prueba automáticamente su hardware a través de los puertos de E / S, descifrando lo que tiene disponible y adaptándose a su máquina. El kernel de Linux es extremadamente bueno en esto, mejor que la mayoría de los otros Unixes y mucho mejor que DOS o Windows. De hecho, muchos veteranos de Linux piensan que la inteligencia de las sondas de tiempo de arranque de Linux (que hizo que sea relativamente fácil de instalar) fue una de las principales razones por las que salió del paquete de experimentos gratuitos de Unix para atraer a una masa crítica de usuarios.

Pero conseguir que el kernel esté completamente cargado y funcionando no es el final del proceso de arranque; es solo la primera etapa (a veces llamada nivel de ejecución 1 ). Después de esta primera etapa, el kernel pasa el control a un proceso especial llamado ‘init’ que genera varios procesos de limpieza. (Algunos Linux recientes usan un programa diferente llamado ‘upstart’ que hace cosas similares).

El primer trabajo del proceso de inicio generalmente es verificar para asegurarse de que sus discos estén bien

El siguiente paso de Init es comenzar varios demonios . Un demonio es un programa como una cola de impresión, un oyente de correo o un servidor WWW que se esconde en el fondo, esperando cosas que hacer. Estos programas especiales a menudo tienen que coordinar varias solicitudes que podrían entrar en conflicto. Son demonios porque a menudo es más fácil escribir un programa que se ejecute constantemente y conozca todas las solicitudes de lo que sería intentar asegurarse de que una bandada de copias (cada una procesando una solicitud y todas ejecutándose al mismo tiempo) no avanza el uno del otro. La colección particular de demonios que inicia su sistema puede variar, pero casi siempre incluirá una cola de impresión (un demonio gatekeeper para su impresora).

El siguiente paso es prepararse para los usuarios. Init inicia una copia de un programa llamado getty para ver su pantalla y teclado (y tal vez más copias para ver los puertos seriales de acceso telefónico). En realidad, hoy en día generalmente inicia múltiples copias de getty, por lo que tiene varias (generalmente 7 u 8) consolas virtuales, con su pantalla y teclados conectados a uno de ellos a la vez. Pero es probable que no vea ninguno de estos, porque una de sus consolas será asumida por el servidor X (sobre el cual más en un momento).

Aún no hemos terminado. El siguiente paso es iniciar varios demonios que admitan redes y otros servicios. El más importante de estos es su servidor X. X es un demonio que administra su pantalla, teclado y mouse. Su trabajo principal es producir los gráficos de píxeles de color que normalmente ve en su pantalla.

Cuando aparece el servidor X, durante la última parte del proceso de arranque de su máquina, se hace cargo efectivamente del hardware de cualquier consola virtual que antes tenía el control. Ahí es cuando verá una pantalla de inicio de sesión gráfica, producida por un programa llamado administrador de pantalla .