Difference between revisions of "Incompatible Timesharing System"

From Computer History Wiki
Jump to: navigation, search
m (External links: +ITS on the PiDP 10)
(Add a brief description of the OS's functionality)
Line 10: Line 10:
 
The '''Incompatible Timesharing System''' (usually '''ITS''') was an early [[time-sharing]] [[operating system]]; initially for the [[PDP-6]], and later for [[PDP-10]]'s. It was developed at MIT in the [[MIT Artificial Intelligence Laboratory|Artificial Intelligence Lab]], after [[Multics]] was done by [[Project MAC]]. It first became operational in July, 1967, after a very short design and implementation period, starting earlier that year.
 
The '''Incompatible Timesharing System''' (usually '''ITS''') was an early [[time-sharing]] [[operating system]]; initially for the [[PDP-6]], and later for [[PDP-10]]'s. It was developed at MIT in the [[MIT Artificial Intelligence Laboratory|Artificial Intelligence Lab]], after [[Multics]] was done by [[Project MAC]]. It first became operational in July, 1967, after a very short design and implementation period, starting earlier that year.
  
[[Image:mit-mc.jpg|thumb|right|The KL10 MC machine at MIT]]
+
The earliest versions ran on the PDP-6, using the [[base and bounds]] [[memory management]] [[hardware]] native to that machine. Later versions ran on [[KA10]]s which were modified with MIT-designed and built [[virtual memory|paging]] [[hardware]] (which that generation of PDP-10 [[CPU]] did not have). It later ran on the [[KL10]] and [[KS10]] models as well, in both cases running custom [[microcode]] that emulated the operation of the MIT paging box.
 +
 
 +
ITS was one of the first OS's connected to the [[ARPANET]], and it was on an ITS system that the first versions of [[Emacs]], [[MACLISP]], [[Scheme]], and [[CLU]] were created, as well as notable games such as [[Zork]].
 +
 
 +
==Architecture and features==
 +
 
 +
[[Image:KnightTV.png|thumb|left|400px|Output from the PEEK program, showing several process trees]]
 +
 
 +
It was broadly similar to many other operating system of its era; each user had a [[terminal]], from which they controlled a [[tree]] of [[process]]es. The top-level process was normally a [[command processor]] - in ITS' case, the debugger [[DDT]], extended with the usual set of commands: list the [[file]]s in a [[directory]], etc. [[Application]]s (such as [[editor]]s) each had their own process.
 +
 
 +
A process tree could be detached from its controlling terminal (e.g. if a [[modem]] was hung up); the user could reconnect to the system and hook back up to their process tree.
 +
 
 +
Early versions of the system only supported [[swapping]], but paging was added as soon as the custom hardware to support it was done. Pages from other processes could be mapped into a process' [[address space]], as could pages from files.
 +
 
 +
Processes had full [[interrupt]] handling available; the system also supported [[lock]]s, so that if a process were unexpectedly killed, all locks 'owned' by the process were automatically freed.
 +
 
 +
It had the unusual feature of supporting virtual [[peripheral]]s, implemented with demand-created processes into which [[object code]] to implement the device was loaded from the [[file system]]. This was used, among other things, to make each machine's file system accessible from the others, using their ARPANET connections to carry the data. (This may have been the first example of a 'network file system' in any OS.)
  
The earliest versions ran on the PDP-6, using the [[base and bounds]] [[memory management]] [[hardware]] native to that machine. Later versions ran on [[KA10]]s which were modified with MIT-designed and built [[virtual memory|paging]] hardware (which that generation of PDP-10 did not have). It later ran on the [[KL10]] and [[KS10]] models as well, in both cases running custom [[microcode]] that emulated the operation of the MIT paging box.
+
The file system was not very adventurous: it only supported a single level of directories; but it did support [[symbolic link]]s. (File names had four parts: 'device: direct; fn1 fn2'.) It did have one novel capability (which [[TENEX]] also shared); version numbers. When file "FOO >" was opened for reading, if "FOO 22", "FOO 23" and "FOO 24" all existed, 'FOO 24' was opened; opening "FOO <" opened 'FOO 24'. For writing, opening "FOO >" created 'FOO 25'.
  
ITS was one of the first OS's connected to the [[ARPANET]], and it was on an ITS system that the first versions of [[Emacs]], [[Zork]], [[MACLISP]], [[Scheme]], and [[CLU]] were created.
+
ITS also supported terminal-type-independent [[video terminal]] output; applications would give commands such as 'clear screen', which the system would convert into the appropriate strings for the user's particular terminal.
  
 
==Instances==
 
==Instances==
 +
 +
[[Image:mit-mc.jpg|thumb|right|The KL10 MC machine at MIT]]
  
 
During much of its operational lifetime, ITS ran on only a handful of machines:
 
During much of its operational lifetime, ITS ran on only a handful of machines:
Line 31: Line 49:
  
 
==Milestones==
 
==Milestones==
 
[[Image:KnightTV.png|thumb|right|400px|Output from the PEEK program on ITS]]
 
  
 
* 1967 - First version for PDP-6
 
* 1967 - First version for PDP-6
Line 98: Line 114:
 
** [https://github.com/PDP-10/its-vault/tree/master/files/ ITS files]
 
** [https://github.com/PDP-10/its-vault/tree/master/files/ ITS files]
 
** [https://github.com/PDP-10/its/tree/master/src ITS source]
 
** [https://github.com/PDP-10/its/tree/master/src ITS source]
 +
** [https://github.com/PDP-10/its-vault/blob/master/files/sysdoc/_calls.127 ITS Calls] - documentation on all symbolic ("new") system calls
 
** [https://github.com/PDP-10/its-vault/blob/master/files/sysdoc/its.histry SYSDOC; ITS HISTRY] - log of changes from ITS 946 to 1263
 
** [https://github.com/PDP-10/its-vault/blob/master/files/sysdoc/its.histry SYSDOC; ITS HISTRY] - log of changes from ITS 946 to 1263
 
** [https://github.com/PDP-10/its-vault/blob/master/files/_info_/its.primer An Introduction to ITS for the MACSYMA User] - good intro overview to ITS
 
** [https://github.com/PDP-10/its-vault/blob/master/files/_info_/its.primer An Introduction to ITS for the MACSYMA User] - good intro overview to ITS
Line 110: Line 127:
 
** [http://its.victor.se/mailman/listinfo/its-hackers_its.victor.se ITS-hackers mailing list]
 
** [http://its.victor.se/mailman/listinfo/its-hackers_its.victor.se ITS-hackers mailing list]
 
* [https://github.com/larsbrinkhoff/its-manual/wiki ITS Manual] - a new 'Intro to ITS' manual
 
* [https://github.com/larsbrinkhoff/its-manual/wiki ITS Manual] - a new 'Intro to ITS' manual
* [https://github.com/larsbrinkhoff/its-manual/wiki/ITS-on-the-PiDP-10 ITS on the PiDP 10]
+
** [https://github.com/larsbrinkhoff/its-manual/wiki/ITS-on-the-PiDP-10 ITS on the PiDP 10]
 
* [http://github.com/larsbrinkhoff/pdp10-its-disassembler Unix tools for working with ITS files]
 
* [http://github.com/larsbrinkhoff/pdp10-its-disassembler Unix tools for working with ITS files]
 
* [http://ana-3.lcs.mit.edu/~jnc/tech/pdp10/ITS_Hardware_Memo_2.pdf ITS Hardware Memo #2] - Specification for the MIT paging box
 
* [http://ana-3.lcs.mit.edu/~jnc/tech/pdp10/ITS_Hardware_Memo_2.pdf ITS Hardware Memo #2] - Specification for the MIT paging box
 
* [https://github.com/PDP-10/its/issues/1232 The Magic Switch]
 
* [https://github.com/PDP-10/its/issues/1232 The Magic Switch]
  
[[Category:PDP-10 Operating Systems]]
+
[[Category: PDP-10 Operating Systems]]
 
[[Category: Non-DEC Operating Systems]]
 
[[Category: Non-DEC Operating Systems]]

Revision as of 01:41, 27 July 2023


ITS
Type: Multi-tasking, multi-user, virtual memory
Creator: MIT AI Lab
Architecture: PDP-10
This Version: 1651
Date Released: July, 1967


The Incompatible Timesharing System (usually ITS) was an early time-sharing operating system; initially for the PDP-6, and later for PDP-10's. It was developed at MIT in the Artificial Intelligence Lab, after Multics was done by Project MAC. It first became operational in July, 1967, after a very short design and implementation period, starting earlier that year.

The earliest versions ran on the PDP-6, using the base and bounds memory management hardware native to that machine. Later versions ran on KA10s which were modified with MIT-designed and built paging hardware (which that generation of PDP-10 CPU did not have). It later ran on the KL10 and KS10 models as well, in both cases running custom microcode that emulated the operation of the MIT paging box.

ITS was one of the first OS's connected to the ARPANET, and it was on an ITS system that the first versions of Emacs, MACLISP, Scheme, and CLU were created, as well as notable games such as Zork.

Architecture and features

Output from the PEEK program, showing several process trees

It was broadly similar to many other operating system of its era; each user had a terminal, from which they controlled a tree of processes. The top-level process was normally a command processor - in ITS' case, the debugger DDT, extended with the usual set of commands: list the files in a directory, etc. Applications (such as editors) each had their own process.

A process tree could be detached from its controlling terminal (e.g. if a modem was hung up); the user could reconnect to the system and hook back up to their process tree.

Early versions of the system only supported swapping, but paging was added as soon as the custom hardware to support it was done. Pages from other processes could be mapped into a process' address space, as could pages from files.

Processes had full interrupt handling available; the system also supported locks, so that if a process were unexpectedly killed, all locks 'owned' by the process were automatically freed.

It had the unusual feature of supporting virtual peripherals, implemented with demand-created processes into which object code to implement the device was loaded from the file system. This was used, among other things, to make each machine's file system accessible from the others, using their ARPANET connections to carry the data. (This may have been the first example of a 'network file system' in any OS.)

The file system was not very adventurous: it only supported a single level of directories; but it did support symbolic links. (File names had four parts: 'device: direct; fn1 fn2'.) It did have one novel capability (which TENEX also shared); version numbers. When file "FOO >" was opened for reading, if "FOO 22", "FOO 23" and "FOO 24" all existed, 'FOO 24' was opened; opening "FOO <" opened 'FOO 24'. For writing, opening "FOO >" created 'FOO 25'.

ITS also supported terminal-type-independent video terminal output; applications would give commands such as 'clear screen', which the system would convert into the appropriate strings for the user's particular terminal.

Instances

The KL10 MC machine at MIT

During much of its operational lifetime, ITS ran on only a handful of machines:

  • The AI Lab PDP-6, serial number 2. (The Dynamic Modeling group also had a PDP-6, not much used.)
  • Three KA10s: AI, DM, ML. Their serial numbers were 8, 144, and 198.
  • One KL10: MC, serial number 1038.

Due to failing hardware, the PDP-6 was shut down in the late 1970s, and physically removed in the early 1980s. The KA10s followed shortly after, but some were replaced with KS10s. By 1990 all MIT machines were shut down permanently.

In modern times, ITS runs on a KS10 at the Living Computer Museum; it was previously MIT-AI. The museum also has the KL10 MIT-MC in storage. ITS also runs on several software emulators.

Some information on installing & images can be found here.

Milestones

  • 1967 - First version for PDP-6
  • 1969 - Ported to KA10
  • 1969 - Second PDP-6 at Dynamic Modeling group
  • 1970 - Second KA10 at Dynamic Modeling group
  • 1971 - Connected to ARPANET, version ~670
  • 1972 - Third KA10 at Mathlab group
  • 1975 - Ported to KL10, version 915
  • 1978 - PDP-6 support dropped, version 1115
  • 1984 - All KA10 machines shut down, first KS10 arrives
  • 1985 - Ported to KS10, version 1488, three more KS10s
  • 1986 - KS ITS distributed outside MIT (SI, FU, PM, DX)
  • 1988 - KL10 machine shut down
  • 1990 - All MIT KS10 machines shut down; last MIT version 1644
  • 1992 - First run on KS10 software simulator
  • 2001 - First simulator available on Internet
  • 2010 - First run on an FPGA PDP-10 implementation
  • 2017 - First run on KA10 software simulator

Notable contributions

The Artificial Intelligence PDP-6 and PDP-10 were host to many influential programs: TECO (adopted from the one on RLE PDP-1), Logo (coming from BBN), Mac Hack VI, MACLISP, Scheme, EMACS; it was also used to bootstrap the LISP machine hardware and software.

The Dynamic Modeling PDP-10 was used to develop Muddle, MAZE, the first C compiler outside Bell Labs, CLU, and Zork.

The Mathlab PDP-10 was used to develop Macsyma, but was later supplanted by a dedicated Macsyma Consortium KL10.

Early artifacts

The earliest ITS code on record is Gerald Sussman's printed listing of version 138 dating from 1967.

The next is ITS version 671 from early 1971. It's a complete binary core image, including Salvager and Exec DDT. It runs on Richard Cornwell's KA10 simulator with Systems Concepts DC-10 disks.

Also on the same tape is the earliest source code version, ITS 672.

Stories

ITS, and the hacker culture around it, produced innumerable stories:

Magic/More magic switch

The "magic switch" which had been attached to the MIT-AI PDP-10

The AI ITS machine had a mysterious experimental two-position switch attached to the machine at some point, labelled 'Magic' in one position, and 'More magic' in the other. It was only connected to ground, but on several occasions it was observed that throwing the switch crashed the machine!

See also

External links