Processes can be in different states and are not always ready to run. For example if a process is waiting for some I/O request to be fulfilled, there is no point it being run as there is nothing it can do. We say that this process is blocked. As a process is running, it may become blocked for some reason. Maybe the user has asked for a file or work is being saved. In this case the process should become blocked and then relinquish control to another process. The state diagram shows this.

Notice that a process can not go from blocked to running.

 

To manage this, the scheduler will have two queues. One with processes blocked and one with processes ready to run. Only one process can be running at one time.