Un cambio de contexto es el mecanismo por el cual un microprocesador puede almacenar el estado de un proceso o hilo y luego cargar el estado de un proceso o hilo diferente. Esto permite que varios procesos o hilos compartan un solo microprocesador.
Los cambios de contexto suelen ser iniciados por una interrupción de un temporizador de hardware, pero también pueden ser causados por otros eventos como una solicitud de E/S. Cuando se produce un cambio de contexto, el microprocesador guarda el estado del proceso o hilo actual en una ubicación de memoria llamada "bloque de contexto". Luego carga el estado del nuevo proceso o hilo desde otro bloque de contexto.
Los cambios de contexto suelen ser muy rápidos, pero pueden causar una importante degradación del rendimiento si se producen con demasiada frecuencia.
¿Cómo se maneja el cambio de contexto?
Hay varias maneras de manejar el cambio de contexto, dependiendo de las necesidades del sistema.
La forma más común de manejar el cambio de contexto es usar un planificador. Un planificador es un programa que decide qué proceso debe ejecutarse a continuación, y puede ser preventivo o no preventivo.
Un planificador preventivo interrumpe el proceso actual cada vez que llega un nuevo proceso o cuando la porción de tiempo del proceso actual expira. Este tipo de planificador se utiliza a menudo en los sistemas de tiempo real, donde es importante garantizar que los procesos se les da una cantidad justa de tiempo para correr.
Un planificador no preventivo sólo interrumpe el proceso actual cuando la porción de tiempo del proceso actual expira. Este tipo de planificador se utiliza a menudo en los sistemas donde no es tan importante para garantizar que los procesos se les da una cantidad justa de tiempo para correr.
Otra forma de manejar el cambio de contexto es utilizar un planificador cooperativo. Con un planificador cooperativo, cada proceso es responsable de ceder la CPU cuando no la está utilizando. Este tipo de planificador puede ser utilizado en sistemas donde es importante garantizar que los procesos tengan una cantidad justa de tiempo para ejecutarse.
Otra forma de manejar el cambio de contexto es utilizar un planificador híbrido. Con un planificador híbrido, el planificador utilizará un planificador preventivo para algunos procesos y un planificador cooperativo para otros. Este tipo de planificador puede ser utilizado en sistemas donde es importante garantizar que los procesos tengan una cantidad justa de tiempo para ejecutarse, pero donde también es importante tener algunos procesos que puedan ser interrumpidos. ¿Qué es un sistema operativo de bloqueo? Un deadlock es una condición en la que un proceso (o conjunto de procesos) es incapaz de continuar porque está esperando un evento que nunca ocurrirá. En un sistema operativo multiprocesador, un deadlock puede ocurrir cuando cada proceso está reteniendo un recurso y esperando que otro proceso libere un recurso diferente. Si el sistema operativo no puede romper el bloqueo, entonces el sistema puede dejar de responder.
¿Cómo podemos evitar el cambio de contexto? Podemos evitar el cambio de contexto utilizando una técnica llamada "multitarea preventiva". La multitarea preventiva es un tipo de multitarea en la que el sistema operativo elige automáticamente qué tareas deben ejecutarse en cada momento. Esto asegura que todas las tareas obtengan una parte justa del tiempo del procesador, y que ninguna tarea pueda monopolizar el procesador.
¿Qué es el sistema operativo de bloqueo?
¿Qué es un sistema operativo de bloqueo? Un bloqueo en un sistema multiprocesador puede ser causado por cada proceso que se aferra a un recurso mientras espera que el otro proceso lo libere. El sistema puede volverse inoperable si el sistema operativo es incapaz de romper el bloqueo.
¿Por qué necesitamos el cambio de contexto?
Un cambio de contexto es el proceso de almacenar y restaurar el estado (contexto) de un proceso o hilo. Esto permite que múltiples procesos o hilos compartan una única CPU y es una parte esencial de un sistema operativo multitarea.
Cuando se produce un cambio de contexto, el estado del proceso o hilo actual se guarda en la memoria y el estado del nuevo proceso o hilo se carga desde la memoria. Este proceso es normalmente muy rápido, pero puede causar una pequeña cantidad de retraso si el sistema operativo necesita paginar la memoria desde el disco.