¿Qué es el intercambiador de Python?
El kernel llama al proceso de inicio con ID 1 init después de iniciar el proceso.
El demonio de la página con id 2.
Para todos los procesos cuyo proceso principal ha finalizado, su proceso principal se cambia a init.
Cuando un proceso finaliza, el kernel comprueba todos los procesos activos uno por uno para determinar si es hijo del proceso que se va a finalizar. Si es así, cambia la identificación del proceso a 1, lo que garantiza que cada proceso tenga un padre.
Si el proceso hijo termina antes de que finalice el proceso padre, ¿cómo realiza el proceso padre las comprobaciones correspondientes para obtener el estado de terminación del proceso hijo? La respuesta a esta pregunta es que el kernel guarda una cierta cantidad de información para cada proceso hijo, por lo que cuando el proceso padre del proceso final llama a esperar o esperarpid, puede obtener esta información.
Proceso muerto: Un proceso que ha sido terminado, pero su proceso padre aún no lo ha procesado (obteniendo información sobre el proceso hijo terminado y liberando los recursos que aún ocupa).
¿Qué sucede cuando finaliza el proceso adoptado por el proceso init? ¿Se convertirá en zombie?
¡No! Porque init está escrito de tal manera que cada vez que finaliza el proceso hijo, init llamará a una función de espera para obtener su estado de terminación. Esto evita que aparezcan muchos procesos muertos en el sistema.
Proceso de intercambio:
Proceso 0:?
El ancestro de todos los procesos se llama proceso 0, el proceso inactivo o por razones históricas se llama proceso de intercambio. Es un hilo del kernel creado desde cero durante la fase de inicialización de Linux. Este proceso ancestro utiliza estructuras de datos asignadas estáticamente.
En un sistema multiprocesador, cada CPU tiene un proceso 0, que principalmente enciende la energía de la máquina. El BIOS de la computadora inicia una CPU y desactiva otras CPU. El proceso contenedor en la CPU en ejecución inicialmente inicializa las estructuras de datos del kernel y luego activa otros procesos y crea otro proceso contenedor usando la función copy_process(), pasando 0 como PID de su proceso al proceso contenedor recién creado.
Proceso 1:
El hilo del kernel creado por el proceso 0 ejecuta la función init() e init() inicializa el kernel una vez. Init() llama a ejecutable() y el sistema carga el programa ejecutable init. Como resultado, el hilo de inicio del kernel se convierte en un proceso normal, y cada kernel de proceso tiene sus propias estructuras de datos. El proceso de inicio existe hasta que se apaga el sistema porque crea y monitorea la actividad de todos los procesos que se ejecutan fuera del sistema operativo.
Hay muchos videos de capacitación sobre Python en el sitio web de aprendizaje de Python. ¡Bienvenido al aprendizaje en línea!