Red de conocimiento informático - Aprendizaje de programación - Código fuente ejecutable del kernel

Código fuente ejecutable del kernel

1. El proceso 0 es el antepasado de todos los demás procesos, también conocido como proceso inactivo o proceso de intercambio.

2. El proceso 0 es creado desde cero por el propio kernel durante la inicialización del sistema.

3. La mayoría de los miembros de datos del proceso 0 están definidos estáticamente, es decir, inicializados por macros predefinidas como init_task, init_mm, etc. El descriptor INIT_TASK del proceso 0 está en arch/arm/kernel/. init_task Definido en .c e inicializado por la macro init_task. I

Las estructuras como nit_mm se definen en include/linux/init_task.h y son los valores iniciales de los miembros de init_task. El proceso 1 se inicializa mediante las macros de inicialización correspondientes, como init_mm. El proceso 0 eventualmente creará un subproceso del kernel llamando a kernel_thread para ejecutar la función init. Este subproceso del núcleo recién creado es el Proceso 1 (en este punto, todavía posee el subproceso del núcleo.

La función init continúa inicializando el resto del núcleo y, al final de la función, llama al programa ejecutable cargado en el espacio de usuario /sbin/init. En este punto, el proceso 1 tiene sus propios recursos de atributos y se convierte en un proceso ordinario (proceso init).

En este punto, finaliza el proceso de inicialización y arranque del kernel. La siguiente es la inicialización del espacio del usuario. Ejecute la interfaz de inicio de sesión del shell

(Nota: el proceso Init siempre existe porque crea y monitorea la actividad de todos los procesos ejecutados fuera del sistema operativo). p>

———— - Esta descripción del proceso 0 está citada de "Comprensión del kernel de Linux - Tercera edición"

El antepasado de todos los procesos se llama proceso 0, el proceso inactivo, o para razones históricas, llamado intercambio. Un proceso es un subproceso del núcleo creado desde cero durante la fase de inicialización de Linux. Este proceso ancestro utiliza las siguientes estructuras de datos asignadas estáticamente (todas las demás estructuras de datos del proceso se asignan dinámicamente)