Multiprogramming is the ability of an OS to execute more than one job on a single processor. More than one task/program/job/process can reside in the main memory at one point in time. its non-preemptive (1 process complete successfully then another process) system. Suppose inside RAM number of a job(1st job, 2nd job, 3rd job) for processing, CPU is starting process 1st job in the meantime 1st job tells I need input/output for finishing my work. At that time CPU has no work its CPU idleness. for removing CPU idleness 2nd job can start. its give CPU utilization.

Multi-tasking is the ability of an OS to execute multiple jobs at the same time within a single processor. For example, the Windows OS is running 2 programs ( VLC player, Chromo browser) running them at the same time, as when you see output appearing in both windows at the same time. If your computer has only one core/CPU, then that core is switching back and forth between them, about every 1 millisecond. That follows time sharing. It gives CPU utilization with the fast response time.



Multi-threading is the ability to do different independent jobs within a single program. MSWord is single program while you are writing the (spelling, grammar) autocorrection is performed simultaneously.



Multi-Processing (Multiple processors) Computer use more than one CPU for multiple task processing.