Todos los sistemas operativos de multiprogramación están construidos en torno al concepto de proceso. Por lo tanto, los requisitos principales que deben satisfacer un S.O. están expresados haciendo referencia a procesos:
- Debe intercalar la ejecución de un conjunto de procesos para maximizar la utilización del procesador ofreciendo a la vez un tiempo de respuesta razonable.
- Debe asignar los recursos a los procesos en conformidad con un política específica
- Podría tener que dar soporte a la comunicación entre procesos y la creación de procesos por parte del usuario
El procesador ejecutará instrucciones de entre un repertorio en una secuencia dictada por los valores cambiantes del IP. A lo largo del tiempo, este contador puede apuntar a códigos de programas diferentes que son parte de diferentes aplicaciones. Desde el punto de vista de un programa individual, su ejecución involucra una secuencia de instrucciones del programa. La ejecución de un programa individual se conoce como proceso o tarea.
El comportamiento de un proceso individual puede caracterizarse por la traza, que es un listado de la secuencia de instrucciones que se ejecutan para dicho proceso. El comportamiento del procesador puede caracterizarse mostrando la forma en que se intercalan las trazas de varios procesos. Todo sistema operativo permite a un proceso continuar su ejecución sólo por un cantidad máxima determinada de ciclos, después de los cuales es interrumpido (time-out); esto impide que un solo proceso monopolice el tiempo del procesador.
MODELO DE PROCESOS CON DOS ESTADOS
El modelo más sencillo que puede construirse tiene en cuenta que, en un momento dado, un proceso puede estar ejecutándose o no. Entonces, un proceso puede estar en uno de dos estados: Ejecución y No Ejecución. Cuando el sistema operativo crea un nuevo proceso, éste entra en el sistema en el estado de No Ejecución. De este modo, el proceso existe, es conocido por el sistema operativo y está esperando la oportunidad de ejecutarse. Aquellos procesos que no están ejecutándose tienen que guardarse en algún tipo de cola, para que esperen su turno de ejecución.
Creación de procesos
Cuando se añade un proceso a los que ya está administrando el sistema operativo, hay que construir las estructuras de datos que se utilizan para administrar el proceso y asignar el espacio de direcciones que va a utilizar el proceso.
Cuatro sucesos comunes llevan a la creación de un proceso:
- En un entorno de trabajo por lotes, un proceso se crea como respuesta a la remisión de un trabajo.
- En un entorno interactivo, cuando un nuevo usuario intenta conectarse.
- Por una aplicación. Por ejemplo, si un usuario solicita la impresión de un archivo, el S.O. creará un proceso que gestionará dicha impresión.
- Por solicitud de otro proceso.
Cuando un proceso es creado por el sistema operativo tras la solicitud explícita de otro proceso, la acción se conoce como generación de procesos (process spawning). Cuando un proceso genera otro, el proceso generador se conoce como proceso padre y el proceso generado es el proceso hijo.
Existen dos tipos de creación:
- Jerárquica: cada proceso que se crea es hijo del proceso creador y hereda el entorno de su ejecución de su padre. Un proceso durante su ejecución puede crear varios procesos hijos a través de llamadas al sistema para creación de procesos. Al restringirse un proceso hijo a un subconjunto de recursos del padre, se evita que éste sature al sistema creando demasiados procesos hijos. Al crear procesos hijos, el padre continúa ejecutando concurrentemente con sus hijos o espera a que todos sus hijos hayan terminado y luego continúa él.
- No jerárquica: cada proceso creado se ejecuta en forma independiente de su creador en un entorno diferente.
Terminación de procesos
En cualquier sistema informático, debe haber alguna forma de que un proceso pueda indicar que ha terminado. Las formas existentes para terminar un proceso son:
- En un entorno de trabajo por lotes, inclusión de una instrucción de detención (HALT). Esta instrucción generará una interrupción para avisar al S.O. que el proceso ha concluido.
- En un entorno de trabajo por lotes, puede finalizarse por la llamada explícita a un servicio del S.O. para la terminación.
- En una aplicación interactiva, es la acción del usuario la que indica terminación. Por ejemplo, en un sistema de tiempo compartido, el proceso de un usuario particular terminará cuando éste se desconecte del sistema o apague el terminal y en una PC o WorkStation cuando el usuario abandona una aplicación.
- Cuando ocurren una serie de errores o condiciones de fallos
- Un proceso puede ser eliminado por el proceso que lo creó o al terminar el proceso padre