De la arquitectura del kernel de Linux de Mauerer,
Los hilos del núcleo son procesos iniciados directamente por el núcleo mismo. Delegan una función del núcleo a un proceso separado y la ejecutan allí en '' paralelo '' a los otros procesos en el sistema (y, de hecho, en paralelo a la ejecución del núcleo mismo). Los hilos del kernel a menudo se denominan demonios (kernel) . Se utilizan para realizar, por ejemplo, las siguientes tareas:
- Para sincronizar periódicamente páginas de memoria modificadas con el dispositivo de bloque desde el cual se originan las páginas (por ejemplo, archivos asignados usando mmap).
- Para escribir páginas de memoria en el área de intercambio si rara vez se utilizan.
- Gestionar acciones diferidas.
- Implementar diarios de transacciones para sistemas de archivos.
Básicamente, hay dos tipos de hilo del núcleo:
- Tipo 1: el subproceso se inicia y espera hasta que el núcleo lo solicite para realizar una acción específica.
- Tipo 2: una vez iniciado, el subproceso se ejecuta a intervalos periódicos, verifica la utilización de un recurso específico y toma medidas cuando la utilización excede o cae por debajo de un valor límite establecido. El kernel usa este tipo de subproceso para tareas de monitoreo continuo.
Como el libro de Mauerer dice que los hilos del kernel son procesos, creo que deben ejecutarse en modo de usuario, en lugar de modo de kernel. (¿o me equivoco? ¿Puede un proceso ejecutarse en modo de usuario o en modo kernel en diferentes momentos, o solo en un modo?)
Pero Bovet's Understanding Linux Kernel dice que los hilos del kernel se ejecutan solo en modo kernel (vea la cita a continuación). ¿Son los conceptos de "hilo del núcleo" en los dos libros el mismo concepto?
Los sistemas Unix tradicionales delegan algunas tareas críticas para ejecutar procesos de manera intermitente, como el vaciado de cachés de disco, el intercambio de páginas no utilizadas, el servicio de conexiones de red, etc. De hecho, no es eficiente realizar estas tareas de manera estrictamente lineal; tanto sus funciones como los procesos del usuario final obtienen una mejor respuesta si se programan en segundo plano. Debido a que algunos de los procesos del sistema se ejecutan solo en el modo Kernel, los sistemas operativos modernos delegan sus funciones a los hilos del kernel , que no están gravados con el contexto innecesario del modo de usuario. En Linux, los hilos del kernel difieren de los procesos regulares de las siguientes maneras:
- Los hilos de kernel se ejecutan solo en modo Kernel, mientras que los procesos regulares se ejecutan alternativamente en modo kernel y en modo usuario.
- Debido a que los subprocesos del núcleo se ejecutan solo en modo Kernel, utilizan solo direcciones lineales mayores que PAGE_OFFSET. Los procesos regulares, por otro lado, usan los cuatro gigabytes de direcciones lineales, ya sea en modo de usuario o en modo kernel.
El libro de Mauerer dice que los hilos del núcleo son iniciados directamente por el núcleo, y también parece decir que los demonios son sinónimos de hilos del núcleo. Así que creo que los demonios deben ser iniciados directamente por el núcleo.
Pero https://unix.stackexchange.com/a/193918/674 dice que
screen
el demonio se inicia mediantescreen
la interfaz de usuario (consulte la cita a continuación). Creo quescreen
la interfaz de usuario es un proceso, en lugar del núcleo. ¿Son los conceptosdaemon
en el libro de Mauerer y en la respuesta vinculada el mismo concepto?Cuando comienzas por primera vez
screen
, en realidad estás iniciando una interfaz de usuario (ui), que por defecto creará un demonio (el administrador de sesión).En general, ¿cómo entiende los conceptos de "hilos de kernel", "proceso" y "daemon", sus relaciones y sus diferencias?