Difference Between Multiprogramming, Multitasking, Multiprocessing and Multithreading

In this tutorial you will learn about difference between multiprogramming, multitasking, multiprocessing and multithreading.

Although these terms seems similar but there are some differences between them which are given below.


Multiprogramming is also the ability of an operating system to execute more than one program on a single processor machine. More than one task/program/job/process can reside into the main memory at one point of time. A computer running excel and firefox browser simultaneously is an example of multiprogramming.


Memory layout for Multiprogramming System


Multitasking is the ability of an operating system to execute more than one task simultaneously on a single processor machine. Though we say so but in reality no two tasks on a single processor machine can be executed at the same time. Actually CPU switches from one task to the next task so quickly that appears as if all the tasks are executing at the same time. More than one task/program/job/process can reside into the same CPU at one point of time.


Multitasking System


Multiprocessing is the ability of an operating system to execute more than one process simultaneously on a multi processor machine. In this, a computer uses more than one CPU at a time.


Multiprocessing System


Multithreading is the ability of an operating system to execute the different parts of a program called threads at the same time. Threads are the light wait processes which are independent part of a process or program. In multithreading system, more than one threads are executed parallely on a single CPU.

Image Credits: TutorialsPoint, National Instruments

30 thoughts on “Difference Between Multiprogramming, Multitasking, Multiprocessing and Multithreading”

  1. actually i wanted to ask that it’s written in multiprogramming that at a time two processess are handled by processor but at the same point in multitaking ,totally in contrast , saying no processor can work at same time rather working is simultaneous.
    i wanted to know the exact difference betwwen all these multiprogrammin multiprocesing multitasking

    1. multitasking n multiprogramming both Are same because both use single processor but the only difference is that in multiprogramming more than one job can reside in main memory and on the other hand in multitasking cpu switches so quickly among jobs that it seems all are in mamory but cpu just switches
      only one job can reside in main memory

    2. “””Multiprogramming””””” is the technique of running “””””SEVERAL PROGRAMS””””””” at a time using timesharing.It allows a computer to do several things at the same time.
      “””Multitasking””””” is the logical extension of multiprogramming .The concept of multitasking is quite similar to multiprogramming but difference is that the “””””SWITCHING BETWEEN JOBS”””””””” occurs so frequently that the users can interact with each program while it is running..


      Actually the multiprogramming is an abstract and it is implements based on multitasking,multithreading ,and swapping between main memory and secondary memory………………….It,s all about single processor …………………………………………….
      in multiprogramming only one program run at a time and they share same resources and internally it can be implemented by multitasking ,multithreading ,and swapping between main memory and secondary memory

      and multiprocessing is not possible in single processor ………..one processor can run only one process at a time…….so in multiprocessing for running n process we required n processor and they will run parallely (simultaneously).

      Now, I think you both are clear

  2. Hi friends, from my opinion
    – what was before multiprogramming? Computers operated by operators feeding program and data to the I/Os of the computer (cards with 80 columns, tapes and disc cartridges) with results to disk cartridges and tapes and printers. One task finished – lets start the next… My first job for some time in the early 1970s (IBM 360).
    – multiprogramming is the ability have more than one exeutable program in memory. A scheduler assigns time slices sequentially to those tasks (and or users) that are ready for processing. Most likely, author(s) have had those timesharing computers of the 1970s in mind.
    – multitasking: 1st line is wrong and better explained in the 2nd. Multitasking needs capabilities of above, but the scheduler is aware of priorities. Still same single CPU, which can of course NOT serve more than one task at any given time.
    – multiprocessing: I agree with these few lines.
    – multithreading: only agree to the very first line.
    End of theory: my computer is a 5-year old quadcore Intel-based one with strong graphics. I use it for video processing, input is H.264 video (HD) and separate audio channels, output is .mp4 and DVDs. With inital 32-bit application program, up to 4GB of memory was used, CPU cores were utilized in the range of 5 to 30%. New license, 64-bit application program utilizes more memory and thanks to CUDA, rendering process is faster than viewing the result (1 hr DVD now rendered in less than 1 hr).

  3. Still I am not getting the main difference between the multiprogramming and multitasking.
    Both seems like similar to each other.

  4. Guys,
    In multiprogramming, more than one program lies in the memory i.e. in terms of operating system but only one program is executed at one time, example- we open word, excel, email, internet explorer at the same time. But we will be using only one of them at a time like either we’l be writing mail or typing in word or entering data in excel or googling something on IE.

    But in multi tasking, multiple processes will be running at the same point of time like listening music on media player and parallely googling something on internet explorer.
    Usually, CPU processes only one task at a time but the switching of CPU between the processes (also known as Context Switching) is so fast that it looks like CPU(or processor) is executing multiple processes at a time.

      1. The main difference is of-course how it is implemented internally.
        Meaning, multi-programming has all jobs stored in the memory already and multi-tasking has only 1 task stored in memory at a given point of time. So multi-programming works out much faster than multi-tasking as it doesnt need to do the extra context switch between jobs.
        So, which one to choose now ?
        Multi-programming is employed when memory is not a constraint, but time is.
        Multi-tasking is employed when memory is a constraint.

  5. multi-tasking is a part of multi-programming.
    in multi-programming os , os switches the cpu from one process to another process.
    that switching is called the context switching.
    according to the way of context switching ..we divide multi-programming os into 3 parts.
    1) multi-programmed os
    2) multi-tasking os
    3)time sharing os

    in multi-tasking , swiching is done according to the users.
    nd in time-sharing, switching is done according to time quantum.
    nd in multi-programmed, switching is done according to process’s CPU nd I/O instruction.

    1. moreA multi-user operating system is a computer operating system (OS) that allows multiple users on different computers or terminals to access a single system with one OS on it. than

  6. The only difference between a multiprogramming system and the time sharing system or you can say multitasking is that in multiprogramming more than one processes resides in a “main memory” at any one time but in a multitasking more than one task resides in “cpu” at any one time but for a multitasking it is difficult to run simultaneously the processes in a single cpu so we introduce multiprocessing environment for it………Actually multitasking is just an concept no process run simultaneously in a single processor it just seems that it is running simultaneously actually the computer or the processor switches so fast between the process it seems that it is running concurrently…….i hope this will clear everything!!!! THANK YOU 🙂

  7. Multiprogramming:
    1 Processor core
    multiple jobs
    run without preemption
    Multitasking or time shared:
    1 processor core
    multiple jobs
    scheduling like round robin etc gives sense of parallelism
    context switch at RAM level ..
    more than one processor core
    any scheduling
    1 CPU core (may or may not HT enabled)
    Context switch of threads at processor register level (no RAM context switch)
    Threads switch faster as register local to processor is having data fast access
    Hence no context switch overhead (Hence lightweight)

  8. In the programming world, there are two main ways to improve the throughput of a program, by using multi-threading and by using multitasking. Many Thanks for sharing this.

  9. Difference between Multiprogramming and Multitasking. Multiprogramming allows simultaneous execution of more than one process on a single processor macine. Here cpu switches between the processes so fast that it appears than multiple processes are running simultaneously. It follows non preemptive scheduling.
    Multitasking is an extension of Multiprogramming. Here the cpu follows preemptive scheduling. Time quantum is allocated to each process.

Leave a Comment

Your email address will not be published. Required fields are marked *