2.3.3 Procesos suspendidos
Debido a que el procesador es mucho más rápido que los dispositivos de E/S puede ocurrir que en un momento dado todos los procesos del sistema se encuentren bloqueados a la espera de que se complete alguna operación de E/S. Para solucionar este problema existen dos opciones (Stallings, 2001):
- Ampliar la memoria del sistema de forma que sea posible albergar en ella más procesos e incrementar así la posibilidad de que alguno de ellos haga uso efectivo del procesador.
- La otra solución consiste en aplicar una técnica conocida como intercambio o swaping. Esta técnica consiste en que cuando todos los procesos que se encuentran en memoria principal están bloqueados, el SO puede sacar a uno de ellos de su correspondiente cola y transferirlo a memoria secundaria. El proceso transferido se dice entonces que queda en estado suspendido. Una vez realizada esta operación, el SO está en condiciones de traer de nuevo a memoria a un proceso previamente suspendido, o bien dar entrada al sistema a un nuevo proceso.
En general, se considera suspendido a un proceso que presenta las características siguientes (Stallings, 2001):
- Un proceso suspendido no está disponible de inmediato para su ejecución.
- Un proceso puede estar esperando o no un suceso. Si lo está, la condición de bloqueado es independiente de la condición de suspendido y el acontecimiento del suceso bloqueante no lo habilita para la ejecución.
- El proceso fue situado en estado suspendido por un agente (el SO o el proceso padre) con el fin de impedir su ejecución.
- El proceso no puede apartarse del estado hasta que llegue la orden expresa para ello.
Si añadimos este nuevo estado a nuestro diagrama de 5 estados, obtendremos la figura 2.3.6.

Fig.2.3.6 Diagrama de 5 estados + suspendido.
Teniendo en cuenta que un proceso suspendido se encontraba bloqueado a la espera de que ocurriera un cierto suceso y que dicho suceso puede ocurrir mientras el proceso permanece en memoria secundaria, sería más eficiente desdoblar el estado suspendido en dos, uno para las procesos suspendidos que aún esperan el suceso que les bloqueó (estado bloqueado y suspendido) y otro para los procesos suspendidos que por haber tenido lugar se encuentran en situación de proseguir su ejecución (estado listo y suspendido). Para verlo mejor, consúltese la figura 2.3.7.
Las transiciones que involucran a los nuevos estados son las siguientes (Stallings, 2001):
- Transición Bloqueado y Suspendido-Preparado y Suspendido: Esta transición tiene lugar si se ha producido un suceso por el que había sido bloqueado el proceso suspendido. Es importante tener en cuenta que esto requiere que esté accesible para el SO la información relativa a los procesos suspendidos.
- Transición Preparado y Suspendido-Preparado: Cuando no hay procesos preparados en memoria principal el sistema operativo tendrá que traer de memoria secundaria un proceso que pueda continuar su ejecución. Además, puede darse el caso de que el proceso en estado Preparado y Suspendido tenga una nueva prioridad mayor que la de los procesos en estado Preparado. En este caso se deberá decidir entre ejecutar el proceso de mayor prioridad con el coste consiguiente de la operación de intercambio si no hay espacio en memoria principal para todos los procesos, o bien esperar a que haya espacio suficiente en memoria principal para albergar al proceso suspendido.
- Transición Preparado-Preparado y Suspendido: Como veíamos en la transición anterior, se puede producir un intercambio entre un proceso en estado Preparado y Suspendido y otro en estado de Preparado si no hay memoria suficiente para ambos. Generalmente, el SO prefiere suspender a un proceso Bloqueado en vez de a uno en estado Preparado. Sin embargo, puede ser necesario suspender a un proceso Preparado si ésta es la única forma de liberar un bloque lo suficientemente grande de memoria principal. Además, el SO puede escoger suspender un proceso Preparado de más baja prioridad en lugar de uno bloqueado de prioridad más alta si se estima que el proceso bloqueado pronto pasará a estado de Preparado.
- Transición Bloqueado y Suspendido-Bloqueado: Si un proceso termina y libera memoria principal y existe además algún proceso en la cola de procesos Bloqueados y Suspendidos con mayor prioridad de la de todos los proceso que se encuentran en la cola de Preparados y Suspendidos, el SO puede entonces traer el proceso a memoria si tiene razones para suponer que va a ocurrir pronto el suceso que bloqueó al proceso.
- Transición Ejecución-Preparado y Suspendido: Generalmente, un proceso en ejecución pasa al estado Preparado cuando expira su fracción de tiempo de procesador, sin embargo, si se está expulsando al proceso porque hay otro de prioridad mayor en la lista de Bloqueados y Suspendidos que acaba de desbloquearse, entonces el SO podría pasar directamente el proceso en ejecución a la cola de Preparados y Suspendidos, liberando así espacio en la memoria principal.
Entre las razones más habituales para la suspensión de procesos podemos citar las siguientes (Stallings, 2001):
- Intercambio de un proceso por otro(s): El SO necesita liberar memoria principal para cargar un proceso que está listo para ejecutarse.
- Suspensión de un proceso por el SO por sospechar que está causando algún tipo de problema.
- Solicitud expresa del usuario.
- Un proceso puede ejecutarse periódicamente y puede ser suspendido mientras espera el intervalo de tiempo antes de una nueva ejecución.
- Por una petición del proceso padre.