As we have seen, multiprogramming was designed to keep the processor
and I/O devices, including storage devices, simultaneously busy to achieve maximum
efficiency. The key mechanism is this: In response to signals indicating the
completion of I/O transactions, the processor is switched among the various programs
residing in main memory.