El cambio de contexto es una técnica o método utilizado por el sistema operativo para cambiar un proceso de un estado a otro para ejecutar su función utilizando las CPU del sistema. Al cambiar de función en el sistema, almacena el estado del antiguo proceso en ejecución en forma de registros y asigna la CPU a un nuevo proceso para ejecutar sus tareas. Mientras se ejecuta un nuevo proceso en el sistema, el proceso anterior debe esperar en una cola lista. La ejecución del proceso anterior comienza en el punto donde otro proceso lo detuvo. Define las características de un sistema operativo multitarea en el que múltiples procesos comparten la misma CPU para realizar múltiples tareas sin necesidad de procesadores adicionales en el sistema.
La necesidad de cambiar de contexto
Un cambio de contexto ayuda a compartir una única CPU entre todos los procesos para completar su ejecución y almacenar el estado de las tareas del sistema. Cuando el proceso se recarga en el sistema, la ejecución del proceso comienza en el mismo punto donde hay conflicto.
A continuación se detallan las razones que describen la necesidad de cambiar de contexto en el sistema operativo.
- El cambio de un proceso a otro proceso no se realiza directamente en el sistema. Un cambio de contexto ayuda al sistema operativo que cambia entre múltiples procesos a utilizar el recurso de la CPU para realizar sus tareas y almacenar su contexto. Podemos retomar el servicio del proceso en el mismo punto más adelante. Si no almacenamos los datos o el contexto del proceso actualmente en ejecución, los datos almacenados pueden perderse al cambiar entre procesos.
- Si un proceso de alta prioridad cae en la cola listo, el proceso que se está ejecutando actualmente será cerrado o detenido por un proceso de alta prioridad para completar sus tareas en el sistema.
- Si algún proceso en ejecución requiere recursos de E/S en el sistema, el proceso actual será cambiado por otro proceso para usar las CPU. Y cuando se cumple el requisito de E/S, el proceso antiguo pasa a un estado listo para esperar su ejecución en la CPU. El cambio de contexto almacena el estado del proceso para reanudar sus tareas en un sistema operativo. De lo contrario, el proceso necesita reiniciar su ejecución desde el nivel inicial.
- Si se produce alguna interrupción mientras se ejecuta un proceso en el sistema operativo, el estado del proceso se guarda como registros mediante el cambio de contexto. Luego de resolver las interrupciones, el proceso pasa de un estado de espera a un estado listo para reanudar su ejecución en el mismo punto posterior, donde ocurre la interrupción del sistema operativo.
- Un cambio de contexto permite que una sola CPU maneje múltiples solicitudes de proceso simultáneamente sin la necesidad de procesadores adicionales.
Ejemplo de cambio de contexto
Supongamos que se almacenan varios procesos en un bloque de control de procesos (PCB). Un proceso se encuentra en estado de ejecución para ejecutar su tarea con el uso de CPU. Mientras el proceso se ejecuta, llega otro proceso a la cola listo, que tiene una alta prioridad de completar su tarea usando la CPU. Aquí utilizamos el cambio de contexto que cambia el proceso actual con el nuevo proceso que requiere que la CPU finalice sus tareas. Mientras se cambia el proceso, un cambio de contexto guarda el estado del proceso anterior en los registros. Cuando el proceso se recarga en la CPU, inicia la ejecución del proceso cuando el nuevo proceso detiene el proceso anterior. Si no guardamos el estado del proceso, tenemos que iniciar su ejecución en el nivel inicial. De esta manera, el cambio de contexto ayuda al sistema operativo a cambiar entre procesos, almacenar o recargar el proceso cuando requiere ejecutar sus tareas.
Desencadenantes de cambio de contexto
A continuación se detallan los tres tipos de activadores de cambio de contexto.
- Interrumpe
- Multitarea
- Cambio de kernel/usuario
Interrumpe : Una CPU solicita que los datos se lean desde un disco y, si hay alguna interrupción, el cambio automático de contexto cambia una parte del hardware que requiere menos tiempo para manejar las interrupciones.
Multitarea : Un cambio de contexto es la característica de la multitarea que permite cambiar el proceso desde la CPU para que se pueda ejecutar otro proceso. Al cambiar el proceso, el estado anterior se guarda para reanudar la ejecución del proceso en el mismo punto del sistema.
Cambio de kernel/usuario : Se utiliza en los sistemas operativos cuando se cambia entre el modo de usuario y el modo kernel/usuario.
¿Qué es el PCB?
Una PCB (Bloque de control de procesos) es una estructura de datos utilizada en el sistema operativo para almacenar toda la información relacionada con los datos del proceso. Por ejemplo, cuando se crea un proceso en el sistema operativo, se actualiza la información del proceso, se cambia la información del proceso y se finaliza el proceso en la PCB.
Pasos para el cambio de contexto
Hay varios pasos que implican el cambio de contexto de los procesos. El siguiente diagrama representa el cambio de contexto de dos procesos, P1 a P2, cuando ocurre una interrupción, necesidades de E/S o un proceso basado en prioridad en la cola lista de PCB.
Como podemos ver en el diagrama, inicialmente, el proceso P1 se está ejecutando en la CPU para ejecutar su tarea y, al mismo tiempo, otro proceso, P2, está en estado listo. Si se ha producido un error o una interrupción o el proceso requiere entrada/salida, el proceso P1 cambia su estado de ejecución al estado de espera. Antes de cambiar el estado del proceso P1, el cambio de contexto guarda el contexto del proceso P1 en forma de registros y el contador del programa en el PCB1 . Después de eso, carga el estado del proceso P2 desde el estado listo del PCB2 al estado de funcionamiento.
Se siguen los siguientes pasos al cambiar el Proceso P1 al Proceso 2:
- Primero, este cambio de contexto necesita guardar el estado del proceso P1 en la forma del contador de programa y los registros en la PCB (Bloque de contador de programa), que está en estado de ejecución.
- Ahora actualice PCB1 para procesar P1 y mueva el proceso a la cola apropiada, como la cola lista, la cola de E/S y la cola de espera.
- Después de eso, otro proceso entra en estado de ejecución, o podemos seleccionar un nuevo proceso del estado listo, que se ejecutará, o el proceso tiene una alta prioridad para ejecutar su tarea.
- Ahora, tenemos que actualizar la PCB (Bloque de control de proceso) para el proceso P2 seleccionado. Incluye cambiar el estado del proceso del estado listo al estado en ejecución o de otro estado como bloqueado, salir o suspender.
- Si la CPU ya ejecuta el proceso P2, necesitamos obtener el estado del proceso P2 para reanudar su ejecución en el mismo momento en que ocurre la interrupción del sistema.
De manera similar, el proceso P2 se desconecta de la CPU para que el proceso P1 pueda reanudar su ejecución. El proceso P1 se recarga desde PCB1 al estado de ejecución para reanudar su tarea en el mismo punto. De lo contrario, la información se pierde y cuando el proceso se ejecuta nuevamente, comienza la ejecución en el nivel inicial.