Whats the difference between multitasking, multiprogramming & multiprocessing
This comes regularly for my university OS exams and I can\'t find a good answer. I
MULTIPROCESSING is like the OS handling the different jobs in main memory in such a way that it gives its time to each and every job when other is busy for some task such as I/O operation. So as long as at least one job needs to execute, the cpu never sit idle. and here it is automatically handled by the OS, without user interaction with computer.
But when we say about MULTITASKING, the user is actually involved with different jobs as at one time - minesweeper or checking mail or anything. The cpu executes multiple jobs by switching among them, but the switching is so fast that user has the illusion that both the applications are running simultaneously.
So the main difference between mp and mt is that in mp the OS is handling different jobs in main memory in such a way that if some job is waiting for something then it will jump for the next job to execute. And in mt the user is in interaction with the system and getting the illusion as both or any of the applications are running simultaneously.
Multiple threads can exist in a single process. The threads that belong to the same process share the same memory area (can read from and write to the very same variables, and can interfere with one another). On the contrary, different processes live in different memory areas, and each of them has its own variables. In order to communicate, processes have to use other channels (files, pipes or sockets).
If you want to parallelize a computation, you're probably going to need multithreading, because you probably want the threads to cooperate on the same memory.
Speaking about performance, threads are faster to create and manage than processes (because the OS doesn't need to allocate a whole new virtual memory area), and inter-thread communication is usually faster than inter-process communication. But threads are harder to program. Threads can interfere with one another, and can write to each other's memory, but the way this happens is not always obvious (due to several factors, mainly instruction reordering and memory caching), and so you are going to need synchronization primitives to control access to your variables.
Source
None of the above answers except Mr Vaibhav Kumar's are clear or not ambiguous. [sorry, no offense]
Both multi programming and tasking are same concept of switching task in processor, difference is in the concept and reason of the switching.
MProgramming: to not keep processor idle when active task needs longer IO or other non CPU response then, processor loads and works on another task that is not waiting for IO and ready for process.
MTasking: even after MPrograming, to user it may feel like only one task is executing and another is simply waiting to come to cpu. So the active task is also swapped from active CPU and kept aside and another task is brought in CPU for a very small fraction of human time[second], and swapped back to the earlier task again. In this way user will feel both task are alive in CPU at same time. But actually each task is active only once at a given CPU time[in micro or nano second]
And MProcessing is, like my computer have quad core, so I use 4 processor at a time, means 4 different multiprogramming instances happen in my machine. And these 4 processors does another numerous no of MTasking.
So MProcessing>MProgramming>Mtasking
And MThreading n another breakup of each task. that also to give user a happy life. Here multiple tasks[like word doc and media player] are not coming in picture, rather small subtasks like coloring of text on word and automatic spell check in word are part of same word executable.
not sure if I was able to make clear all confusions...
Multiprogramming: It means running several programs on computer.Here user cannot interact with the system,everything is decided by the OS.
Multitasking: It is a logical extension of multiprogramming.It means running several tasks on computer.Switching between the jobs is so fast that the user can interact with the system.
Multithreading: Basically seen when more number of clients access the server.
.
.
Both multiprogramming and multitasking solve different problems, though they use similar method of switching between the processes.
Multiprogramming : In the early days, it was seen that at times certain processes where using peripherals (e.g.: I/O). In such cases, the CPU remained idle. To use the CPU more efficiently, it was prudent to load multiple processes in the memory. This way, if a certain process were to use the peripheral, certain other process would use the CPU. This was multiprogramming in action.
Multitasking : To the end user, multiple processes had to appear running at the same time. This was mocked by switching between different processes and by making them run on the CPU simultaneously. This was the idea behind multitasking.