Time-sharing

From Computer History Wiki
Jump to: navigation, search

Time-sharing refers to an operating system which allows the use of a single computer in real time by multiple users at the same time - as opposed to the ealier batch operating systems, in which users submitted 'jobs', which were run, after which the results (print-out, etc) were returned to them.

With the growth of the personal computer, most computers are no longer used in this way. However, the technical features needed to allow time-sharing (e.g. support for multiple processes running simultaneously) are such that current OS's are effectively time-sharing OS's. (In fact, some of the most common current ones, such as Unix and its descendants, such as Linux, started off as actual time-sharing OS's.)

Technical details

Most time-sharing OS's relied upon hardware features to prevent one user (or process) from interfering with another. These features typically included the provision of two modes for the CPU, a 'user' mode in which users ran, and a 'kernel' or 'executive' mode, used by the OS - the former had restricted capabilities (e.g. it was usually not able to peform I/O operations).

Memory protection (originally, usually base and bounds registers) were also used, to prevent a rogue or erroneous used program from damaging other users, or the OS itself. In later machines, virtual memory included this functionality.

However, it was not essential to have hardware support for time-sharing; in computers which provided only an interpreted language (such as BASIC, in the RSTS-11 OS), the interpreter could keep the users from interfering with each other.

One hardware feature which was essential was a clock which could interrupt the computer; this prevented one user's process from going into a loop and monopolizing the machine.

History

'Time-sharing' was a concept much discussed at the end of the 1950's, but there was no general agreement at that point on the modern meaning; e.g. Christopher Strachey used it to mean a computer which was mostly running a mix of batch jobs (a mix, so that CPU time was not wasted while some jobs were waiting for I/O), but made provision for one user to debug a program.

One person who clearly visualized the utility of many users being able to interact in real-time was John McCarthy (then of MIT), who in January 1959 wrote an influential memo which described clearly how the productivity of programmers would be greatly improved by time-sharing (in the modern sense). This eventually led to MIT building CTSS, the first time-sharing OS to go into production service.

Further reading