Skip to content

Design ‐ Process State Machine

Pier-Luc Brault edited this page May 14, 2026 · 3 revisions

Process States and Transitions

A process has the following possible states:

  • IDLE
  • RUNNING
  • BLOCKED_ON_CPU_IO_REQUESTED
  • BLOCKED_ON_CPU_IO_AVAILABLE
  • BLOCKED_ON_CPU_PAGE_FAULT
  • BLOCKED_OFF_CPU_IO_REQUESTED
  • BLOCKED_OFF_CPU_IO_AVAILABLE
  • ENDED

Below are the possible transitions between states. Transitions are expressed using the following format:

START_STATE -> EVENT_NAME -> NEW_STATE

Possible Transitions

  • IDLE -> ASSIGN_TO_CPU -> RUNNING

  • IDLE -> TERMINATE_FROM_STARVATION -> ENDED

  • RUNNING -> REMOVE_FROM_CPU -> IDLE

  • RUNNING -> REQUEST_IO -> BLOCKED_ON_CPU_IO_REQUESTED

  • RUNNING -> PAGE_FAULT -> BLOCKED_ON_CPU_PAGE_FAULT

  • RUNNING -> TERMINATE_GRACEFULLY -> ENDED

  • BLOCKED_ON_CPU_IO_REQUESTED -> IO_AVAILABLE -> BLOCKED_ON_CPU_IO_AVAILABLE

  • BLOCKED_ON_CPU_IO_REQUESTED-> REMOVE_FROM_CPU -> BLOCKED_OFF_CPU_IO_REQUESTED

  • BLOCKED_ON_CPU_IO_AVAILABLE -> IO_DELIVERED -> RUNNING

  • BLOCKED_ON_CPU_IO_AVAILABLE -> REMOVE_FROM_CPU -> BLOCKED_OFF_CPU_IO_AVAILABLE

  • BLOCKED_ON_CPU_IO_AVAILABLE -> TERMINATE_FROM_STARVATION -> ENDED

  • BLOCKED_ON_CPU_PAGE_FAULT -> PAGE_AVAILABLE -> RUNNING

  • BLOCKED_ON_CPU_PAGE_FAULT -> REMOVE_FROM_CPU -> IDLE

  • BLOCKED_ON_CPU_PAGE_FAULT -> TERMINATE_FROM_STARVATION -> ENDED

  • BLOCKED_OFF_CPU_IO_REQUESTED -> IO_AVAILABLE -> BLOCKED_OFF_CPU_IO_AVAILABLE

  • BLOCKED_OFF_CPU_IO_REQUESTED -> ASSIGN_TO_CPU -> BLOCKED_ON_CPU_IO_REQUESTED

  • BLOCKED_OFF_CPU_IO_AVAILABLE -> IO_DELIVERED -> IDLE

  • BLOCKED_OFF_CPU_IO_AVAILABLE -> ASSIGN_TO_CPU -> BLOCKED_ON_CPU_IO_AVAILABLE

  • BLOCKED_OFF_CPU_IO_AVAILABLE -> TERMINATE_FROM_STARVATION -> ENDED

Clone this wiki locally