A multiprogramming operating system is one that allows end-users to run more than one program at a time. The development of such a system, the first type to allow this functionality, was a major step in the development of sophisticated computers. The technology works by allowing the central processing unit (CPU) of a computer to switch between two or more running tasks when the CPU is idle.
Early computers were largely dedicated to executing one program — or, more accurately, one task initiated by a program — at a time. Understanding the concept of tasks is key to understanding how a multiprogramming operating system functions. A "task" is a small sequence of commands that, when combined, comprises the execution of a running program. For example, if the program is a calculator, one task of the program would be recording the numbers being input by the end-user.
A multiprogramming operating system acts by analyzing the current CPU activity in the computer. When the CPU is idle — when it is between tasks — it has the opportunity to use that downtime to run tasks for another program. In this way, the functions of several programs may be executed sequentially. For example, when the CPU is waiting for the end-user to enter numbers to be calculated, instead of being entirely idle, it may run load the components of a web page the user is accessing.
The main benefit of this functionality is that it can reduce wasted time in the system's operations. As in a business, efficiency is the key to generating the most profit from an enterprise. Using this type of operating system eliminates waste in the system by ensuring that the computer's CPU is running at maximum capacity more of the time. This results in a smoother computing experience from the end-user's point of view, as program commands are constantly being executed in the background at all times, helping to speed execution of programs.
The multiprogramming operating system has been largely supplanted by a new generation of operating system known as multitasking operating systems. In a multitasking operating system, the system does not have to wait for the completion of a task before moving to work on an active program. Instead, it can interrupt a running program at any time in order to shift its CPU resources to a different active program. This provides for a more dynamic approach to handling concurrent programs.