What is multiprogramming? A system that takes all jobs in a job pool and job pool consists of all processes residing on a disk awaiting allocation of main memory. It is a rudimentary form of processing on which several programs run at the same time on a uniprocessor.
If several jobs are arrive to main memory and there is no room for all of them the system must choose among them using scheduling algorithm and load job into main memory for execution.
An operating system must be in complete control of the strategy of program execution and assists the users with such functions as operator communication, interpretation of job control statements, allocation of resources, and application of execution time limits.
Definition of multiprogramming