La Activación del Sistema Operativo: Retomando el Control en un Sistema en Ejecución
En un sistema informático moderno, el Sistema Operativo (S.O.) no es una entidad que controla constantemente cada acción del microprocesador. Más bien, se comporta como un programa que cede el control del procesador a los programas de usuario y a otros procesos, para luego depender de una serie de eventos específicos para retomar dicho control. Esta dinámica es fundamental para la multiprogramación y la eficiencia del sistema, permitiendo que múltiples aplicaciones compartan los recursos del hardware.
Cuando los procesos de usuario están ejecutándose en modo usuario (un modo menos privilegiado que restringe el acceso a ciertas instrucciones y regiones de memoria), el S.O. espera ser invocado.
La “activación” del S.O. se refiere a los mecanismos mediante los cuales el control del procesador es transferido del programa de usuario al núcleo del sistema operativo (que se ejecuta en modo núcleo o privilegiado).
Acciones que Activan la Ejecución del S.O.
Existen tres categorías principales de eventos que activan la ejecución del S.O., permitiéndole retomar el control del microprocesador:
- Llamadas al Sistema (System Calls o Traps de Software)
- Naturaleza: Un proceso de usuario solicita explícitamente un servicio al S.O.. Estos servicios pueden incluir operaciones de E/S (lectura/escritura de archivos, acceso a dispositivos), creación o terminación de procesos, gestión de memoria, o cualquier otra función que requiera privilegios de acceso al hardware que solo el núcleo posee.
- Mecanismo: Las llamadas al sistema se implementan típicamente mediante una instrucción especial TRAP (trampa o cebo). Esta instrucción, que puede ser invocada en modo usuario, transfiere el control al núcleo del S.O.. Aunque para el programador de aplicaciones parecen funciones normales, una llamada al sistema no solo transfiere el control de ejecución a una función del S.O., sino que también cambia el procesador a modo núcleo.
- Interrupciones de Hardware (Interrupciones Ordinarias)
- Naturaleza: Son eventos asíncronos y externos al proceso que se está ejecutando actualmente. Estas interrupciones son generadas por módulos de hardware (como controladores de E/S o temporizadores) para señalar que ha ocurrido algo que requiere la atención del S.O..
- Tipos comunes:
- Interrupción de reloj o temporizador: Generada por un temporizador del procesador. Permite al S.O. realizar funciones de forma regular, como verificar si un proceso ha excedido su tiempo máximo de ejecución (rodaja de tiempo o time slice) o si debe realizar tareas periódicas.
- Interrupción de E/S: Generada por un controlador de E/S para indicar la finalización normal de una operación (ej., un disco ha terminado de leer datos) o para señalar diversas condiciones de error.
- Interrupción por fallo de hardware: Indicación de un error en un dispositivo o componente del hardware, como un error de paridad en memoria o un fallo de acceso.
- Condiciones de Excepción o Error (Traps del Procesador)
- Naturaleza: Son eventos sincrónicos que ocurren como resultado de la ejecución de una instrucción específica dentro del proceso actual, o una condición de error generada por el propio procesador.
- Ejemplos: Desbordamiento aritmético, división por cero, intento de ejecutar una instrucción de máquina ilegal, o referencias de memoria fuera del espacio permitido para un usuario. Si el programa de usuario intenta ejecutar una instrucción privilegiada (reservada al modo núcleo), el microprocesador detecta un error y transfiere el control al núcleo. Un fallo de página (cuando se accede a una dirección de memoria virtual que no está cargada en memoria principal) es también un tipo de excepción que activa al S.O..
El Proceso de Activación del Sistema Operativo
Cuando uno de estos eventos ocurre, se desencadena una secuencia de acciones coordinadas entre el hardware del procesador y el software del sistema operativo para transferir el control al núcleo.
- Respuesta Inicial del Hardware:
- El procesador suspende la ejecución del programa actual en el punto exacto donde se produjo el evento.
- Guarda la información mínima necesaria para poder reanudar el programa en el futuro. Esto incluye la Palabra de Estado del Programa (PSW) y el Contador de Programa (PC), que se apilan en la pila de control del sistema.
- El procesador cambia automáticamente su modo de ejecución a modo núcleo (privilegiado). Esto le da al S.O. control total sobre el hardware y la memoria.
- El procesador carga en el PC la dirección de entrada de la rutina de servicio correspondiente al evento (conocida como manejador de interrupción o manejador de llamada al sistema).
- Intervención del Software del Sistema Operativo:
- El manejador de interrupción (que forma parte del núcleo del S.O.) comienza a ejecutarse en modo privilegiado.
- Este manejador determina la naturaleza específica del evento que causó la interrupción o la llamada.
- Puede realizar tareas adicionales, como salvaguardar el resto del contexto del procesador (contenido de registros de propósito general) en el Bloque de Control de Proceso (BCP) del proceso interrumpido. El BCP es una estructura de datos vital que contiene toda la información necesaria para que el S.O. pueda gestionar y restaurar el estado de un proceso.
- El S.O. procede a ejecutar la función solicitada o a manejar la condición de error/interrupción. Por ejemplo, si es una interrupción de E/S, puede transferir datos; si es una llamada al sistema para abrir un archivo, realizará esa operación.
- Una vez completada la tarea, el S.O. debe decidir qué proceso ejecutar a continuación.
- El Rol del Planificador (Scheduler) y el Activador (Dispatcher):
- La decisión de qué proceso ejecutar la toma el planificador a corto plazo (scheduler). Este componente del S.O. selecciona un proceso de la cola de procesos Listos (aquellos que tienen todos sus recursos asignados y están esperando solo por el procesador). Las decisiones pueden basarse en políticas como el reparto de tiempo (round-robin), prioridades, o la cantidad de tiempo restante.
- Si se decide cambiar de proceso (es decir, el proceso actualmente en ejecución se va a mover a otro estado, como Listo o Bloqueado, y se va a ejecutar un proceso diferente):
- El S.O. actualiza el BCP del proceso interrumpido (cambiando su estado, registrando la razón de la interrupción, etc.).
- El BCP del proceso interrumpido se mueve a la cola apropiada (Listo, Bloqueado, Listo/Suspendido).
- El planificador selecciona un nuevo proceso.
- El S.O. actualiza el BCP del proceso elegido a
Ejecutando
. - El activador (dispatcher) es el componente encargado de cargar el contexto guardado del nuevo proceso en los registros del procesador.
- Es importante destacar que una interrupción o una llamada al sistema provoca un cambio de modo (a modo núcleo), pero no siempre un cambio de proceso. El S.O. puede decidir que el mismo proceso interrumpido debe continuar ejecutándose después de que se haya atendido el evento. En este caso, la sobrecarga es menor, ya que solo se restauran los registros mínimos.
- Regreso al Modo Usuario:
- Una vez que el S.O. ha terminado de procesar el evento (ya sea que el mismo proceso continúe o se inicie uno nuevo), el control se transfiere al proceso de usuario. Si se reanuda el proceso original, el S.O. restaura el PSW y el PC guardados del proceso interrumpido, volviendo a modo usuario y permitiendo que el programa continúe su ejecución como si la interrupción nunca hubiera ocurrido desde su perspectiva. Si se selecciona un nuevo proceso, su contexto se carga y comienza a ejecutarse en el modo que le corresponde.