Estados de un proceso

Proceso: programa en ejecución

Un proceso es un programa ejecutable que está cargado en la memoria RAM.

Una de las funciones del S.O. relacionada con el uso del microprocesador es gestionar la ejecución de los programas: gestionar los procesos.

Cola de procesos y quantum

En un S.O. es multitarea, cuando el número de procesos a ejecutar es superior al número de unidades de ejecución (cores), el S.O. asigna a cada proceso un pequeño lapsus de tiempo para usar el microprocesador. Durante ese tiempo (quantum), el proceso ejecutará sus instrucciones en el microprocesador.

Ese quantum son unos pocos milisegundos (~10➙60 ms), su duración puede depender de la prioridad del proceso. De esta forma se permite que varios procesos se ejecuten de manera aparentemente simultánea

Una vez consumido el quantum, el S.O. desaloja al proceso del microprocesador y lo pone en una "cola de espera", donde quedará ocioso hasta que le llegue otra vez su turno.

Dos componentes del S.O. relacionados con esta gestión de procesos son:

  • El scheduler o "planificador de tareas", que reparte el uso del microprocesador entre los distintos procesos.
  • El dispatcher o despachador, que transfiere al microprocesador el siguiente proceso, y prepara el "contexto" que el proceso necesita.

Estados de un proceso

Así podemos ver que un proceso pasa por diferentes estados durante su ejecución:
1. unas veces estará usando el microprocesador
2. otras, estará a la cola esperando que le dejen usarlo
3. a veces se sacará de la cola de procesos quedando en un estado de bloqueo porque no puede seguir ejecutándose (por ejemplo, necesita usar algún dispositivo ocupado, espera datos para seguir trabajando, ...).

Diagramas de procesos

Podemos representar los estados por los que puede pasar un proceso, y las transiciones entre estados, mediante los diagramas de estados:

diagrama de 3 estados

‣ Abajo podemos ver un diagrama con los posibles estados de un proceso y las posibles transiciones de un estado a otro:

Este es el conocido como diagrama de 3 estados. Podemos ampliar el nivel de detalle de alguno de estos estados, obteniendo otros diagramas de 5, 6, 7, ... estados.

diagrama de 5 estados

En el ejemplo anterior, dividimos el estado "Bloqueado" en dos:
3.a si el motivo del bloqueo es la espera de algún dato o evento del exterior, el proceso se echa a dormir.
3.b pero si lo hemos detenido para una posible reanudación posterior, el proceso se ha parado.

Y añadimos un quinto estado: el de "Terminado" pero sigue residente en memoria en memoria esperando que el S.O. lo "destruya".

1. Ejecución (Run).
- El proceso está ejecutando sus instrucciones en el microprocesador durante un quantum de tiempo.

2. Preparado (Ready).
- El proceso quiere usar el microprocesador, y está esperando en la cola de procesos a que llegue su turno.

3. Dormido (Sleep).
- El proceso está esperando algún tipo de evento (p.ej. una pulsación de teclado, la llegada de datos de Internet, que se libere la impresora...). En cuanto dicho evento se produce, el proceso vuelve a ponerse a la cola de procesos preparados.

4. Parado (Suspendido) (sTop).
- Un proceso parado no espera eventos de ningún tipo, salvo quizás el de reanudación o finalización.
Es un proceso que ha sido detenido, quizás por el usuario, para reanudar la ejecución más tarde.

5. Zombie (Terminado).
- Ha finalizado, aunque todavía no ha sido eliminado de la tabla de procesos y sigue ocupando recursos (memoria, archivos abiertos, ...).

diagrama de 7 estados

Servicios

Un caso particular de proceso son los servicios. Un servicio es un proceso que se ejecuta en segundo plano y no tiene interfaz gráfica. Suelen permanecer ociosos en memoria (dormidos) hasta que algún suceso reclama su atención, en ese momento despiertan y se ponen a la cola de procesos.

Los servicios se lanzan para satisfacer necesidades que pueden ser comunes y puntuales de otros procesos. Como ejemplo típico podemos considerar el servicio web HTTP, que no hace nada hasta que algún otro proceso le solicita su atención, pidiéndole algún recurso que pueda proporcionar (p.ej. una página web).