¿Cómo coordina el sistema operativo la ejecución del software de aplicación, del software de utilidad y de las unidades del propio sistema operativo?
Un programa es un conjunto estático de instrucciones, mientras que la ejecución del programa es una actividad dinámica cuyas propiedades cambian con el paso del tiempo.
Un proceso es la actividad de ejecutar un programa bajo el control del sistema operativo.
Estado del proceso:
Es estado del proceso es el estado actual de la actividad de un proceso.
Esto incluye información sobre:
1.- la posición actual dentro del programa que se está ejecutando (el valor del contador de programa)
2.- los valores en los registros del procesador y en las celdas de memoria asociadas.
Es decir, el estado del proceso es una fotografía de la actividad de la computadora
Ya que se llevan a cabo diferentes procesos en el sistema es tarea del sistema operativo gestionar estos procesos de modo que cada uno de ellos disponga de los recursos (dispositivos periféricos, espacio en la memoria principal, acceso a archivos y acceso a un procesador) que necesita, de modo que los distintos procesos independientes no interfieran entre sí y de manera que los procesos que precisen intercambiar información puedan hacerlo.
Administración de procesos
El planificador y el despachador se encargan de coordinar la ejecución de los procesos dentro del núcleo del sistema operativo.
El planificador
El planificador crea una tabla de procesos en la memoria principal, donde registra los procesos presentes en la computadora, los nuevos procesos por ejecutar y de eliminar del registro los procesos completados.
Cuando un usuario solicita la ejecución de una aplicación, el planificador añade este registro en la tabla.
Cada registro contiene informaciones tal como:
1.- el área de memoria asignada al proceso (obtenida del gestor de memoria),
2.- la prioridad del proceso
3.- si el proceso está listo o a la espera.
Un proceso está listo si se encuentra en un estado en el que puede continuar progresando; estará a la espera si su progreso está actualmente detenido hasta que tenga lugar algún suceso externo, como la terminación de una operación de escritura en almacenamiento masivo, la pulsación de una tecla del teclado o la llegada de un mensaje enviado por otro proceso.
El despachador
El despachador es el componente del núcleo que supervisa la ejecución de los procesos planificados.
A través de la multiprogramación se divide el tiempo en cortos segmentos llamados franjas temporales (que pueden durar unos milisegundos o unos microsegundos), para que el despachador, haga una conmutación de procesos (o cambio de contexto) que es el procedimiento de cambiar de un proceso a otro.
Multiprogramación entre el proceso A y el proceso B.
Cada vez que el despachador concede una franja temporal a un proceso, inicia un circuito temporizador que indicará el final de la franja temporal, generando una señal conocida como interrupción.
El procesador reacciona a esta señal de interrupción, deteniendo el proceso actual y registrando el estado en como lo deja, para poder continuar en el mismo estado en otro momento.
La rutina de tratamiento de interrupciones forma parte del despachador y se encarga de describir cómo debe responder el despachador a la señal de interrupción que es:
1.- desalojar al proceso actual y transferir de nuevo el control al despachador.
2.- el despachador selecciona en la tabla de procesos aquel proceso que tenga la mayor prioridad entre todos los procesos que estén listos (según haya determinado el planificador);
3.- a continuación, el despachador reinicia el circuito de temporización y permite al proceso seleccionado que comience con su franja temporal.
El aspecto clave para el buen funcionamiento de un sistema de multiprogramación es la capacidad de detener un proceso y reanudarlo posteriormente.
Los procesadores multiprogramación incorporan la tarea de guardar esta información a la señal de interrupción.
El uso de técnicas de multiprogramación permite incrementar la eficiencia global de una máquina.
Aunque parezca contrario a la lógica, ya que la especialización de operaciones pudiera ser más eficiente.
Sin embargo, la mayoría de la ejecución de programas son dependientes de otros procesos o señales ajenas a la actividad del procesador, como la indicación del usuario o la respuesta de un dispositivo externo.
Lo cual generaría infinidad de tiempos muertos que el procesador no realizaría ninguna actividad