What is the difference between multitasking and multiprocessing?

Multiprocessing / multitasking Multiprocessing is the use of two or more processors in a single computer. to acheive greater throughput, economy of scale and increased reliability.Most multiprocessing systems use symmetric multiprocessing, SMP, (as opposed to asymmetric) where all processes share the processing load equally. Multitasking on the other hand is best explained by first defining what multiprogramming is. Multiprogramming is used to ensure the best effecient use of the CPU. Whenever a CPU is processing a program, which is loaded in memory, and it must wait for resources or I/O then it will sit idly which is a waste of the CPU. Multiprogramming will store a number of 'jobs' in a queue and whenever the CPU is waiting for I/O etc while executing a particular job, it will immediately open the next job in the queue and process that job until such time as it must wait again, and then it can select the next job in the queue or return to the previous job. In this way the CPU idle time is reduced. Multitasking is a logical extension of multiprogramming in that instead of waiting for a process to reach a stage where it must wait for I/O or some resource, it schedules time for each process that is loaded into memory, such that each process appears to the user to be running at exactly the same time.Another name for multitasking is timesharing.