- when a process puts itself to sleep like System call
- When a process exits (terminating a process)
- When a process returns from a system call to user mode but it is the most suitable process to run like nice()
- When a process returns to user mode after the kernel completes handling an interrupt but it is not the most eligible process to run (interrupt except system call)