Respuestas cortas:
- No, no es un proceso.
- Los hilos de usuario no están enraizados en init.
Init es solo el primer proceso; no gestiona ningún proceso o subproceso. Crea algunos, usando el kernel syscalls fork () y exec.
Creo que tienes una idea turbia de lo que es un proceso. no solo significa un poco de código de ejecución. Sí, el núcleo se ejecuta antes de init (y el gestor de arranque incluso antes). Pero un "proceso" tiene una definición específica de:
- Se ejecuta en el espacio del usuario.
- Se ejecuta con una ID de proceso
- Muchas interacciones deben pasar por el núcleo
- Todos los recursos deben provenir del núcleo
- Necesita ser programado por el núcleo
Entonces, una vez que el núcleo se inicializa, ejecuta init, que luego genera cualquier otro proceso que su configuración le indique.
En lo que respecta al # 2, todas las cosas del núcleo están, bueno, en el núcleo. Piense en el núcleo como una gran área de código. De nuevo, no es un proceso, sino un gran blob de código. Partes del núcleo se ocupan de la gestión de la memoria, partes del mismo con partes de programación de sí mismo (como controladores, etc.), y partes del mismo con procesos de planificación.
El núcleo no se comporta realmente como un proceso en absoluto. No se programa, se ejecuta en nombre de un proceso (denominado contexto de proceso o contexto de usuario) o se ejecuta como resultado de una interrupción o excepción (denominado contexto de interrupción).
Dicho esto, el kernel de Linux genera subprocesos del kernel para realizar algunas tareas, o para evitar ejecutar algo en el contexto de interrupción durante demasiado tiempo (eso es lo que hace el subproceso ksoftirqd, evitando latencias excesivas que podrían conducir, por ejemplo, a la caída de audio, ...) .
Puede ver los hilos del kernel en la salida del
ps
comando. Se identifican fácilmente: su nombre está entre paréntesis. Algunos de ellos ejecutan una instancia por CPU, la CPU se identifica con un número después de una barra oblicua, por lo que [ksoftirqd / 0] es la instancia de ksoftirqd en la CPU 0.fuente
Hay conceptos en micro-núcleos en los que varias partes del núcleo son procesos con el centinela principal, en su mayoría solo administra IPC.
Linux, para bien o para mal, no es un sistema de micro kernel.
fuente
No, no lo es ... El núcleo (y las extensiones del núcleo) se cargan directamente en la memoria. Si hay un código inseguro en el núcleo, nada se interpone entre él y un gran problema.
Aparte de eso, el núcleo básicamente ejecuta / cambia entre procesos. Obviamente, algo que realmente ejecuta procesos no será un proceso en sí mismo.
(tl; dr 1. no 2. parte del núcleo / su extensión)
fuente
ninjalj escribió: "El núcleo no se comporta realmente como un proceso en absoluto. No se programa"
Bueno, está el proceso inactivo (básicamente pid 0, aunque no se muestra en ninguna parte) que está programado y casi siempre en un estado ejecutable.
fuente
Fuente: https://courses.cs.washington.edu/courses/cse351/19su/lectures/18/CSE351-L18-processes_19su.pdf , página 36
fuente