Estado de los procesos
Un proceso puede pasar por una serie de estados, algunos de ellos son:
En
ejecución: El proceso ocupa la CPU actualmente, es
decir, se está ejecutando.
Listo o preparado: El proceso dispone de todos los recursos para
su ejecución, sólo le falta la CPU.
Bloqueado: Al proceso le falta algún recurso para poder seguir ejecutándose,
además de la CPU. Por recurso se pueden entender un dispositivo, un dato, etc.
El proceso necesita que ocurra algún evento
que le permita poder proseguir su ejecución.
Transiciones de los procesos
A continuación se dan ejemplos
de eventos que pueden provocar transiciones de estado en un proceso en este
modelo de tres estados.
De
ejecución á Bloqueado: al iniciar una operación de
E/S, al realizar una operación wait
sobre un semaforo
a cero.
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.