![]() |
New: the process is being created. |
![]() |
Running: the process is currently being executed by a processor |
![]() |
Waiting: the process is waiting for a specific event to occur before it can proceed. |
![]() |
Ready: process is ready for execution, but must waiting for a processor to become available. |
![]() |
Terminated: the process has finished execution. |

![]() |
Program counter, indicates the address of the next instruction to be executed for this process |
![]() |
CPU registers, |
![]() |
memory management information, |
![]() |
accounting ( time used, ID, ... ) |
![]() |
I/O status ( such as file resources ), |
![]() |
scheduling data ( relative priority, etc. ) |
![]() |
Process State (so running, suspended, etc. is simply a field in the PCB ). |


![]() |
Long-term (high-level) scheduling: selects processes and loads them into memory for execution. |
| It determines which programs are admitted to the system for processing. Before accepting a new |
| program, the long-term scheduler must first decide whether the processor is able to cope effectively with |
| another process. |
![]() |
Medium-term scheduling: it is a mixture of CPU and memory resource management. It transfers a |
| process out of main memory and into virtual memory or vice-versa. This may occur when the operating |
| system needs to make space for a new process. |
![]() |
Short-term (low-level) scheduling: determines which process to execute next. This will occur each time |
| the currently running process is halted, determines which process to execute next. This will occur each |
| time the currently running process is halted. It contains three functions: |
| code to remove a process from the processor at the end of its run. |
| code to put a process on the ready queue. |
| code to take a process off the ready queue and run that process. |
![]() |
I/O scheduling: controls how input/output operations will be submitted to storage. |