Let me attempt to distinguish multi-programming and multi-tasking in simple words here.
We were discussing in a Facebook Group about various questions related to Computer Operator exam preparation. Candidates are really enthusiastic and curious about various aspects of the prescribed syllabus. Many appear there popped up with questions – some very simple and some attempting to crunch advanced topic. One such question asked in the group was:
Please define me multiprogramming, overlapping and multitasking programming
This question is not essentially suitable for computer operator course. This is a kind of bit advanced topic from Operating Systems. Students of BCA, MCA study them. I don’t know how far can I make you understand, but let me try.
I’m leaving off the term overlapping, it lacks the context and harder to explain right here. Let me distinguish between multi-programming and multi-tasking.
In earlier days of computing, machines were much more expensive and by running only one program, the CPU remained idle for most of the time when the program had to read data from i/o devices or wait for user input. This was a huge loss and thus as a solution multi-programming technique was devised in operating system designing.
In multi-programming, operating system could switch to another program when current program is busy reading i/o data or waiting for user input. CPU is always used!
In this technique, operating system keeps multiple programs in memory and switches immediately to another program when one does not need CPU immediately.
After some time, the situation reverted. Machines became cheaper and the cost of manpower is comparatively expensive. We can get a powerful computer for a few thousands but an intelligent engineer? Multiprogramming was devised to make full utilization of CPU but when computer is busy processing one program, user had to wait till it finished. The idleness of manpower is now a huge waste.
So, multitasking was devised to solve this problem. Multitasking is very similar to multiprogramming because it is the logical extension of multiprogramming. The difference lies in how operating system switches programs. In case of multitasking, OS switches among programs depending upon a defined time slot awarded to each program. Thus multitasking is essentially time sharing system.
If there are 5 programs in memory right now, CPU is awarded for first program for a predefined time period (let’s say 500 ms) and after that time, it switches to second program. After another 500ms it switches to third and then fourth and fifth. Finally it returns to first program again to resume the task from where it had left. This creates an illusion as if all those 5 programs are running concurrently.
This way, one computer was able to support multiple users running totally different programs.
Hope this helps you a bit? Please don’t forget to share this post and leave your feedback in the comment below.