Multi tasking is a logical extension of multiprogramming. Classicaly in a multiprogramming environment, more than one user shares the cpu and the cpu rapidly switches from one user to another, providing a complete transperency from each othe. In multitasking, the user is substituted by programs i.e more than one program shares the cpu and the cpu rapidly switches from one program to another. Actualy a software residing on disk is a program. When it brought into RAM for execution is known as process or task and when it is inside the cpu and executing, is known as thread. So multiprograaming is basicaly for multi-users, and multitasking is for single user with multiple programs. Since most modern OS s supports both, so they are often spell interchangibly.