What is a multiprogramming Operating System?

Operating SystemHardwareSoftware & Coding

Multiprogramming OS is an ability of an operating system that executes more than one program using a single processor machine.

More than one task or program or jobs are present inside the main memory at one point of time.

Buffering and spooling can overlap I/O and CPU tasks to improve the system performance but it has some limitations that a single user cannot always keep CPU or I/O busy all the time.

To increase resource utilization, multiprogramming approaches.

Operating System
Job N
Empty space

The OS could pick and start the execution of one of the jobs in memory, whenever the jobs does not need CPU that means the job is working with I/O at that time the CPU is idle at that time the OS switches to another job in memory and CPU executes a portion of it till the job issues a request for I/O and so on.

Let’s P1 and P2 are two programs present in the main memory. The OS picks one program and starts executing it.

During execution if the P1 program requires I/O operation, then the OS will simply switch over to P2 program. If the p2 program requires I/O then again it switches to P3 and so on.

If there is no other program remaining after P3 then the CPU will pass its control back to the previous program.


The advantages of multiprogramming operating system are as follows −

  • CPU utilization is high because the CPU is never goes to idle state.

  • Memory utilization is efficient.

  • CPU throughput is high and also supports multiple interactive user terminals.


The disadvantages of multiprogramming operating system are as follows −

  • CPU scheduling is compulsory because lots of jobs are ready to run on CPU simultaneously.

  • User is not able to interact with jobs when it is executing.

  • Programmers also cannot modify a program that is being executed.

If several jobs are ready in main memory and if there is not enough space for all of them, then the system has to choose them by making a decision, this process is called job scheduling.

When the operating system selects a job from the group of jobs and loads that job into memory for execution, therefore it needs memory management, if several such jobs are ready then it needs CPU scheduling.

Updated on 29-Nov-2021 10:00:03