In Multiprogramming Batch systems, when one job waits for the completion of an I/O operation, another is executed.
A multiprogramming system is responsible for:
-starting jobs
-taking I/P for jobs
-switching between jobs
(& ensuring protection while doing so)
Classified jobs as foreground and background jobs.
When a foreground jobs encounters an operation requiring input or giving output to the user, a background job is executed.
Hence, more than one program could be executed, but, by the same user.