> For a real OS (regardless of which scheduling algorithm/s the scheduler uses) most tasks switches are caused because the currently running task has to wait for something to happen (data received from a different task or storage devices/file system or network, or time to pass, or for user to press a key or move the mouse, or for a mutex to become available, etc), or happen because something that a task was waiting for happened causing a task to unblock and preempt the currently running task.

ooooh *learning noises*

hmm wondering if you could craft a process that will not wait for anything and just block forever

wait that's just a `while(true){}` so how does it switch if that's the case :think_bread: