Existen varios modelos que representan
los estados que puede tener un proceso; esto es el Modelo de dos estados
y el Modelo de los cinco estados.
Modelo de 2 estados:
El
modelo de estados más simple es el de dos estados. En este modelo, un
proceso puede estar ejecutándose o no. Cuando se crea un nuevo proceso,
se pone en estado de No ejecución. En algún momento el proceso que se
está ejecutando pasará al estado No ejecución y otro proceso se elegirá
de la lista de procesos listos para ejecutar para ponerlo en estado
Ejecución. De esta explicación se desprende que es necesario que el
sistema operativo pueda seguirle la pista a los procesos, conociendo su
estado y el lugar que ocupa en memoria. Además los procesos que no se
están ejecutando deben guardarse en algún tipo de cola mientras esperan
su turno para ejecutar.

Modelo de Cinco estados:
El
modelo anterior de 2 estados funcionaría bien con una cola FIFO y
planificación por turno rotatorio para los procesos que no están en
ejecución, si los procesos estuvieran siempre listos para ejecutar. En
la realidad, los procesos utilizan datos para operar con ellos, y puede
suceder que no se encuentren listos, o que se deba esperar algún suceso
antes de continuar, como una operación de Entrada/Salida. Es por esto
que se necesita un estado donde los procesos permanezcan esperando la
realización de la operación de Entrada Salida por parte del Sistema
Operativo hasta que puedan proseguir. Se divide entonces al estado No
ejecución en dos estados: Listo y Espera. Se agregan además un estado
Nuevo y otro Terminado.
Los cinco estados de este diagrama son los siguientes según Osëliyo:
*Ejecución: el proceso está actualmente en ejecución.
*Listo: el proceso está listo para ser ejecutado, sólo está esperando que el planificador de corto plazo así lo disponga.
*Espera:
el proceso no puede ejecutar hasta que no se produzca cierto suceso,
como la finalización de una operación de Entrada/Salida solicitada por
una llamada al sistema operativo.
*Nuevo: El proceso recién fue
creado y todavía no fue admitido por el sistema operativo. En general
los procesos que se encuentran en este estado todavía no fueron cargados
en la memoria principal.
*Terminado: El proceso fue expulsado del
grupo de procesos ejecutables, ya sea porque terminó o por algún fallo,
como un error de protección, aritmético, etc.
Los nuevos estados
Nuevo y Terminado son útiles para la gestión de procesos. En este modelo
los estados Espera y Listo tienen ambos colas de espera. Cuando un
nuevo proceso es admitido por el sistema operativo, se sitúa en la cola
de listos. A falta de un esquema de prioridades ésta puede ser una cola
FIFO. Cuando se da un suceso se pasan a la cola de listos los procesos
que esperaban por ese suceso.
Una de las razones para implementar
el estado Espera era poder hacer que los procesos se puedan mantener
esperando algún suceso, por ejemplo una Entrada/Salida. Sin embargo, al
ser mucho más lentas estas operaciones, puede suceder que en nuestro
modelo de cinco estados todos los procesos en memoria estén esperando en
el estado Espera y que no haya más memoria disponible para nuevos
procesos. Podría conseguirse más memoria, aunque es probable que esto
sólo permita procesos más grandes y no necesariamente nuevos procesos.
Además hay un costo asociado a la memoria y de cualquier forma es
probable que se llegaría al mismo estado con el tiempo. Otra solución es
el intercambio. El intercambio se lleva a cabo moviendo una parte de un
proceso o un proceso completo desde la memoria principal al disco,
quedando en el estado Suspendido. Después del intercambio, se puede
aceptar un nuevo proceso o traer a memoria un proceso suspendido
anteriormente. El problema que se presenta ahora es que puede ser que si
se decide traer a memoria un proceso que está en el estado Suspendido,
el mismo todavía se encuentre en espera. Sólo convendría traerlo cuando
ya está listo para ejecutar, esto implica que ya aconteció el suceso que
estaba esperando. Para tener esta diferenciación entre procesos
suspendidos, ya sean listos como en espera, se utilizan cuatro estados:
Listo, Espera, Espera y suspendido y Listo y suspendido.
TRANSICIONES
(Segun Andrew S. Tanenbaum, 2003)
*De
ejecución á Bloqueado: al iniciar una operación de E/S, al realizar una
operación WAIT sobre un semáforo a cero (en el tema de procesos
concurrentes se estudiarán los semáforos).
*De ejecución á Listo: por
ejemplo, en un sistema de tiempo compartido, cuando el proceso que
ocupa la CPU lleva demasiado tiempo ejecutándose continuamente (agota su
cuanto) el sistema operativo decide que otro proceso ocupe la CPU,
pasando el proceso que ocupaba la CPU a estado listo.
*De Listo á en
ejecución: cuando lo requiere el planificador de la CPU (veremos el
planificador de la CPU en el tema de planificación de procesos).
*De
Bloqueado á Listo: se dispone del recurso por el que se había bloqueado
el proceso. Por ejemplo, termina la operación de E/S, o se produce una
operación SIGNAL sobre el semáforo en que se bloqueó el proceso, no
habiendo otros procesos bloqueados en el semáforo.
Obsérvese que
de las cuatro transiciones de estado posibles, la única iniciada por el
proceso de usuario es el bloqueo, las otras tres son iniciadas por
entidades externas al proceso.
Interpretación
de la figura: Como podemos observar en esta figura tenemos una serie de
transiciones posibles entre estados de proceso, representados a partir
mediante una gama de colores. Estos colores hay que interpretarlos de
forma que, el color del borde de los estados representa a dichos
estados, los colores dentro de los circulos nos dicen las posibles
alternativas de acceso hacia otro estado, y los colores de las flechas
nos representan hacia que estado nos dirigimos si seguimos la misma.
No hay comentarios:
Publicar un comentario