Mecanismo operativo del módulo del kernel de Linux (10/11)

El kernel de Linux implementa una característica interesante: admite la carga y ejecución dinámica de módulos. Si implementa un módulo del kernel y planea ejecutarlo, no necesita reiniciar el sistema, solo use el comando insmod para cargarlo directamente. Este módulo está integrado en el sistema operativo Linux como un parche y puede ejecutarse normalmente.

El principio operativo del módulo del kernel es en realidad el mismo que el mecanismo operativo de la biblioteca compartida: se carga en la memoria durante la operación y luego se realizan una serie de operaciones de asignación de espacio, resolución de símbolos, reubicación y otras. El módulo del kernel es esencialmente un archivo de destino reubicable como una biblioteca estática o una biblioteca dinámica. La diferencia entre los módulos del kernel y las bibliotecas dinámicas es que uno se ejecuta en el espacio del kernel y el otro en el espacio del usuario. La ejecución de la aplicación se basa en el vinculador dinámico implementado por la biblioteca estándar C para completar el proceso de vinculación dinámica, yEl funcionamiento del módulo del kernel no depende de la biblioteca estándar de C. El proceso de reubicación y vinculación dinámica debe ser completado por el propio kernel: la carga del módulo del kernel se completa mediante la llamada al sistema init_module.

Cuando se utiliza el comando insmod para cargar un módulo del kernel, el proceso básico es el siguiente:

  1. kernel/module.c/init_module
  2. Copiar al kernel: copy_module_from_user
  3. Asignación de espacio de direcciones: layout_and_allocate
  4. Análisis de símbolos: simplificar_símbolos
  5. Reubicación: apply_relocations
  6. Ejecución: complete_fromation

Supongo que te gusta

Origin blog.csdn.net/weixin_39541632/article/details/132266537
Recomendado
Clasificación