Multiprogramming
Multiprogramming is the management of multiple processes within a uniprocessor system.
Multiprogramming allows multiple programs to reside in the main memory simultaneously. This setup enables the CPU to execute multiple processes by switching among them through Context Switching.
Modern OS
Multiprogramming is a central theme of modern operating systems.
Do we even need multiprogramming?
It’s not sure. Because we are getting more and more cores on our processors. So you don’t even need to Context Switch.