tiempo son sobre slideshare residencia linea historia hacer general especialidad ensayo donde cuantos cirujano cirugia años apendicitis antiguedad c linux assembly kernel

sobre - ¿Cuáles son las primeras operaciones que ejecuta el Kernel de Linux al arrancar?



historia de la cirugia pdf (2)

Después de que el gestor de arranque entrega la ejecución al kernel, ¿qué ocurre? Conozco al ensamblador, entonces, ¿cuáles son las primeras instrucciones que debe hacer un núcleo? ¿O hay una función C que hace esto? ¿Cuál es la secuencia de inicio antes de que el kernel pueda ejecutar un binario arbitrario?


Asumo que estás hablando de x86 aquí ...

Depende de dónde considere el límite entre "cargador de arranque" y "kernel": el inicio del kernel propiamente dicho es un código de modo protegido de 32 bits, pero el kernel en sí proporciona algún código de arranque para llegar allí desde el modo real.

El código del modo real está en arch/x86/boot/ : start_of_setup hace una configuración básica del entorno para C, y llama a main() , que hace algunas cosas bastante aburridas, terminando con el salto real al modo protegido (consulte pmjump.S )

Donde termina ahora depende de si el kernel está comprimido o no. Si lo es, el punto de entrada es en realidad una rutina de autodescompresión. Esto es bastante aburrido y esencialmente transparente: el código de descompresión y el kernel comprimido se mueven más arriba en la memoria, luego el kernel se descomprime en la ubicación original y luego se salta como si se hubiera descomprimido. a lo largo. Este código está en arch/x86/boot/compressed/ (el punto de entrada es startup_32 en head_32.S ).

El kernel realmente funciona correctamente en startup_32 en arch/x86/kernel/head_32.S . El código allí termina llamando a i386_start_kernel() en arch/x86/kernel/head32.c , que finalmente llama al código genérico de arranque del kernel en start_kernel() .