When a process is swapped out of main memory it is said to be suspended. When a process is suspended, its process control block is placed onto the hard drive and most of its data. It is then added to the suspended queue, in the same way as the ready to run queue and blocked queue. The OS now has two extra choices to make.

Above is our revised state transition diagram. On a side note, the notation we are using is UML (unified modeling language). This is the most common notation for state diagrams and other technical diagrams.

 

The above diagram allows us to swap processes in and out of main memory, however it is not the most efficient implementation. Consider the case where the OS scheduler decides to un-suspend a process which is still blocked. This process is not ready to run so must be placed back into the blocked queue, and even back into the suspended queue. What we need is to break the suspended state into two

Processes which are suspended and still waiting for an I/O operation will be in the suspended – blocked state. Processes which are suspended and no longer waiting for a I/O operation will be in the suspended - “ ready state.

The above diagram shows the correct state transitions possible.