Difference between revisions of "Time-sharing"
(A decent start) |
m (+links, avoid redirs) |
||
(8 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | '''Time-sharing''' refers to an [[operating system]] which allows the use of a single computer | + | '''Time-sharing''' refers to an [[operating system]] which allows the use of a single computer by multiple [[user]]s at the same time - as opposed to the earlier [[batch operating system]]s, in which users submitted '[[job]]s', 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 [[process]]es 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 [[ | + | 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 [[process]]es 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.) |
− | 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 | + | ==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 [[Central Processing Unit|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 perform [[input/output|I/O]] operations). | ||
+ | |||
+ | [[Memory management|Memory protection]] (originally, usually [[base and bounds]] [[register]]s) was 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 [[interpreter|interpreted]] [[programming language|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 [[mainframe]] 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 multiple users being able to interact with such a computer in real-time was John McCarthy (then of [[Massachusetts Institute of Technology|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 [[Compatible Time-Sharing System|CTSS]], the first time-sharing OS to go into production service. | ||
+ | |||
+ | {{semi-stub}} | ||
+ | |||
+ | ==External links== | ||
+ | |||
+ | * [http://www-formal.stanford.edu/jmc/history/timesharing-memo.html Memorandum to P. M. Morse Proposing Time Sharing] | ||
+ | * [http://www-formal.stanford.edu/jmc/history/timesharing/timesharing.html Reminiscences on the History of Time Sharing] | ||
+ | * [https://web.stanford.edu/~learnest/nets/timesharing.htm Who Invented Timesharing?] | ||
+ | |||
+ | [[Category: OS Basics]] |
Latest revision as of 01:53, 23 January 2023
Time-sharing refers to an operating system which allows the use of a single computer by multiple users at the same time - as opposed to the earlier 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 perform I/O operations).
Memory protection (originally, usually base and bounds registers) was 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 mainframe 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 multiple users being able to interact with such a computer 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.