An example task list could be:
- task1, priority 2, waiting
- task2, priority 1, runnable
- task3, priority 1, executing
- task4, priority 1, runnable
- task5, priority 0, runnable
task2 waits, so task3 is selected to execute:
- task1, priority 2, waiting
- task2, priority 1, waiting
- task3, priority 1, executing
- task4, priority 1, runnable
- task5, priority 0, runnable
An interrupt occurs that makes task1 runnable, which is higher priority than
task3 so task1 executes:
- task1, priority 2, executing
- task2, priority 1, waiting
- task3, priority 1, runnable
- task4, priority 1, runnable
- task5, priority 0, runnable
task1 waits, causing task3 to execute:
- task1, priority 2, waiting
- task2, priority 1, waiting
- task3, priority 1, executing
- task4, priority 1, runnable
- task5, priority 0, runnable
An interrupt occurs and task3 has used its timeslice period, so task4 is selected to execute:
- task1, priority 2, waiting
- task2, priority 1, waiting
- task3, priority 1, runnable
- task4, priority 1, executing
- task5, priority 0, runnable
An interrupt occurs and makes task2 runnable, but task4 hasn't used its timeslice period, so it is left to execute:
- task1, priority 2, waiting
- task2, priority 1, runnable
- task3, priority 1, runnable
- task4, priority 1, executing
- task5, priority 0, runnable
A interrupt occurs and task4 has used its timeslice period:
- task1, priority 2, waiting
- task2, priority 1, executing
- task3, priority 1, runnable
- task4, priority 1, runnable
- task5, priority 0, runnable