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.