Ir al contenido

Cambio de contexto

De Mexpedia

Un cambio de contexto consiste en la ejecución de una rutina perteneciente al núcleo del sistema operativo multitarea de una computadora, cuyo propósito es detener la ejecución de un hilo o proceso para dar paso a la ejecución de otro distinto.

Motivación

[editar | editar código]

En principio, una computadora que dispone de un único microprocesador solamente puede ejecutar un proceso al mismo tiempo, y no es posible ejecutar otro proceso hasta que el anterior libera el procesador.

No obstante, es posible alternar el uso de la CPU entre varios procesos durante cortos periodos de tiempo. Esto se denomina ejecución concurrente o multiprogramación.

Además, durante la ejecución de un proceso existen muchos tiempos muertos en los que no es necesario el uso de la CPU. Se trata de los momentos en los que el programa está esperando a que finalice una operación de entrada/salida; por ejemplo, una lectura desde el disco duro. Estos tiempos muertos pueden aprovecharse para ejecutar otro programa.

Funcionamiento

[editar | editar código]

Para hacer posible la ejecución concurrente, el programa en ejecución debe ceder el procesador. Esto puede ocurrir de forma voluntaria, cuando el propio proceso solicita una operación que lo bloquea (como una operación de entrada/salida) o cede explícitamente el uso de la CPU, como sucede en los sistemas de multitarea cooperativa. Sin embargo, en los sistemas de multitarea apropiativa el sistema operativo no depende de la buena conducta de los procesos: gracias a las interrupciones generadas por el hardware, es posible expulsar al programa en ejecución para dar paso al sistema operativo.

Cuando esto ocurre, el sistema operativo ejecuta la rutina de cambio de contexto, que realiza las siguientes operaciones en el orden indicado:

  1. Salvar el estado del programa que se estaba ejecutando. El estado, también denominado contexto, consiste en los valores de los registros del microprocesador, entre ellos el contador de programa. Se copian en la memoria principal, habitualmente en una estructura del núcleo denominada bloque de control del proceso.
  2. Seleccionar otro programa para ejecutar. Entre todos los procesos que estén preparados para ejecutarse, el planificador selecciona uno de ellos siguiendo algún algoritmo de planificación.
  3. Restaurar el estado del programa seleccionado. Para ello, se toma el estado previamente copiado en la memoria principal y se vuelca en los registros del microprocesador.
  4. Reanudar el programa seleccionado. La rutina termina su ejecución saltando a la instrucción que estaba pendiente de ejecutar en el programa seleccionado.

Este ciclo se repite cada vez que ocurre un evento de entrada/salida, cuando el proceso realiza una llamada al sistema que lo bloquea, o cuando vence un temporizador programado en el hardware. Dicho temporizador genera una interrupción periódica cuya frecuencia depende del sistema operativo y de su configuración.

El cambio de contexto tiene un costo: durante su ejecución el procesador no realiza trabajo útil para ningún proceso, por lo que una frecuencia excesiva de cambios de contexto degrada el rendimiento del sistema.

La ejecución concurrente también es aplicable a computadoras multiprocesador. En este caso, se llevan a cabo cambios de contexto en cada microprocesador de manera independiente.

Véase también

[editar | editar código]