Red de conocimiento informático - Aprendizaje de programación - Entorno de depuración del kernel Linux2.6 kernel i386linux2.6

Entorno de depuración del kernel Linux2.6 kernel i386linux2.6

Hay un libro "Comprensión del kernel de LINUX". La versión del kernel mencionada en el libro es 2.4. ¿Es la misma que la versión del kernel 2.4.18?

El kernel de Linux se compone de tres partes, el número de versión mayor, el número de versión menor y el número de modificación. 2.4.18, el número de versión principal es 2, el número de versión secundaria es 4 y el número de revisión es 18. Actualmente, el último kernel es el 2.6.32. Generalmente, si el número de la versión menor es un número impar, es una versión beta; si el número de la versión menor es un número par, es una versión estable.

¿Versión del kernel Centos7.6?

Mío: 3.10.0

La versión del kernel de centos7.6 es 3.10.0. La versión del kernel de Linux se puede ver a través de UNAME-R.

¿Cómo funciona la cola del kernel de Linux?

El kernel Linux 2.6 utiliza una gran cantidad de colas de trabajo para procesar tareas. La mayor diferencia entre este y el tasklet es que las funciones de la cola de trabajos pueden usar la suspensión, mientras que las funciones del tasklet no pueden usar la suspensión. Hay dos formas de utilizar las colas de trabajo. Una forma es utilizar la cola de trabajos compartidos del sistema para agregar su propio trabajo. En este caso, la función de procesamiento no puede consumir demasiado tiempo, lo que afectará el procesamiento de otras tareas en la cola. La otra es crear su propia cola de trabajos y agregar trabajo. (1) Utilice la cola de trabajos propiedad del sistema para agregar trabajo: Paso 1: Declare o escriba una función de procesamiento de trabajo void my_func() Paso 2: Cree una variable de estructura de trabajo y asigne la dirección de entrada de la función de procesamiento y los parámetros a; Esta variable de estructura de trabajo declare_work (my_work, my_func, data); // Cree una variable de estructura llamada my_work en el momento de la compilación y asígnele la dirección de entrada de la función y la dirección del parámetro si no desea utilizar DECLARE_WORK() para crear e inicializar; la variable de estructura de trabajo también puede usar INIT_WORK() para crear structwork_structmy_work//Cree una variable de estructura llamada my_work, y luego puede usar init_work () init_work (my_work, my_func, data); la dirección de entrada de la función de procesamiento y la dirección de los datos a esta variable de estructura. Por lo general, el tercer paso se completa en la función de apertura impulsada: agregue la variable de estructura de trabajo a la * * * cola de trabajo compartida del sistema Schedule_work (my_work) // Una vez completado el trabajo agregado a la cola, se eliminará automáticamente de la cola; cola Eliminar o programar _ trabajo _ retrasado (mi _ trabajo, marcar // Retrasar el tick antes de enviar el trabajo (2) Cree su propia cola de trabajo para agregar trabajo. El primer paso: declarar la función de procesamiento de trabajo y un puntero a la cola de trabajo void my_func(); struct work queue_ struct * p_queue; el segundo paso: crear su propia cola de trabajo y variables de estructura de trabajo (generalmente en la función abierta Completado en) p_queu = Create_work queue("my_queue");// Cree una cola de trabajo llamada my_queue y asigne la dirección de entrada de la cola de trabajo al puntero declarado structwork_structmy_workINIT_WORK(my_work, my_func, data); // Cree una variable de estructura de trabajo e inicialice); como en el primer caso. Paso 3: agregue el trabajo a la cola de trabajos que creó y espere la ejecución de queue_work(p_queue, my_work); // La función es similar a Schedule_work(), excepto que el trabajo se agrega a la cola de trabajos señalada por puntero p_queue, no el sistema Cola de trabajo disfrutada * * * Paso 4: Elimina tu propia cola de trabajo destroy _ work queue (p _ queue); Generalmente se elimina en la función de apagado.