Difference between Multiprogramming and Multitasking
Both Multi-programming and Multi-tasking are related to Operating Systems Concepts
CPU is a super fast device and keeping it occupied for a single task is never a good idea. Considering the huge differences between CPU speed and IO speed, many concepts like multiprogramming, multitasking, multithreading, etc have been introduced to make better CPU utilisation.
Multi-programming increases CPU utilisation by organising jobs (code and data) so that the CPU always has one to execute. The idea is to keep multiple jobs in main memory. If one job gets occupied with IO, CPU can be assigned to other job.
Multi-tasking is a logical extension of multiprogramming. Multitasking is the ability of an OS to execute more than one task simultaneously on a CPU machine. These multiple tasks share common resources (like CPU and memory). In multi-tasking systems, the CPU executes multiple jobs by switching among them typically using a small time quantum, and the switches occur so quickly that the users feel like interact with each executing task at the same time.
Note: 1. A task in a multitasking system is not whole application program but it can refers to a “thread of execution” when one process is divided into sub-tasks.
2. Multi programming and multitasking OS are time sharing systems.
Difference between Multiprogramming and Multi-tasking
|1.||Both of these concepts are for single CPU.||Both of these concepts are for single CPU.|
|2.||Concept of Context Switching is used.||Concept of Context Switching and Time Sharing is used.|
|3.||In multiprogrammed system, the operating system simply switches to, and executes, another job when current job needs to wait.||The processor is typically used in time sharing mode. Switching happens when either allowed time expires or where there other reason for current process needs to wait (example process needs to do IO).|
|4.||Multi-programming increases CPU utilization by organising jobs .||In multi-tasking also increases CPU utilization, it also increases responsiveness.|
|5.||The idea is to reduce the CPU idle time for as long as possible.||The idea is to further extend the CPU Utilization concept by increasing responsiveness Time Sharing.|
Most of the modern operating systems use Multitasking with more complex setup.