The states in the process model are as follows,
• Ready: In this state, processes which are ready for execution are placed in queue and loaded into the main memory.
• Run: This state consists of the process which is being executed.
• Blocked: This state consists of the process which is waiting for an event to occur.
• NonResident: It is also called as suspend state. If the main memory is full then the process is sent to the NonResident state until the main memory is free.
The transactions between the states are shown in the below diagram:
Figure: State process model representing the transactions between the states.
The labels in the table represent the order of the transactions between the states.
(1) Ready Run: When the run state is free, the scheduler selects a process from the Ready state and sends it to the Run state for execution.
(2) RunReady: Every process in the Run state is allocated a certain amount of time to perform the execution, if the process has not completed its execution in the given period of time the process goes from Run to Ready state.
(3) RunBlocked: Some processes require certain events to perform its execution in the Run state, and if the event is not in immediate availability then the process is sent from Run state to Blocked state to wait for the required event to occur.
(4) BlockedReady: As stated above, a process waits for a required event in the Blocked state and when the required event arrives the process is sent from Blocked state to Ready state.
(5) ReadyNonResident: When the main memory is full in the Ready state and it requires freeing up some space from the memory it sends a process which has least priority and has occupied large amount of space to the NonResident state.
(6) BlockedNonResident: It is same as ReadyNonResident transmission, except in this transaction a blocked process is sent to the NonResident state to free up space in the main memory for a new process.