An approach in concurrent programming where the control between multiple processes and the operating system are done cooperatively.
When control is given to a program, it means that the process’ instructions (content) and its address (location) are loaded into the CPU’s instruction and address register’s respectively.
When the program performs I/O operations (e.g. write
, read
, input
) that interact with the operating system, an interruption routine is triggered. A snapshot of the program’s state is saved to memory, and the control is handed back to the OS. The original process then added back to the process queue. The next process in the queue is loaded to be run, until it is interrupted and the cycle repeats.