Time-sharingTime-sharing is an approach to interactive computing in which a single computer is used to provide apparently simultaneous interactive general-purpose computing to multiple users by sharing processor time.
Because early mainframe computers were extremely expensive, it was not possible to allow a single user exclusive access to the machine for interactive use. But because computers in interactive use often spend much of their time idly waiting for user input, it was suggested that multiple users could share a machine by using one user's idle time to service other users. Similarly, small slices of time spent waiting for disk, tape, or network input could be granted to other users.
These solutions alone were not sufficient to build a fully functional time-sharing system. In order to provide smooth service to multiple users, a time sharing system needed a way to deal with multiple processes that did not frequently pause for input/output. This required a hardware interrupt system capable of pausing a running process, and giving processor time to another process.
The concept was first described publicly in early 1957 by Bob Bemer as part of an article in Automatic Control Magazine. The first project to implement a timesharing system was initiated by John McCarthy in late 1957. Although he left to work on other projects, one of the results of the project, known as CTSS, was demonstrated in November 1961. This has a good claim to be the first timesharing system. It remained in use until 1973.
Christopher Strachey is sometimes credited with the invention of the timesharing concept. However, although he used the term timesharing for it, the concept which he described is nowadays known as multitasking. Time-sharing is related to multitasking in that both systems involve a single computer processor executing multiple processes in an apparently simultaneous manner. Time-sharing, however, refers to a computer supporting multiple simultaneous users, while multitasking more broadly terms the simultaneous execution of multiple processes, regardless of the number of users.