Difference between revisions of "Multics"

From Computer History Wiki
Jump to: navigation, search
(Created a brief blurb, mostly oriented towards emulating)
 
m (External links: +Multics commands and active functions)
 
(44 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Multics (''Multi''plexed ''I''nformation and ''C''omputing ''S''ervice) was an early time-sharing operating system for mainframes and minicomputers which has influenced every operating system created since, especially via [[Unix]] (the name of which is a play on words of Multics!).
+
{{Infobox OS
 +
| name = Multics
 +
| image = CISLMultics.jpg
 +
| caption = H6180 Multics at Honeywell CISL
 +
| creator = MIT, with assistance from GE and Bell Labs
 +
| current version = MR 12.6f
 +
| year introduced = December, 1967 (first boot); July, 1969 (experimental use)
 +
| year discontinued = June, 1985 (discontinuation decision); October, 2000 (last system shut down)
 +
| type = Information utility
 +
| architecture = [[GE-645]] initially, various [[Honeywell 6000 series|Honeywell 6000]] models later
 +
}}
  
== Multics Today ==
+
Multics (''Multi''plexed ''I''nformation and ''C''omputing ''S''ervice - although it is ''never'' spelled in capitals) was an early [[time-sharing]] [[operating system]] which has influenced every operating system created since; especially via [[UNIX]] (the name of which is a play on 'Multics'), which was created by [[Bell Laboratories|Bell Labs]] personnel who had worked on Multics, after Bell Labs pulled out of the Multics project.
  
Multics is dead. There are no systems running it today (the last one was [http://slashdot.org/articles/00/11/13/066228.shtml shut down in 2000]. Unfortunately there are also no emulators for Multics, however much of the source code is extant, so should a viable emulator be written (a non-trivial task), it is possible that Multics could be emulated.
+
Multics was intended as an ''information utility''; i.e. a service to which those who wanted information processing would connect, much as people connect to the electric grid for power.
 +
 
 +
This dictated a number of Multics' features, including the modular structure of the hardware (with multiple [[Central Processing Unit|CPUs]] and [[main memory]] banks, fully interconnected, and with the ability to take individual units out of service for maintenance, or to simply add additional units as demand increased over time); extremely robust security (so that individual users in a facility open to all comers would be protected from each other), etc.
 +
 
 +
==Technical aspects==
 +
 
 +
In addition to the modular hardware, and robust security, Multics had a number of other major technical features, some commonplace now (and some still not too common - alas), but major advances when it was first designed (in 1965). They include:
 +
 
 +
* A [[single-level store]]
 +
* [[Dynamic linking]] for libraries, etc
 +
* A [[command processor]] implemented entirely in user code
 +
* A hierarchical [[file system]]
 +
* Separate [[access control list]]s for each 'file'
 +
 
 +
The single-level store architecture of Multics was particularly significant: it discarded the clear distinction between [[file]]s (replaced by ''[[segment]]s'' in Multics) and [[process]] memory. The memory of a process consisted solely of segments that were mapped into its [[address space]]. To read or write to them, the process simply used normal [[instruction]]s; the operating system took care of making sure that all the modifications were saved to [[secondary storage]] ([[disk]]).
 +
 
 +
In modern UNIX terminology, it was as if every file were 'mmap()'ed; however, in Multics there was no concept of process memory, separate from the memory used to hold mapped-in files: all memory in the system was part of some segment, which appeared in the file system; this included the temporary scratch memory of the process, such as its [[kernel]] [[stack]], etc.
 +
 
 +
Multics also implemented [[virtual memory]], which was very new at that time (only a handful of other systems implemented it at that point); but this was not a new idea with Multics.
 +
 
 +
The segmentation and paging in Multics are often discussed together, but it is important to realize that they were not fundamentally connected; one could theoretically have an SLS system which did not page. Paging was added as well for practical reasons.
 +
 
 +
Multics also made popular the now-common technique of having separate per-process stacks in the kernel; this was apparently first seen in the [[Burroughs B5000]], but was not well known.
 +
 
 +
This is an important kernel structuring advance since it greatly simplifies code; if a process discovers, somewhere deep inside a [[subroutine]] [[call stack]] that it needs to wait for an event, it can simply do so right there, instead of having to [[unwind]] its way out, and then return later when the waited-for event has happened.
 +
 
 +
The entire system was written almost entirely in higher-level language ([[PL/I]]) - which was quite rare at the time; the Burroughs B5000 had an OS written in [[ALGOL]], but this was the only previous system to do so.
 +
 
 +
===Hardware===
 +
 
 +
[[Image:MITMultics.jpg|250px|thumb|left|MIT Multics, using H6180's]]
 +
 
 +
Multics ran only on special hardware, which provided hardware support for its single-level store [[architecture]].
 +
 
 +
It initially ran on the [[GE 645]], a modified version of the [[GE 635]]. After GE was bought by Honeywell, a number of models of the [[Honeywell 6000 series]] systems were produced to run Multics on.
 +
 
 +
== Multics today ==
 +
 
 +
Multics is dead. There are no systems running it today (the last one was [http://slashdot.org/articles/00/11/13/066228.shtml shut down in 2000]).
 +
 
 +
There is however now a working [[SIMH]]-based emulator for the Multics DPS-8/M hardware, and with most of the source code still extant, it is now possible to experience the Multics computing environment.
  
 
=== Reviving Multics? ===
 
=== Reviving Multics? ===
  
First, porting Multics would be a Herculean task. The design isn't well-suited for porting. It used specialized hardware built especially for it, this hardware had many features which do not have exact analogues on any other platform today. Even if that could be overcome, Multics was written in PL/I, of course. There are no PL/I compilers available other than commercial ones aimed at large enterprise systems, and which aren't getting any cheaper. The lack of a free Unixland PL/I compiler inhibits any porting task.
+
Porting Multics to alternative hardware would be a worse-than-Herculean task: the design is not well-suited for porting. It used specialized hardware built especially for it, which had many features which do not have exact analogues on any other platform today. In addition, the word length of the machine (18-bit half-words) is explicitly included in many variable declarations in every source module.
 +
 
 +
Even if that could be overcome, Multics was written in PL/I. There are no PL/I compilers available other than commercial ones aimed at large enterprise systems, and which aren't getting any cheaper. The lack of a free Unixland PL/I compiler inhibits any porting task.
  
There have been a few attempts to implement an emulator for one of the systems Multics ran on (usually a Honeywell 6180.) However, at the time of writing, I know of none which is capable of running Multics in any meaningful way. This is apparently tied to the exotic hardware required to support Multics, which is not very well documented.
+
==See also==
  
There is an emulator of sorts [http://sourceforge.net/projects/h6180/ here] though it hasn't been updated in over a year, and apparently it's limited to running simple bootloaders for the time being.
+
* [[Amber Operating System]]
 +
* [[MagicSix]]
  
[[User:Lucky|Lucky]] 14:00, 20 July 2009 (UTC)
+
==External links==
  
== See Also ==
+
* [http://www.multicians.org Multicians] - a great source of info
 +
** [https://www.multicians.org/multics-commands.html Multics commands and active functions] (from ''Multics Pocket Guide: Commands and Active Functions'' - AW17)
 +
** [https://multicians.org/history.html History]
 +
*** [https://multicians.org/ge635.html The GE-635s at Project MAC and BTL]
 +
*** [https://multicians.org/phase-one.html Phase One]
 +
*** [https://multicians.org/phx.html Multics in Phoenix]
 +
** [https://multicians.org/biblio.html Bibliography] - very extensive; links to most of the entries
 +
*** [https://multicians.org/managerial.html A Managerial View of the Multics System Development]
 +
*** [https://multicians.org/f7y.html Multics -- the first seven years]
 +
*** [http://www.acsac.org/2002/papers/classic-multics-orig.pdf Multics Security Evaluation: Vulnerability Analysis, ESD-TR-74-193]
 +
*** [http://www.acsac.org/2002/papers/classic-multics.pdf Thirty Years Later: Lessons from the Multics Security Evaluation]
 +
** [https://www.multicians.org/multics-images.html Image Gallery] - many of people, some of machines <!--
 +
*** [https://www.multicians.org/mulimg/h6180-doors-open-big.jpg CISL Honeywell 6180 Multics machine, 1976] -->
 +
** [https://www.multicians.org/ge635.html The GE-635s at Project MAC and BTL] - much of the early story of Multics
 +
** [https://multicians.org/verity.pdf Multics Users Face Their Maker] - good, long, contemporary trade press article on the effects of the decision to terminate the product
 +
* [http://web.mit.edu/multics-history/ Multics] - MIT's Multics site
 +
** [http://web.mit.edu/multics-history/source/Multics_Internet_Server/Multics_sources.html Multics sources]
 +
* [https://www.csail.mit.edu/multics-documents Multics documents] - scans at CSAIL of much material, including a complete MSPM
 +
* [http://web.mit.edu/Saltzer/www/multics.html M.I.T. Multics] - Saltzer's Multics site
 +
** [http://people.csail.mit.edu/saltzer/Multics/Multics-Documents/Multics-Documents.html Multics documents] - Saltzer's document collection
 +
* [http://www.bitsavers.org/pdf/honeywell/large_systems/multics/ Honeywell Multics] - hardware and software manuals at [[Bitsavers]]
 +
** [http://www.bitsavers.org/pdf/honeywell/large_systems/multics/AG95_multicsVM_Jun72.pdf The Multics Virtual Memory] - this version contains, starting on pg. 174 of the PDF, a discussion of the changes from the 645 to the 6180
 +
** [http://www.bitsavers.org/pdf/honeywell/large_systems/multics/AN61A_storageSysPLM_Sep78.pdf Multics Storage System Program Logic Manual] - detailed description of the Multics paging/segmentation mechanisms
 +
** [http://bitsavers.org/pdf/honeywell/large_systems/multics/AM81-04_maintPrcds_Nov86.pdf Multics System Maintenance Procedures Manual] - describes the multitude of front panels
 +
* [http://s3data.computerhistory.org/brochures/honeywell.multicssystem.1975.102646162.pdf The Multics System] - marketing brochure from Honeywell
 +
* [https://web.archive.org/web/20230914064053/https://wiki.livingcomputers.org/doku.php?id=multics Multics] - Multics page at the [[Living Computer Museum]] DokuWiki (archived)
 +
* [http://ringzero.wikidot.com/ Multics reborn wiki]
 +
* [https://multics-wiki.swenson.org/ Running Multics wiki]
 +
* [https://sourceforge.net/projects/dps8m/ DPS-8/M emulator]
 +
* [http://sourceforge.net/projects/h6180/ H6180 emulator (abandoned)]
 +
* [https://www.cs.virginia.edu/~evans/greatworks/MULTICS.pdf multics] - useful summary
 +
* [https://softpanorama.org/History/multics.shtml Multix OS -- Pioneer of time sharing]
 +
* [https://www.youtube.com/watch?v=jni7wk7bjxA Multics booting] - A video of a H6180 CPU front panel hooked up to a SIMH H6180 emulation booting Multics
  
[http://www.multicians.org Multicians -- a great source of info.]
+
[[Category: Operating Systems]]

Latest revision as of 14:33, 16 September 2024


Multics
CISLMultics.jpg
H6180 Multics at Honeywell CISL
Type: Information utility
Creator: MIT, with assistance from GE and Bell Labs
Architecture: GE-645 initially, various Honeywell 6000 models later
This Version: MR 12.6f
Date Released: December, 1967 (first boot); July, 1969 (experimental use)
Date Discontinued: June, 1985 (discontinuation decision); October, 2000 (last system shut down)


Multics (Multiplexed Information and Computing Service - although it is never spelled in capitals) was an early time-sharing operating system which has influenced every operating system created since; especially via UNIX (the name of which is a play on 'Multics'), which was created by Bell Labs personnel who had worked on Multics, after Bell Labs pulled out of the Multics project.

Multics was intended as an information utility; i.e. a service to which those who wanted information processing would connect, much as people connect to the electric grid for power.

This dictated a number of Multics' features, including the modular structure of the hardware (with multiple CPUs and main memory banks, fully interconnected, and with the ability to take individual units out of service for maintenance, or to simply add additional units as demand increased over time); extremely robust security (so that individual users in a facility open to all comers would be protected from each other), etc.

Technical aspects

In addition to the modular hardware, and robust security, Multics had a number of other major technical features, some commonplace now (and some still not too common - alas), but major advances when it was first designed (in 1965). They include:

The single-level store architecture of Multics was particularly significant: it discarded the clear distinction between files (replaced by segments in Multics) and process memory. The memory of a process consisted solely of segments that were mapped into its address space. To read or write to them, the process simply used normal instructions; the operating system took care of making sure that all the modifications were saved to secondary storage (disk).

In modern UNIX terminology, it was as if every file were 'mmap()'ed; however, in Multics there was no concept of process memory, separate from the memory used to hold mapped-in files: all memory in the system was part of some segment, which appeared in the file system; this included the temporary scratch memory of the process, such as its kernel stack, etc.

Multics also implemented virtual memory, which was very new at that time (only a handful of other systems implemented it at that point); but this was not a new idea with Multics.

The segmentation and paging in Multics are often discussed together, but it is important to realize that they were not fundamentally connected; one could theoretically have an SLS system which did not page. Paging was added as well for practical reasons.

Multics also made popular the now-common technique of having separate per-process stacks in the kernel; this was apparently first seen in the Burroughs B5000, but was not well known.

This is an important kernel structuring advance since it greatly simplifies code; if a process discovers, somewhere deep inside a subroutine call stack that it needs to wait for an event, it can simply do so right there, instead of having to unwind its way out, and then return later when the waited-for event has happened.

The entire system was written almost entirely in higher-level language (PL/I) - which was quite rare at the time; the Burroughs B5000 had an OS written in ALGOL, but this was the only previous system to do so.

Hardware

MIT Multics, using H6180's

Multics ran only on special hardware, which provided hardware support for its single-level store architecture.

It initially ran on the GE 645, a modified version of the GE 635. After GE was bought by Honeywell, a number of models of the Honeywell 6000 series systems were produced to run Multics on.

Multics today

Multics is dead. There are no systems running it today (the last one was shut down in 2000).

There is however now a working SIMH-based emulator for the Multics DPS-8/M hardware, and with most of the source code still extant, it is now possible to experience the Multics computing environment.

Reviving Multics?

Porting Multics to alternative hardware would be a worse-than-Herculean task: the design is not well-suited for porting. It used specialized hardware built especially for it, which had many features which do not have exact analogues on any other platform today. In addition, the word length of the machine (18-bit half-words) is explicitly included in many variable declarations in every source module.

Even if that could be overcome, Multics was written in PL/I. There are no PL/I compilers available other than commercial ones aimed at large enterprise systems, and which aren't getting any cheaper. The lack of a free Unixland PL/I compiler inhibits any porting task.

See also

External links