Multiprogramming is the rapid switching of the CPU between multiple processes in memory. It is done only when the currently running process requests I/O, or terminates.
Requirements for Multiprogramming:
1. Hardware support
2. I/O interrupts and (possibly) DMA: in order to execute instructions while I/O device is busy
several ready-to-run jobs must be kept in memory
3. Memory protection (data and programs)
4. Software support from the OS: Scheduling (which program is to be run next)
To manage resource contention….
Hope this will help u !