Multiprogramming, which was developed to improve performance, also allows time-sharing. Time-sharing operating systems allow many users (from one several hundred) to use a computer system interactively at the same time.
Multiprogramming batched systems provide an environment where the various system resources (for example, CPU, memory, peripheral devices) are utilized effectively. There are some difficulties with a batch system from the point of view of the user.
Time-sharing is also called multitasking, is a logical extension of multiprogramming. Multiples jobs are executed by the CPU switching between them, but the switch occur so frequently that the user may interact with each program while it is running.
An interactive, or hands-on, computer system providers on-line communication between the user and the system. The user gives instructions to the operating system or to a program directly, and receives an immediate response.
Time-sharing operating systems are even more complex than are multiprogramming operating system. As in multiprogramming, several jobs must be kept simultaneously in memory, which required some from of memory management and protection.