Why is multiprogramming necessary in most computer systems?

Multiprogramming is basically a rudimentary form of multitasking. Today's users do so much and run so many programs at the same time. Of course, one person cannot actually use all the programs at once, and even when they are using one program, they are not constantly utilizing PC resources. Also, processor resources are limited. So the operating system has to schedule and shuffle everything to balance the needs of the users and the programs against the abilities and limitations of the hardware.