¿Qué pasos ocurren desde el momento en que presiono el botón de encendido hasta que aparece la ventana de bienvenida del sistema operativo?

ADVERTENCIA: ESTA RESPUESTA ES DE BAJO NIVEL Y PUEDE SER MUY LARGA

Cuando presiona el botón de encendido, se crea un corto y se envía un pulso a la fuente de alimentación del sistema para ordenarle que alimente todos los dispositivos y envíe señales de reinicio al menos a la CPU.

La CPU recibe la señal de reinicio de la PSU. Esto hace que sus registros internos se establezcan en ciertos valores predeterminados. Cuando se realiza la señal de reinicio, hay un estado conocido en la CPU (aunque no mucho).

El sistema se encuentra en un estado conocido bastante limitado, a saber, la CPU [subproceso principal] tiene el puntero de instrucción que apunta al Vector de reinicio dentro de la ROM del sistema (y la ROM del sistema tiene esas direcciones asignadas correctamente). Entonces, la CPU comienza a ejecutar instrucciones. Cómo funciona (ALU, registros, reloj) con más detalle estaría sujeto a otra respuesta (¿o una adición a esta, quizás?). No profundicemos tanto por ahora. Sigamos con “La CPU está ejecutando instrucciones” y terminemos con eso.

Ahora el código del firmware del sistema se hace cargo. Y encuentra caos: la RAM no está realmente asignada en este momento. Entonces, lo primero que hace el firmware del sistema es configurar las memorias caché de la CPU para que sean reescritas y tener cuidado de nunca hacer que se derrame (es decir, limitarse a una porción muy limitada de memoria, aunque dado que el típico L2 o L3 caché es de al menos 256 KB hoy en día, no es realmente un gran problema). Quiero decir, ¿alguna vez has visto algún código no trivial que funcione estrictamente en los registros? No he …

Con esa configuración, tiene que buscar los módulos RAM y configurarlos, para asignarlos al espacio de direcciones físicas. Posiblemente hará una prueba de memoria rápida (los firmwares antiguos realmente hicieron eso, los nuevos no estoy 100% seguro, aunque pueden hacerlo incluso antes de encender la pantalla). Claro, ahora, una vez que la RAM está configurada correctamente, las limitaciones de trabajar solo con el caché desaparecen. El firmware debe asegurarse de que los datos en la memoria caché con la que ha trabajado se invaliden (datos sin importancia) o se muevan a la RAM adecuada (tenga en cuenta que todavía vive en una memoria caché, pero la memoria caché se vuelve transparente en este punto, por lo que podemos decirlo). va a la RAM directamente)

A partir de este momento, las cachés son transparentes siempre que no desee reducir el rendimiento. Sin embargo, nada visible realmente ha sucedido todavía

Cualquier configuración de CPU especializada (como overclocks o bloqueo de la virtualización de Intel) ocurre en este punto o antes; ¿Puede alguien ayudarme con esto?

Ahora el firmware del sistema puede seguir adelante e inicializar otros dispositivos. Probablemente, uno de los primeros dispositivos que se inicializará es la GPU primaria (gráficos, pantalla). Ejecutaría el código de BIOS de video (que supuestamente vive dentro de la memoria de la GPU), y eso hará dos cosas: mostrar el logotipo y establecer ganchos que permitan usar el modo de texto de la pantalla.

La pantalla ahora está encendida

Otros dispositivos secundarios, como todas las unidades de disco, dispositivos PCI (PCI-Express se ha inicializado en la búsqueda de GPU en el párrafo anterior, ya que ciertas GPU adicionales se conectan en este). Prácticamente, todos los dispositivos internos se llevan a un estado conocido, listos para la “acción”.

El firmware puede ejecutar opcionalmente un código más especializado, que depende de la plataforma de hardware. Supongamos que tiene BIOS heredado (una suposición válida si su computadora es anterior a 2012). Esta suposición en realidad simplifica el proceso de arranque. Oficialmente lo estamos comenzando ahora.

Proceso de arranque: la búsqueda

Hay un orden configurable, que es visible en el NVram (una parte del espacio de direcciones que está cerca de la ROM y es grabable; almacena la llamada configuración del BIOS). Verificará ciertos dispositivos según este orden. Asumiré un orden razonable, a saber, disquete, seguido de CD, seguido de HDD. También supondré que los dos primeros dispositivos no son de arranque.

Por lo tanto, inspecciona la unidad de disquete. Dice que está vacío. ¡Próximo en la fila!

Comprueba la unidad de CD. Tiene un CD que olvidó poner. Verificará un sector particular (2048 bytes) que debe contener el código de arranque. Lee ese sector, lo comprueba, pero descubre que no tiene la firma de arranque adecuada. Por lo tanto, supone que no es de arranque y también se salta.

Ahora comprueba el disco duro. Lee el primer sector (en el 99% de los casos, si no más, el sector es de 512 bytes). Se ve que termina con dos bytes 0x55 0xAA , que se reconoce como la firma de arranque. Ahora intenta arrancar el HDD.

Proceso de arranque: MBR y PBR

El primer sector (llamado MBR, Master Boot Record) del disco duro se carga en una dirección particular. El firmware del sistema garantiza que los registros de la CPU contengan algunos datos conocidos (números de dispositivo, ganchos de llamada del sistema, etc.) No conozco todos los detalles sobre lo que hay aquí, pero no me tomaría mucho tiempo descubrir si realmente quisiera para buscarlo), luego pasa el control a este código.

Este código tiene 446 bytes, porque otros 64 bytes están reservados para la tabla de particiones (16 bytes por partición; almacena el primer sector, el tamaño en sectores y cierta información de tipo sobre cada partición. Asumiré LBA, porque CHS vs LBA es otro factor de complicación. ) Sin embargo, este código no hace mucho; solo determina cuál de las particiones tiene establecido el indicador de arranque (si es múltiple, probablemente tomaría la primera pero eso es lo que los programadores de C llamamos comportamiento indefinido , es decir, cosas que no deberían suceder) y carga el primer sector de ese. Ese primer sector de la partición se llama intuitivamente Registro de arranque de partición (PBR) y es específico del sistema de archivos. Asumiré NTFS, con un bootmgr PBR.

Este PBR realmente decodificará el sistema de archivos en la partición y localizará dónde está un archivo llamado bootmgr , luego lo cargará en la memoria de alguna manera particular (nunca he aprendido los detalles de esta carga). Es posible que ciertos piratas informáticos accedan a una memoria superior (por encima del límite de 1 MB del modo de procesamiento de 16 bits de Intel) también se aplican en este punto. Después de cargar este archivo, le pasará el control.

Administrador de arranque: bootmgr (u otro?)

La respuesta de Paul Olaru a ¿Qué hace ‘init’ después del proceso de arranque cuando se carga el núcleo? explica un poco de lo que sucede en Linux. Es posible que desee comprobarlo también.

El gestor de arranque es la primera vez que carga realmente más de una cantidad limitada de código (bootmgr es de varios cientos de kB). Ahora el código ya no necesita ser compacto y puede hacer formas bastante complicadas.

Bootmgr lee los datos de configuración de arranque (BCD, una base de datos en el mismo formato que las colmenas del registro de Windows, que contiene datos especializados relacionados con el arranque del sistema). Determina que solo hay una entrada de arranque importante y comienza a interpretarla. Es (obviamente) una entrada de arranque de Windows. Asumiré Windows 7 (todas las versiones desde Vista son en su mayoría iguales, con diferencias bastante menores; el arranque híbrido de Windows 8 merece una conversación por separado).

Carga del kernel de Windows (variante 1)

El administrador de arranque localiza el archivo ntoskrnl.exe, que contiene el código del núcleo del núcleo de Windows. Este archivo también tiene alrededor de 1 MB, porque la mayor parte del código que se ejecuta en modo kernel se almacena en controladores separados.

Ahora que el núcleo en sí está cargado, gana el control. Inicializa la CPU en modo protegido y pasa a 32 bits, luego posiblemente establece más estructuras (como paginación) y pasa a modo largo (64 bits). Existe una prueba de concepto que muestra que uno podría saltar del modo real de 16 bits (en el que nos deja BIOS) directamente al modo largo de 64 bits, pero no creo que Windows realmente haga esto (no estoy seguro incluso es confiable hacerlo, aunque el firmware UEFI puede hacerlo muy temprano, posiblemente justo después de la carga de VBIOS).

El kernel comienza a cargar los controladores del dispositivo (y también muestra el logotipo de arranque animado, con los puntos rotativos en Windows 8 y posteriores). Hay bastantes (el modo seguro en ciertas versiones de Windows en realidad enumera los controladores a medida que se cargan). No profundizaré en los detalles de lo que hacen los controladores (realmente interactúan con el hardware en sí).

El comienzo del espacio de usuario; T-4s

Los conductores han terminado de cargar. La animación de arranque se detiene (incluso en Windows 10, aunque en realidad no parece). Los archivos que se supone que deben eliminarse o moverse al reiniciar se hacen ahora. El espacio de usuario se carga, se inicia con el proceso smss.exe (un proceso nativo, que se inicia directamente desde el núcleo). Este proceso nativo de NT establece más cosas y administra las sesiones de Windows NT en modo de usuario. Inicia la Sesión 0, con el csrss.exe (un puente entre el núcleo y el usuario, para las operaciones más avanzadas; y también un administrador de la sesión en sí) y los procesos wininit.exe. wininit.exe ya es un proceso Win32, lo que significa que se ejecuta en un contexto normal y completo. Inicia el proceso services.exe (jefe y administrador de todos los servicios de Windows en modo de usuario; inicia todos los procesos svchost.exe y otros, dependiendo de cómo estén registrados en la tabla de servicios). Creo que este tipo también lanza lsass.exe (LSA Shell, proceso relacionado con la seguridad que maneja el inicio de sesión del usuario, archivos cifrados y más cosas relacionadas).

De hecho, los servicios pueden lanzar bastantes cosas.

Este lanzamiento de servicios en realidad ocurre en paralelo, y muchos servicios pueden estar inicializándose simultáneamente. El propio Windows (especialmente Windows 10) tiene bastantes cosas aquí que están trabajando para aprovechar al máximo su experiencia de Windows.

Tenga en cuenta que en esta etapa se ejecutan las actualizaciones de Windows pendientes.

Aparece la pantalla de inicio de sesión

La sesión 1 de Windows NT es creada por SMSS; dentro de este se están ejecutando algunos procesos. dwm.exe (composición de gráficos, que es obligatoria en Windows 8 y versiones posteriores), así como winlogon.exe (administrador de la sesión), csrss.exe (bridge to kernel) y logonui.exe (la interfaz gráfica de la pantalla de inicio de sesión ) Tenga en cuenta que el orden aquí no es cronológico (dwm es lanzado por winlogon). Aparece la interfaz de inicio de sesión y puede iniciar sesión ahora.


Carga del kernel de Windows (variante 2), reanudación de hibernación (y arranque híbrido)

El administrador de arranque detecta que el sistema está en hibernación y no carga el núcleo en sí, sino el pseudo-núcleo winload.exe, que lee la imagen de hibernación y la lleva a la RAM. Es muy posible que este tipo muestre la misma animación de carga que la imagen principal del núcleo. Una vez que ha cargado la imagen del sistema, le pasará el control de manera tal que sea esencialmente la misma que antes de que se hibernara inicialmente. En realidad, esto no está muy distante de cómo funciona el cambio de contexto en sí, pero eso nuevamente es un tema para otro día.

En el caso de Fast Start (también conocido como Hybrid Boot; una característica de Windows 8 y más reciente), la imagen de hibernación está en el estado marcado arriba como ” Aparece la pantalla de inicio de sesión” , aunque probablemente el Windows NT creado en este punto ya no tiene el número 1, pero algo más alto (he visto la sesión 11). Esto se debe a que Windows no reemplaza el número de sesiones terminadas (por lo tanto, si cierra la sesión y vuelve a iniciarla [no bloquea la pantalla, pero cierra la sesión real], obtendrá una nueva sesión con una ID diferente)


TL; DR: Están pasando muchas cosas debajo del capó. Y ni siquiera he hablado de lo que sucede una vez que realmente inicias sesión. No es mucho más, pero esta respuesta ya es demasiado larga.

Estaré encantado de responder a más preguntas si las va a hacer en la sección de comentarios.

Cuando presiona el botón de encendido de su computadora portátil, entonces: –

– La CPU se inicializa

– La CPU se activa por una serie de tics de reloj generados por el reloj del sistema

– Parte de la inicialización de la CPU es buscar en la ROM BIOS del sistema su primera instrucción en el programa de inicio

– El BIOS ROM almacena la primera instrucción, que es la instrucción para ejecutar la autocomprobación de encendido (POST)

– POST comienza comprobando el chip BIOS y luego prueba la RAM CMOS

– Si el POST no detecta una falla en la batería, continúa inicializando la CPU, verificando los dispositivos de hardware inventariados (como la tarjeta de video)

– Una vez que la POST ha determinado que todos los componentes funcionan correctamente y la CPU se ha inicializado correctamente, el BIOS busca un sistema operativo para cargar

– El BIOS generalmente busca el chip CMOS para decirle dónde encontrar el sistema operativo

– El BIOS tiene la capacidad de cargar el sistema operativo desde las unidades Pen y otras unidades también

– Después de verificar la secuencia de carga del sistema operativo, carga el sistema operativo en la memoria

Consulte estos términos para comprender el proceso de arranque:

– Secuencia de inicio

– BIOS

– UPC

– tictac del reloj

– poder en la auto prueba

– CMOS

– RAM

– puertos

– teclado

– dispositivos periféricos

– conductores

Depende del sistema operativo.

Con la mayoría de las distribuciones de Linux puede averiguarlo fácilmente: la mayoría permite que la tecla de escape deje la pantalla de “espera ocupada” y muestre lo que está sucediendo.

Lo primero que tiene que suceder es la inicialización del sistema y el descubrimiento del dispositivo. Linux mostrará una pantalla de espera ocupada a la vez, pero aún no puede hacer nada.

A continuación se identifica el dispositivo del sistema para el sistema operativo. Cargando / inicializando / iniciando varios dispositivos.

La última es la ventana de bienvenida.

Incluso entonces, algunas cosas continuarán cargándose e inicializándose dependiendo del sistema.

  1. Botón de encendido
  2. Ejecución del programa POST (Powe en autocomprobación) que prueba hardware / voltajes / instalación de hardware nuevo Imp.
  3. Si la POST está bien, genera un solo pitido que indica que todo está bien, si la POST falla, genera diferentes pitidos que representan un problema específico. (Depende del fabricante de la BIOS)
  4. Ejecute el programa bootloader de MBR que es responsable de encontrar el sistema operativo y cargarlo
  5. Entonces su arranque operativo.

Suscríbase al canal Dev Avasthi para obtener información interesada.