
Recientemente, comencé a aprender sobre Linux y hay una serie de preguntas que voy a hacer.
Mientras leía, encontré el término 'pila de kernel' y no puedo entender por qué el kernel de Linux usa la pila de kernel para cada proceso.
cuando se está ejecutando un proceso, ¿por qué sucede que el registro esp tiene la dirección de la parte superior de
la pila del kernel del proceso y por qué no la dirección de la parte superior de la pila del modo de usuario del proceso respectivo?
Respuesta1
Cuando un proceso ingresa al modo kernel como resultado de una llamada al sistema, la pila cambia del modo usuario a la pila kernel. Esto se hace para preservar la integridad del kernel; de lo contrario, el proceso (otro hilo, por ejemplo) podría hacer algunas cosas desagradables en la pila.
Se necesita una pila de kernel separada para cada proceso para guardar el estado del proceso. El estado debe guardarse en caso de que se realice un cambio de tarea, es decir, el proceso actual se pone en suspensión y se programa la ejecución de algún otro proceso. Cuando esto sucede, los valores de los registros (incluido el registro del puntero de la pila) se restauran para que el proceso a ejecutar pueda continuar desde el punto exacto en el que se encontraba cuando se suspendió.