Aquí hay una ilustración simplificada:
`` `` ``
+-----------------++-----------------++-----------------++
| Proceso A | <-> | Programador de procesos | <-> | Proceso b |
+-----------------++-----------------++-----------------++
^ |
| V
+-----------------------------------------++
Interruptor de contexto
`` `` ``
Explicación:
1. El proceso A se está ejecutando: La CPU está ejecutando instrucciones para el proceso A. Los registros de la CPU, el contador de programas (PC - que indica la siguiente instrucción) e información de gestión de memoria (como tablas de página) reflejan el estado del proceso A.
2. Iniciado el interruptor de contexto: Una interrupción (por ejemplo, interrupción del temporizador, finalización de E/S) o una decisión de programación hace que el programador del sistema operativo intervenga.
3. Proceso de estado A guardado: El programador guarda el estado completo del proceso A (registros de CPU, PC, información de administración de memoria) a un bloque de control de proceso (PCB), una estructura de datos en la memoria. Piense en la PCB como una instantánea del proceso.
4. Proceso B seleccionado: El planificador selecciona el siguiente proceso para ejecutar, por ejemplo, el proceso B, basado en varios algoritmos de programación (por ejemplo, round-robin, basado en prioridad).
5. Estado del proceso B cargado: El programador carga el estado guardado del proceso B (de su PCB) en los registros de CPU, la PC y las unidades de administración de memoria.
6. El proceso B se ejecuta: La CPU ahora ejecuta instrucciones para el proceso B.
Este proceso se repite continuamente, lo que permite múltiples procesos para compartir el tiempo de la CPU, creando la ilusión de la ejecución paralela (concurrencia). Cuanto más rápido sea el cambio de contexto, la experiencia multitarea. Sin embargo, el cambio de contexto tiene algo de sobrecarga.