Difference between multitasking, multithreading and multiprocessing?

Multiprogramming: More than one task/program/job/process can reside into the main memory at one point of time. This ability of the OS is called multiprogramming.

Multitasking: More than one task/program/job/process can reside into the same CPU at one point of time. This ability of the OS is called multitasking.


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>Mtasking>MProgramming

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...


Paraphrasing wikipedia:

Multiprogramming - A computer running more than one program at a time (like running Excel and Firefox simultaneously) http://en.wikipedia.org/wiki/Multiprogramming

Multiprocessing - A computer using more than one CPU at a time http://en.wikipedia.org/wiki/Multiprocessing

Multitasking - Tasks sharing a common resource (like 1 CPU) http://en.wikipedia.org/wiki/Computer_multitasking#Multithreading

  • Thus, something like multithreading is an extension of multitasking.