I'm still unsure when the state transition would occur, though. Like from RUNNING to BLOCKED or READY would be easy to implement, because the process is already on the CPU, but if it's moving from BLOCKED to READY, then when would this be executed on the CPU. I don't believe this was answered in the other response. Because it has quite a few options. Like it could be executed instantly, regardless of what's on the CPU presently (the OS takes over) and this could then be split into whether the current process is put into READY or is continued after the state transition (the former would require an additional state transition); or if the state transition would occur after the current process is finished on the CPU (immediately after or queued with the other processes). I mean this question is more on specifics, because I've already got a working model, but it makes a different assumption on how the CPU and OS are managed. And there's also an implicit query in my question about whether reading or writing from IO requires the CPU to be in operation and if it would prevent other processes from running.