¿Qué es el cambio de contexto en el sistema operativo?
La Conmutación de Contexto implica el almacenamiento del contexto o estado de un proceso para que pueda ser recargado cuando sea necesario y se pueda reanudar la ejecución desde el mismo punto que antes. Esta es una característica de un sistema operativo multitarea y permite que una sola CPU sea compartida por múltiples procesos.
Un diagrama que demuestra el cambio de contexto es el siguiente –
En el diagrama anterior, inicialmente el Proceso 1 está en ejecución. El proceso 1 se desconecta y el proceso 2 se conecta debido a una interrupción o a una llamada del sistema. El cambio de contexto implica guardar el estado del proceso 1 en PCB1 y cargar el estado del proceso 2 desde PCB2. Después de algún tiempo se produce de nuevo un cambio de contexto y el proceso 2 se desconecta y el proceso 1 se conecta de nuevo. Esto implica guardar el estado del proceso 2 en PCB2 y cargar el estado del proceso 1 desde PCB1.
Disparadores de cambio de contexto
Hay tres disparadores principales para el cambio de contexto. Estos se dan como sigue –
-
Multitarea: En un entorno multitarea, un proceso es cambiado fuera de la CPU para que otro proceso pueda ser ejecutado. El estado del antiguo proceso se guarda y el estado del nuevo proceso se carga. En un sistema preventivo, los procesos pueden ser conmutados por el planificador.
-
Manejo de interrupciones: El hardware cambia una parte del contexto cuando se produce una interrupción. Esto ocurre automáticamente. Sólo se cambia parte del contexto para minimizar el tiempo requerido para manejar la interrupción.
-
Cambio de modo de usuario y de núcleo: Un cambio de contexto puede tener lugar cuando se requiere una transición entre el modo de usuario y el modo de núcleo en el sistema operativo.
Pasos del cambio de contexto
Los pasos involucrados en el cambio de contexto son los siguientes –
- Guardar el contexto del proceso que se está ejecutando actualmente en la CPU. Actualizar el bloque de control del proceso y otros campos importantes.
- Mover el bloque de control del proceso anterior a la cola correspondiente, como la cola de listos, la cola de E/S, etc.
- Seleccionar un nuevo proceso para su ejecución.
- Actualizar el bloque de control del proceso seleccionado. Esto incluye la actualización del estado del proceso a en ejecución.
- Actualizar las estructuras de datos de gestión de memoria según sea necesario.
- Restaurar el contexto del proceso que se estaba ejecutando previamente cuando se carga de nuevo en el procesador. Esto se hace cargando los valores anteriores del bloque de control del proceso y de los registros.
Coste del cambio de contexto
El cambio de contexto conlleva un coste de sobrecarga debido a los vaciados de la TLB, la compartición de la caché entre múltiples tareas, la ejecución del programador de tareas, etc. El cambio de contexto entre dos hilos del mismo proceso es más rápido que entre dos procesos diferentes ya que los hilos tienen los mismos mapas de memoria virtual. Debido a esto el flushing del TLB no es necesario.
Leave a Reply