Hay una "pila de kernel" por CPU. Hay una "pila de usuario" para cada proceso, aunque cada subproceso tiene su propia pila, incluidos los subprocesos del usuario y del núcleo.
Cómo "la captura cambia la pila" es realmente bastante simple.
La CPU cambia procesos o "modos", como resultado de una interrupción. La interrupción puede ocurrir por muchos motivos diferentes: se produce un error (como un error o error de página) o una interrupción de hardware físico (como desde un dispositivo) o una interrupción de temporizador (que ocurre, por ejemplo, cuando un proceso ha utilizado todos los de su tiempo asignado de la CPU ")
cualquier manera -. cuando esta interrupción se llama, los registros de la CPU se guardan en la pila - todos los registros -. incluido el propio puntero de pila
Normalmente luego un" planificador "Sería llamado. El planificador luego elige otro proceso para ejecutar - restaurando todos sus registros guardados incluyendo el puntero de la pila, y continúa la ejecución desde donde dejó (almacenado en el puntero de la dirección de retorno).
Esto se denomina "Cambio de contexto".
Estoy simplificando algunas cosas, como cómo se guarda y restaura el contexto de administración de memoria, pero esa es la idea.Solo guarda y restaura registros en respuesta a una interrupción, incluido el registro "puntero de pila".
¿Qué arquitectura estás estudiando? – Gabe
http://www.cs.umb.edu/~eoneil/cs444_f06/class10.html: algo bueno para aclarar el problema. De un sitio web de la universidad! –
Me desmayé de la universidad hace 5 años y esta pregunta todavía me recuerda mis años de estudiante universitario. Cada vez que recibo una notificación para esta pregunta sobre el desbordamiento de la pila, me llena de nostalgia. – user609306