GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿cómo programa el kernel de Linux la CPU, entre los procesos/subprocesos del espacio de usuario y las tareas/trabajos del kernel?

Estaba tratando de entender la gestión y programación de procesos de Linux. Sé que el programador programa diferentes procesos en función de la prioridad/fracción de tiempo. Pero hay tareas del kernel (no estoy mencionando las llamadas al sistema del proceso que llevan el proceso al modo kernel) que también deben procesarse (por ejemplo:programador/temporizadores o algún código del kernel que se ejecuta para siempre). No entendí si el programador programa la CPU para diferentes procesos, cómo se atienden las tareas del kernel en el medio.

Respuesta aceptada:

Las tareas del núcleo que no se ejecutan "en proceso" (para atender una llamada al sistema o una interrupción) se manejan como procesos separados y puede verlos en ps Salida de:

root         2  0.0  0.0      0     0 ?        S    Sep16   0:02 [kthreadd]
root         3  0.0  0.0      0     0 ?        I<   Sep16   0:00 [rcu_gp]
root         4  0.0  0.0      0     0 ?        I<   Sep16   0:00 [rcu_par_gp]
root         6  0.0  0.0      0     0 ?        I<   Sep16   0:00 [kworker/0:0H-kblockd]
root         8  0.0  0.0      0     0 ?        I<   Sep16   0:00 [mm_percpu_wq]
root         9  0.0  0.0      0     0 ?        S    Sep16   9:11 [ksoftirqd/0]
root        10  0.2  0.0      0     0 ?        I    Sep16 173:25 [rcu_sched]
root        11  0.0  0.0      0     0 ?        I    Sep16   0:00 [rcu_bh]
root        12  0.0  0.0      0     0 ?        S    Sep16   0:20 [migration/0]
root        14  0.0  0.0      0     0 ?        S    Sep16   0:00 [cpuhp/0]
root        15  0.0  0.0      0     0 ?        S    Sep16   0:00 [cpuhp/1]

Estos procesos se programan de la misma manera que los procesos con los que está más familiarizado.

Un patrón común para tales tareas son las colas de trabajo; la documentación del núcleo para esos es bastante buena, lo animo a leerla si está interesado en el tema.


Linux
  1. Linux:¿diferencia entre el espacio del usuario y el espacio del kernel?

  2. Linux:¿cómo sabe el kernel de Linux los números mayores y menores de los dispositivos?

  3. ¿Cómo funciona internamente copy_from_user del kernel de Linux?

  4. ¿Por qué proteger el kernel de Linux del usuario root?

  5. ¿Cómo asigna Linux el ancho de banda entre los procesos?

¿Cuál es la diferencia entre los núcleos de macOS y Linux?

Cómo encontrar los principales procesos en ejecución por memoria y uso de CPU en Linux

¿Cómo deshabilitar el inicio de sesión SSH para el usuario raíz en Linux?

Cómo montar y ver un archivo ISO como raíz y usuario normal en Linux

¿Cuál es la diferencia entre el espacio de usuario y el espacio del kernel?

¿Cómo carga Linux la imagen 'initrd'?