HTML updated 2/25/95==================================================================== The proposed Multics FAQ Glossary project has grown to about 150K of text, as people remember terms and definitions we used. I tried to post a version of it about the 10th, but it never reached the east coast.. so I am sending this to Bernie so he can post it. There are still entries with a ? meaning they need to be written or expanded. We seem to be tending toward more of an encyclopedia format than a dictionary; some entries diverge from their subject in interesting ways. If you see anything that would offend or belittle anyone, it's unintentional; point it out and I will remove or reword it. I have tried to stick to present tense describing features of Multics that still exist, but it's easy to slip into past tense: if you spot any of these, point them out to me so I can fix them too. Send me contributions and I'll merge them into the file, and post it March 1 with the other FAQs. -- ==================================================================== Glossary of Multics acronyms and terms. Last modified: Mon Feb 20 1995 Please post corrections to alt.os.multics or mail them to me. Entries by Tom Van Vleck unless noted. 02/06/95 THVV corrections from Bernie Greenberg 02/06/95 THVV corrections from Bruce Sanderson 02/07/95 THVV Major additions from Bernie 02/08/95 THVV Major additions from Bernie 02/09/95 THVV Corrections from Richard Shetron 02/09/95 THVV Major additions from Bernie 02/09/95 THVV Major additions from Bernie 02/12/95 THVV Additions from Vince Scarafino 02/14/95 THVV Additions from Dave Vinograd 02/14/95 THVV Additions from Conrad Longmore 02/14/95 THVV Major additions from Bernie 02/15/95 THVV Major additions from Bernie 02/15/95 THVV Additions from Earl Boebert 02/15/95 THVV Info on SIPB from Bob Frankston 02/17/95 THVV Major additions from Bernie 1ISG Name of a group in the Air Force that operated the last of the AFDSC Multices in the Pentagon. 1050 First IBM terminal with Selectric mechanism. Used on CTSS and Multics. Built into a desk with a desk-side box for the electronics. Row of switches above the keyboard for doing things like controlling the paper tape reader. 2741 IBM terminal with Selectric mechanism, came after the 1050. Smaller desk. Widely used on CTSS and Multics. 6180 The second-generation Multics machine, with major architectural improvements over the 645. Also, the generic term for the architecture of all subsequent Multics machines produced by Honeywell. 6.36 A simulation environment, that simulated the 645 machine (at first called the 636) on the GE635 under GECOS. This environment was used for initial debugging and bringup of Multics in the 1966 time frame. 645 The computer system that Multics first ran on, produced by General Electric. 7punch Binary card format used by the I/O daemon for punching and reading. Inherited from CTSS. Named after the 5-7 punch in column 1 that identifies the format. abbrev Steve Webber wrote this command, which becomes the user's command processor, remembering whatever used to be the command processor, and expands user-defined abbreviations before parsing the command line. This tool is a direct descendant of . SAVED, ("dot saved") on CTSS, written by Noel Morris and Tom Van Vleck. ABR Address Base Register. The "segmentation" registers in the 645 CPU. See pointer register. absentee The Multics absentee facility is like traditional batch processing, or the UNIX cron facility. A user creates an exec_com file and submits it using the submit_abs_request command, and the answering service will pick it off the queue and run it later. absolute (1) An absolute pathname descends from the root. It begins with >. (2) An absolute address, as opposed to a "paged," "virtual," or "appended" address, is a physical core address. The CPU uses absolute addresses in the DBR and in PTWs, and during initial system startup. absolute mode The hardware startup mode of the 6180 and 645 processors when the hardware mode knob is turned to "Multics". The CPU behaves more less like a GCOS processor, and paging and segmentation don't seem to be operative. In fact, the distinction is subtle: When the "mode" knob is at "GCOS", paging and segmentation really aren't there. But in "Multics" position, "absolute" mode is equivalent to running in an unpaged segment at location 0, and it is even possible to reference segmented addresses: appending unit activity is optional and per control unit cycle. An attempt to actually transfer to an address "in a segment" throws the CPU into appending mode, where instruction fetches and non-indirect, non-pointer register references come from the segment pointed to by the PPR. Also, faults and interrupts put the CPU back in absolute mode, but the second instruction of the fault vector is always, in Multics, a transfer to a segmented address, restoring appending mode (even though the SCU instruction preceding it that stored the very status of the appending unit, inter alia, was executed in absolute mode!) See bootstrap1. BOS was not run in absolute mode, although it transferred to bootstrap1 in absolute mode. [BSG] access control The Multics feature that checks if a user can do something. The user identity, established at login, is checked against the ACL of the thing being accessed. accounting Multics comes with an elaborate accounting system, that summarizes usage and produces multiple printed billing reports, written by Tom Van Vleck. active Said of a segment. An active segment is a segment, that is to say a file (see virtual memory), that has a page table in core. Only a small fraction of the files in the whole system have page tables in core at any one time, namely, those "actively" being used. Segment control keeps a list of all processes that have SDWs for each active segment, to be able to disconnect them when the segment is "deactivated" or access to it is changed. [BSG] active function A command, enclosed in brackets, inserted in a command line. The shell invokes the inserted command and captures its return value and put the value in the command line for further evaluation. For example, delete [files *.pl1] deletes all PL/1 files in the working directory. The term "active function" comes from Calvin Mooers' TRAC language, and was adopted to name a feature previously called "interjected commands" in earlier versions of the shell. ACL Access Control List. A list of user names and project names in combination specifying individual and group access rights to a segment. First introduced in Multics. ACS Access Control Segment. A segment whose effective access determines access to some other resource. ACSs for peripheral devices are kept in >sc1>rcp. ACSs for logical volumes are kept in >lv. ACTC Multics site: (Calgary Alberta, Canada). AcuRay Later name for Industrial Nucleonics. ADP Advanced Development Program. Honeywell term for a new system architecture in the late 1970s. AED Algol Extended for Design. Language developed by MIT's Electronic Systems Laboratory in the mid 1960s. AEP Advanced Engineering Program. A GE/Honeywell co-op program. Selected students rotated through jobs in LISD while getting a Master's degree. AFDSC Air Force Data Services Center. Located in the Pentagon, this site had 5 systems: two were multilevel secure, and one was unclassified. AIM Access Isolation Mechanism. The underpinnings for multilevel security. Produced by Project Guardian, and crucial in the eventual B2 rating for Multics. ALGOL 68 Done by HIS UK in the 1980s. ALM Assembly Language for Multics, which was supposed to be an oxymoron. Multics' then-radical innovation of being implemented in a higher-level language (see PL/I) relegated ALM, Multics' assembler, to a place of strong official disfavor, and suggestions for improvements to the assembler or its language were routinely dismissed for many years, placing additional burdens upon them who had to use it (e.g., page control, traffic control, BOS) for whatever reasons. An integrated macro feature (Steve Webber's macro-preprocessor MEXP, integrated by Greenberg and Morris, both regular ALM users) did not appear until 1977 or so. ALM was also used to define programs' data bases, as PL/I glaringly lacks the ability to define globally-addressable static data objects. [describe create_data_segment?] ALM was Multics' second-generation assembler, the follow-on to EPLBSA, written in FORTRAN, transliterated almost mechanically to PL/I (one big structure for COMMON!), and improved very gradually in PL/I. [authors of ALM?] [BSG] AML Author Maintained Library, stored in >aml. AN61 The Multics Storage System PLM. AN series manuals were Program Logic Manuals. Written by Bernie Greenberg. anonymous user User Control allows a project administrator to define an "anonymous" user in a project. Such a user has no PNT entry and no password. A process is created for the user when the enter command is given instead of login. Anonymous users are usually put in some kind of limited service subsystem (LSS) that does its own accounting and passwords. answering service The facility in Multics that listens to all non-logged-in terminals, accepts the login, enter, and dial commands, and logs in and creates processes for users. This facility runs in the initializer process. [TVV] The answering service was written as one huge, very complex PL/I procedure (dialup_) managing a table (the "answer table") with an entry for each comm line. Organized around "event-call" wakeups, dialup_ was totally event-driven, much as the code at the core of some of today's GUI paradigms, and the resulting morass of "state = this", "next_state = that", etc., totally defeated all notions of program-structure and control flow, rendering it a bear to understand and maintain. These are deep issues about the cost of processes, and not an indictment. Mike Spier and Tom Van Vleck created it, and Tom Casey continued its improvement.[BSG] AOS Add one to storage, opcode on 600 and 6000 CPU's, including both Multics processors. Although most frequently used for simple arithmetic, including metering/instrumentation, this opcode utilized read-alter-rewrite (RAR), an indivisible operation of the SCU. [BSG] APL A language, defined by Ken Iverson of IBM, that used many special operators. There were two APLs for Multics: the first one done by Project MAC folks, the second by Honeywell CISL. Used the Selectric 938 typeball. Unbundled product. appending mode The hardware mode of the 6180 and 645 processors where 2-dimensional addresses, consisting of segment number and offset in that segment, are resolved via descriptor segment and page tables into references to a virtual memory. See absolute mode. [BSG] APU Appending Unit. Part of a Multics CPU that did address interpretation according to segment and page tables. The corresponding entity on the 645 was called the "Base Frame". archive The archive command manages segments that consist of multiple subfiles. It can add a segment to an archive, list the contents of an archive, or extract a segment from an archive. Similar to the UNIX tar command. [TVV] [Mention tape_archive also.] One of the first of the world's bogus mini-file-systems, mechanisms for storing many files in one (e.g., PKZIP, TAR, ARJ, etc.) because the overhead of files is too great for the number of files desired. Multics' archive command stores files intact in "archive" files; it does no compression, and its only overhead info is an ASCII header preceding each archived file, which starts with a form-feed, so it is possible to dprint archives and even have the headers come out "nice"! Another motivation for all bogus mini-file-systems is the use of tools to process (send, print, copy, etc.) single files that are not proficient or perhaps efficient at handling subtrees or other sets of files.[BSG] ARCS Academic & Research Computing Services, the application programming organization at MIT's IPC. ARDS Advanced Remote Display Station, an early graphics terminal. Used a Tektronix storage tube and ran over phone lines. Common hookup was a Bell 202C modem, with 1200 baud computer to terminal and 150 baud terminal to computer. Some models had a joystick. ARPA Advanced Research Projects Agency of the US Department of Defense. This agency contributed substantial funding to MIT Project MAC for the development of Multics. J.C.R.Licklider was working there and championed this idea. ARPANet The network first constructed by ARPA, which decades later became "the INTERNET". MIT's Multics was one of the very first sites on it, and Multics's network implementation one of the very first. For the first decade, very few Multicians paid attention to it at all, only a small but dedicated crew of "network people" who foresaw what has now indeed come to pass. [BSG] ASCII American Standard Code for Information Interchange. The character set used in Multics. In 1965, this was a great departure; character sets were much less standardized in the 60s. The 7094 used 6-bit BCD, and CTSS on the 7094 used BCD with shifts indicated, the "12-bit" character set, for TYPSET and RUNOFF. Multics was one of the first systems to use upper and lower case letters freely. ASEA Multics customer. Sweden. associative memory Each 645 and 6180 CPU had a content-addressed memory to speed up appending lookups. The most recently used entries in the descriptor segment and page tables were cached in these high-speed circuits and used when needed, avoiding one or two memory references. AST Active Segment Table. Hardcore table of ASTEs, one per active segment. Upper part of the SST. ASTE Active Segment Table Entry. Contains a page table and some segment attributes. ASU Arizona State University. Had a Multics for a while in the 80s. audit (1) The process of peer code review practiced at CISL. (2) the audit_ IOSIM that logs terminal I/O to a file. The attach_audit command sets up a process's iograph to include an audit_ attachment. Avon Consortium of the Universities of Bristol and Bath. Operated AUCC, Multics site. B2 Orange Book (US government TCSEC) rating achieved by Multics. backup Dumping files from disk to tape. Done by a daemon process. The Backup.SysDaemon ran incremental and complete dumps. See restor. BASIC Beginner's All-purpose Symbolic Instruction Code, a language invented by Kemeny and Kurtz at Dartmouth. Multics had several BASIC implementations; the final one was a compiler by Barry Wolman. BCE Bootload Command Environment. The successor to BOS. BCO Billerica Computer Oprerations. The division of Honeywell that built the Level 6 minicomputer and the VIP7801. Used a Multics as its software factory. BCPL Bootstrap Combined Programming Language. A language defined by Martin Richards of Cambridge, for bootstrapping CPL, used for some pieces of Multics such as qed and runoff, and an ancestor of the C language. Bell Canada Multics customer. Had two sites, Toronto and Montreal. binder An alternative to the dynamic linker, the binder combines program binaries into a bigger binary. bit count The file system stores a bit count for each segment and directory, but attaches nohardcore meaning to this quantity. User-ring programs, by convention, interpret the bit count as the length of a segment in bits; on a directory, a non-zero bit count indicates that the directory should be treated as a multisegment file. block "Block and wakeup" is one of two interprocess synchronization mechanisms in Multics. A process "goes blocked" (i.e., into a suspended state) awaiting any "wakeup" sent to it. A "wakeup" identifies not only the process, but a "channel" on which it is said to be woken up, and contains a 72-bit arbitrary datum. Received wakeups for a given channel are "queued" for that channel. A process can either go blocked "on" ("event wait", i.e., waiting for a wakeup on) a given channel, or declare a callback procedure ("event call") for a channel, a common way of implementing server-type software. See notify. [BSG]. boot tape A Multics Standard Tape (MST) from which the three "collections" of segments of the supervisor (and a handful of other segments needed to start up a Multics from scratch) were loaded into core, virtual memory, and the file system, respectively. Since each of these stages depended upon successive states of increased operability of the supervisor, the technique of merely loading an "image" was not available. The "bootload", or "bootstrap load" process really was a classic "up by the bootstraps" endeavor: successive mechanisms of the supervisor (e.g., segmentation, PL/I runtime, paging, dynamic linking) would be made operative one by one in and by restricted environments devoid of those features. Some of the steps, such as the copying of unpaged segments into paged ones when paging had become operative (done by "make_segs_paged", which Mike Grady alexandrically renamed from "update_sst_pl1"), are mind-bogglingly profound. The bootstrap process was known as initialization. The first record of the boot tape was read into core by BOS, which transferred control to it -- BOS was an afterthought, and Multics was at first designed to have been booted on a bare machine. But in fact, BOS passed an array of hardware configuration information and software parameters (e.g., table sizes) read in from cards (the config deck) necessary for Multics operation.[BSG] In 1967, a "development run" involved generating a new system tape, signing up for time on the 645, mounting the tape on the 645 and booting it. The system would start to initialize, read collection 1, sit for a while flashing the CPU lights, load collection 2, think some more, and crash. The programmer would dump core on the printer, find the problem, and repeat the process. [TVV] bootload To load software into a system and start it up. On the 645, pushing the BOOT button on the GIOC booted from cards or tape, and Multics System Tapes had a special self-loading first record. When BOS was first written, it booted from cards and then the BOS BOOT command booted MSTs. A warm boot of BOS, if it was already loaded on the disk, required only a single card. bootstrap1 The first program on a Multics boot tape. bootstrap1 is entered in absolute mode. (On the 645, it paired the ABRs.) It then reads the rest of collection 1, establishes a primitive appending environment and stack, and calls bootstrap2, which prelinks collection 1 and proceeds with initialization. Initially written by Nguyen Van Binh, made to work by Noel Morris and Tom Van Vleck, and further maintained and improved by many. BOS Bootload Operating System. A minimal, single-user, single-processor, non-paged, entirely assembly language 645/6180 "operating system" that was run before Multics came up and after it was shut down or crashed. Part of the Multics project, and not used anywhere else, BOS played no role at all while Multics was running, comprising only a several-hundred word "toehold" to swap core with Multics when the latter finally stopped running. BOS included commands to make and restore disk snapshots, patch and dump virtual memory to the printer, load device controller microcode and the like, and initiate the bootload and/or ESD of Multics. Initially created on the 645 by Stan Dunten, BOS was continued on the 6180 largely by Noel Morris, although others contributed. BOS was later replaced by BCE. [BSG] branch The structure in a directory allocated for each segment or directory. Sometimes extended in meaning to the object described by it, e.g., "there are three types of branches: ordinary segments, directories, and links." Brunel Multics site: Brunel University (Uxbridge, Middlesex, England) BSA Bootstrap Assembler. BTL Bell Telephone Laboratories. Bulk Store Replacement for the firehose drum, this was a large bank of slow core memory, accessed as if it were a drum. Bull Machines Bull, a French computer company originally associated with GE, that eventually bought the computer division of Honeywell and ran it as Cii Honeywell Bull. C In the late 80s, a C compiler was written for Multics. cache In 1974, the 6180 acquired an optional CPU cache. Like most else, this Honeywell hardware innovation was not designed with Multics in mind, and absolute data address was used as the key to the cache. As in all caches, cached data in one CPU becoming stale when the "real" data is modified by another must be addressed, as it were. Multics's extremely multicious solution, which won Steve Webber and Hardware Designer Riley Dobberstein a US Patent and a Honeywell Sweatt Award, was to invent the "cache" bit of an SDW (implicitly inventing the notion of "encacheability of a segment"), which prevents words from shared, writeable segments or those with physical I/O going on (as determined by software) from going into, or being sought in, the CPU cache. Greenberg invented a scheme for keeping writeable user segments encacheable while they are not actually being shared, including coordinating the notions of "shared between CPU's" and "shared between processes".[BSG] CACL Common ACL. Up to the early 70's, Multics directories had an additional ACL whose contents were effectively appended to that of each segment within it. This was seen as an easy way to manipulate "default access" in a directory. But not only did this render the computation of effective access unduly complex, but it led to surprises when CACL's were changed when segments already existed. Hence, this scheme was replaced by IACLs. call bracket The range for rings which can call a given segment as a gate. If a segment's ring brackets are 0, 0, 5, the call bracket is rings 0 to 5. call/save/return The machine language sequences for inter-subroutine call depend on the stack discipline and the subroutine linkage conventions. These sequences were conceived of as EPLBSA macros by Bob Graham. When threaded code was introduced into the version 2 PL/I compiler, these sequences were moved into pl1_operators_ and the ALM macros changed to reference an operator segment. Later, a global change was made to stack discipline for efficiency, without requiring any (normal) program to be recompiled. Cambridge Project An MIT-Harvard social science data management project. The Cambridge Project was criticised by campus radicals during the Vietnam War days, because it was taking DoD and CIA money. It produced the Consistent System. canonicalization Multics converts terminal input lines to a standard form, so that lines that appear identical are identical in storage. Cardiff Multics site: Cardiff Joint Computing Centre (Cardiff, Wales) CCVR Multics site: Centre de Calcul Vectoriel pour la Recherche, Ecole Polytechnique (Palaiseau, France) CiiHB See Bull. CICB Multics site: Centre Interuniversitaire de Calcul de Bretagne, Universite de Rennes (Rennes, France) CICG Multics site: Centre Interuniversitaire de Calcul de Grenoble, Universite de Grenoble (Grenoble, France) CICRP Multics site: Centre Interuniversitaire de Calcul de la Region Parisienne (Paris, France) CICT Multics site: Centre Interuniversitaire de Calcul de Toulouse, Universite Paul Sabatier (Toulouse, France) CIRCE Multics site: Centre InterRegional de Calcul Electronique (Orsay, France) CISL Cambridge Information Systems Laboratory. Pronounced "sissle." The group at (GE, Honeywell) that participated in the development of the Multics operating system, and led it after BTL and Project MAC dropped out. Originally housed on the 7th floor of 545 Tech Square; moved to 575 Tech Square about 1970; moved to Kendall Square in the 80s; when the people were moved to Billerica in the late 80s it wasn't called CISL any more. Had its own 6180 system. About 60 people worked at CISL. CL Multics site: Centre Interuniversitaire de Traitement de l'Information, Universite de Lille (Lille, France) clock The original 645 shipped with a separate box that was a microsecond realtime clock with the ability to interrupt any CPU. On the 6180, the clock moved into the SCU and didn't take up a port. The calendar clock read by the RCCL instruction was 52 bits (lower). CNET Multics site: Centre National d'etude sur les Telecommunications [CNET] (Issy, France) CNO Corporate Network Operations. Honeywell site in Minneapolis, MN. COBOL The Multics COBOL compiler was done at Honeywell Billerica and shared internal data structures and code generator with the Multics PL/I compiler. combined linkage segment A per-ring segment that contains the LOT, the ring's static data, outbound links (snapped and unsnapped), and entrypoint names. computer utility A computer, its software, and staff set up to provide 24-hour service for all of a community's information needs, the ancestor of the "Information Highway". Multics was envisioned as quite this, a "Multiplexed Information and Computing Service", to be present, reliable, powerful, and all that is needed as an information resource for a large number of people, all the time. This was radical at the time, when computers were viewed mainly as tools and toys for "scientists". [BSG] collection A Multics boot tape contains three logical groups of segments called collections. Each collection is read in and then run, to bootstrap a more complex environment for loading and executing the next collection. command A program designed to be invoked by typing its name at a terminal. Multics commands are ordinary user programs, and what is more, ordinary PL/I procedures. Commands and "subroutines" are indistinguishable at the PL/I and dynamic linking levels. Although this reduces the number of search mechanisms, it rarely turned out to be useful, as calling a command as a subroutine or vice-versa, although fully possible and often done in kludges, presents all kinds of UI problems. The proper handling and diagnosis of missing, malformed, or non-string arguments makes the passing of command arguments as actual parameters a poor idea, and the current C "argc/argv" scheme, an outcome of Multics's experience, is one correct solution. Correct handling of the star convention and equal convention are not so easy, though, and the seemingly-obvious solution of relegating that task to the shell (or "command processor") is fraught with well-known dangers whose horror stories adorn the landscape of UNIX critiques. Multics commands have long names and short names: "list" has "ls", "copy" has "cp", and "move" has "mv," as well as "page_multilevel_meters" having "pmlm". The original convention for short names is attributed to Don Widrig. Although there were many conventions of name syntax as time passed, short names were always an addition to long names. UNIX's "tribute" to Multics of "keeping" "ls", "cp", etc., while throwing out all long names is in fact a misunderstanding bordering on a perversion. [BSG] command language The Multics command language derived from the CTSS language, with ideas added from BESYS and TRAC. The listener reads lines from the input stream and passes them to the shell for execution. command processor See shell. compose Multics text formatting command, successor to runoff. Written by Ed Wallman of Honeywell Phoenix. Unbundled product. config deck An array of card images read by BOS and passed to Multics initialization, describing the number and sizes of memories, number of processors, peripherals and their channels, etc., as well as the sizes of critical tables (such as the SST) to be created by initialization. Ultimately, BOS acquired the capability of keeping these images on tape or in its own disk partition, not needing actual cards. The cards, or card images, were parsed by an interesting BOS routine ("scan") first written by Stan Dunten, that determined into what to parse a datum (e.g., 4-character string, octal number, decimal number, letter) by looking at the datum itself, storing one-word "parsed" data in one array and "data types" in a parallel array, very much like a LISP reader.[BSG] Consistent System Social science data manipulation subsystem built by MIT's Cambridge Project, architected by John Klensin. continuum Bulletin board program that ran on Multics in the late 70s. Ancestor of forum. core Main storage on the 645 was really core memory. Several different manufacturers produced it: Lockheed, Fabritek, who else.. I remember running memory diagnostics that printed out FABRITEK WCCP PATTERN TEST, WCCP meant "worst case (something)." There was a problem in 1966 with non-plated sense wires on core planes from some manufacturer, forget who, that for a while caused the 645 to burn out a core assembly a week. Worked fine in Arizona's dry air, but Boston's salty & polluted atmosphere was too much for them. core metering Memory usage metering was described by Bob Frankston in his undergraduate thesis. The units of memory occupancy, page-milliseconds, are familiarly called "Frankstons." cow's stomach The "Coreadd queue" of Release 6.1 and afterward. This creation of Bernie Greenberg's was a solution to the problem of multi-CPU contention on the "page table lock" (PTL), a "spin lock" on the entire paging database, which had become a severe performance bottleneck. By the nature of the beast (see wired), disk interrupts, as they arrived at page control's interrupt side from the disk DIMs, had to spin on this lock, too. The "Cow's stomach" was a queue where the interrupt side saved the results of completed disk operations for later digestion by page control, viz., when the PTL was unlocked. The algorithm defining the interaction of manipulating this queue with the locking and unlocking of the PTL was quite complex, and took Greenberg some time and effort to devise; when he had done so, he posted outside his door a hand-drawn flowchart replete with starfish and keyhole shapes and other innovations to symbolize non-traditional flowchart steps. The overall shape of a delimited loop representing area protected by a new lock resembled a stomach, and the complexity made many people ask if it was "a cow's stomach." As it happened, the functionality of the thing very much resembled that of a ruminant's stomach-complex, and the name stuck, and was even used for a similar mechanism in later operating systems of other vendors. [BSG] crawlout When a signal is raised in an inner ring routine called from an outer ring, the signal is reflected back to the caller via a crawlout. Ring 0 handles these specially, unlocking and salvaging before leaving ring 0. Cray Station Usually titled Multics Cray Station (although the acronym MCS was already taken). Written by Warren Johnson, it made Multics look like an RJE station for a Cray with job, file transfer, and print queues. Used by Ford (it was the reason for obtaining the 3rd Multics system) and a UK site. [BWS] The original Cray XMP Ford had ran COS (Cray Operating System) and required a front-end computer to submit, control, and retrieve jobs. The cray station software on Multics allowed us to use Multics as a front-end computer for the Cray. [VS] Credit Lyonnais Multics site: Credit Lyonnais (Paris, France) CS see Consistent System. CSC Computer Sciences Corporation. This contractor installed 4 systems for Naval War Games System. csort Cygnus Sort, a more performant reimplementation of the standard Multics sort/merge product by Cygnus Cybernetics Corp (Jim Homan). [BWS] CTSS Compatible Time Sharing System. This 7094 operating system was created at MIT Project MAC and first demonstrated in 1961. It was used as the programming and debugging tool during initial Multics programming and bringup by Project MAC, GE CISL, and BTL personnel. In some sense the intellectual offspring of CTSS, Multics was conceived as the next step into the future of multiple-access computing. Many of the MIT Multics principals had worked on the earlier system. CU Control Unit. Instruction sequencing, fetching, and decoding unit of a Multics CPU. daemon A beneficent spirit. A process, not associated with a human operator, that runs all the time and waits for requests to do something for a user. Name usually credited to Peter Neumann. Datatran Cambridge Project feature? DCC Data Communications Corporation. Multics customer, in the business of billing advertisers for TV commercial charges. DDDS/ORAE Canadian DND Multics site. debug Multics source-level and process-level debugger, initially written by Steve Webber. Later partially replaced by "probe", which only has source-level capabilities, but was more end-user oriented. DBR Descriptor Base Register. Sometimes Descriptor Segment Base Register, DSBR. The appending unit register that contains the absolute address of the descriptor segment for the processor and thus the hardware address space of a process. deciduous A neologism of B. Greenberg's for branches that lose their pages (Fr. "feuille", "leaf") when the "season" (running of Multics) is over. This was new to NSS, and was the method of management of that subset of paged supervisor segments that had to appear in the file hierarchy, but also had to be loaded, paged, and operative during initialization before the file system was "up" in that bootload. The technique was to withdraw the pages of these segments from the same per-bootload pool as used by the rest of the supervisor, which required special care to make sure that no attempt was ever made to return them to the file system. Unlike many colorful neologisms of the time, this one made it all the way into the official documentation. [BSG] descriptor (1) contents of an SDW. (2) Single word that described an operand of an EIS instruction. descriptor segment The array of SDWs (segment descriptors) that totally define a process' address space as currently available to the hardware without segfaults. This array itself is in all respects a segment, and (by convention) is segment 0 of the process it defines: its first element is thus an image of the DBR that describes it. Supervisor segments precede all other segments; then follow stacks, then all segments initiated and terminated by supervisor calls. All of the SDWs for wired segments are in its first page; therefore, that page has to be wired before a process can run, and that page and the first page of the PDS of a process are wired before a process is made eligible. The hardware can take page faults on the rest of the descriptor segment during the address formation process, and this case is differentiated by bits in the SCU data.[BSG] DFAST FAST subsystem with Dartmouth conventions. dial The answering service connects a TTY channel to an existing process if the dial command is issued instead of login. This facility is used to support transaction processing. DIM Device Interface Module. The Multics I/O Switch ios_ supported device-independent operations on data streams, something like the UNIX Streams facility. The device-dependent operations were performed by one or more DIMs in the I/O graph. There were two kinds of DIMs: terminal DIMs actually controlled a physical device. Many of these were in the hardcore. Non-terminal DIMs performed a transformation on their input and invoked the I/O switch again, like Fenichel's famous Pig Latin transformation. ios_ was an early instance of polymorphism, supported by calling convention rather than by language. The term DIM is also used for the hardcore programs that control physical devices, even if they are not invoked via the I/O switch, for example, the disk DIM. directory A file system entity that contains segments, links, or other directories. Directories are organized into a tree-structured naming hierarchy. All directories are stored on the RLV. The topmost directory is called the root. Discourse Multics social science application written at MIT by Wren McMains. Disk Not "disc," those are Frisbees. (more, list models and capacities?) disk quota Multics enforced disk usage quotas at page fault time. A user cannot grow a segment even temporarily past his or her quota for the "quota directory" in which the segment resides. Some directories don't have quotas, and charge their usage to the closest parent directory that has a quota. Master directories are quota directories that have a logical volume attribute different from their parent; they draw their quota from a special segment that specifies the total quota a user can allocate on a logical volume. DN30 Datanet-30. A communications front-end processor. DN355 Datanet-355. A communications front-end processor. Ran MCS. DN6670 Datanet-6670. A communications front-end processor. DND Canadian Department of National Defence. Had two Multics systems. DOCKMASTER Unclassified Multics system operated by the NSA in Linthicum, MD. Used as a communications tool among security researchers, lots of forum activity. dprint Delayed print. Pronounced dee-print. The command that queues a file for printing on the line printer by the "I/O Daemon", IO.Sysdaemon. Listings produced by the printer daemon are also called "dprints." See link. DPS Distributed Processing System. Honeywell added this prefix to the names of a lot of machines in the late 70s, including the DPS-68 and the DPS-8/M. DPS6 Another name for a Level 6. DPS6plus Version of the Level 6 that ran a secure system. DPS8 Honeywell early 80s name for its mainframe line. Multics machines were called DPS8/70M, DPS8/62M, DPS8/52M. DPS88 Later name for the Honeywell ADP and Orion machines. Never ran Multics. DPS90 Even later Honeywell processor line. Never ran Multics. Drum See Librafile. DS 10 Early disk unit. I think these were the ones operators had to "milk" condensation from the vacuum lines with a special bottle. DSEG Jargon for descriptor segment. DSS191 Disk unit. DSU170 Disk unit, used on Multics in the early 70s. DSU270 Disk unit, used on Multics in the early 70s. DTSS Dartmouth Time Sharing System. Created by Kemeny & Kurtz at Dartmouth. Ran on a GE635 and supported many more users than CTSS or Multics per CPU, but with a more limited programming model. Multics had several DTSS simulator environments. See also BASIC and FAST. dump BOS command that printed an octal dump (of selected segments after Multics had crashed, or during system debugging). Descended from John Gintell's dump program that loaded from cards. DVCP Deer Valley Computer Park. Generic name for the complex of Honeywell buildings in Phoenix at Thunderbird and the freeway, housing LISD headquarters and manufacturing. dynamic linker Multics facility that resolved subroutine linkage on the fly, at call time. dynamic reconfiguration Multics facility that allows the system to add and drop hardware without shutting down. Roger Schell's thesis was the basis for this feature. Integrated with test and diagnostic stuff. I/O reconfiguration was added late in the life of the system. echo negotiation A scheme (1979) for conditional character echoing by MCS, echoing "printable" characters until the receipt of a "break character" as defined by software and synchronizing that usably with Multics software, devised for Emacs by Bernie Greenberg to ameliorate the CPU load impact of Emacs. Having since spread to the rest of the Emacs world and since denounced as "not the way to go" (as opposed to just having enough CPU resources) by Craig Finseth ("The Craft of Text Editing"), this scheme did wonders towards its goal at the time.[BSG] edm Multics command for editing files. Written by Steve Webber. A descendant of Jerry Saltzer's edl command on CTSS. EIS Extended Instruction Set. A suite of instructions added to the 645 set when the 6180 was introduced. These are business instructions, that operate on multiple words or streams of various-sized bytes. Requiring several words each and their own data-descriptor architecture, EIS contributed significantly to the cost, size, and complexity of the (non-microprogrammed) CPU. Although ideally suited to PL/I string manipulation, EIS' need for restartability around page faults was a constant source of bugs and failures. Of the 100 or so boards in a 6180 CPU, over 30 were EIS. [TVV, BSG] ELF Multics site: Centre de Recherche ELF (French oil company) (Pau, France) eligible Eligible for multiprogramming. The various scheduling algorithms over the course of time controlled which processes become "eligible" based upon their time since last interaction, approximate working sets, membership in load control groups, and the like. In order to make a process eligible, the first page of its PDS and of its descriptor segment has to be wired: making them so is called loading the process, and they are unwired when it loses eligibility (unloading). Since this potentially requires I/O, the decision to make a process eligible has finite cost and delay. When a processor seeks candidate processes to run, as in real life, only those eligible and loaded qualify. The idle processes are always thus. See scheduler and traffic control. [BSG] Emacs From, "Editing MACroS", a video editor derived from Richard Stallman's editor in TECO macros of the same name. Bernie Greenberg began Emacs in MacLisp in 1978. Multics Emacs represented Multics' first venture into the modern UI world of managed screens, WYSIWYG editing, and character-at-time I/O and its first major offering not in PL/I, and constituted one of the first wholly unforeseen internal developments in the life of the product. Its use of Lisp as implementation and extension language was the ultimate inspiration for the use of Lisp by GNU Emacs. MCS enhancements and a video system followed in its tracks. Multics Emacs was always spelled "Emacs", not "EMACS", on MULTICS. [BSG] enter Answering service command to log in an anonymous user. The enterp command supports anonymous users all of whom have the same password. EOP Executive Office of the President. A benchmark Multics won, but didn't get the sale on. Otherwise Oliver North's e-mail would have been on Multics instead of PROFS. EPL Early PL/I. This compiler was done at BTL by Doug McIlroy, Bob Morris, and others when it became clear that Digitek wouldn't produce a compiler. EPL was written in TMG and was incredibly slow. EPLBSA EPL BootStrap Assembler. EPL compiled into EPLBSA, which was then assembled. Written by Bill Poduska in FORTRAN. EPPBP 6180 opcode 352, "effective pointer to pair bp ((utility) base-pointer)" (EAPBP on the 645), the most common instruction in Multics code. Not different in concept than a 360/370 LA or an Intel LEA, this instruction placed its effective address, segment, word, ring, and EIS bit offset, in pointer register 2 (bp; there were also eppap, eppab, etc. for the other seven). The power of this instruction, and its claim to fame, is its interaction with indirection: the standard way of loading a pointer in memory (ITS pointer) into a pointer register is not to use a "load pointer from memory" instruction (the 6180 had one, but it saw no use), but to indirect through that pointer in memory, and load the resulting "effective pointer" into that register. The computation of effective ring (see TRR) during the indirection process, as well as the possibilities of an intersegment link being used as an indirect word-pair or further indirection and every other aspect, side-effect, and possibility of the indirection process seemed always to be appropriate for every pointer load. [BSG] EPSHOM Multics site: Etablissement Principal du Service Hydro-Oceanique de la Marine (Brest, France) equal convention A command that operates on related filename arguments should implement the equal convention. For example, the rename command operates on pairs of arguments. The equal convention specifies how equal signs in the second element of a pair are replaced by components of the first element. A user can say rename fred.*.pl1 ==.old See star convention. ERF# Error Report Form # - report of a system crash, at the MIT Multics flagship/development site. Crashes were identified by erf #. "erf" was also the verb in ifd to load up an fdumped crash image. [BSG] ESD Emergency ShutDown. This operation is invoked after a system crash. The operator manually forces a transfer to a well-known location, where special code flushes the virtual memory to disk. Organizing storage system data structures such that this could be done in a consistent and reliable fashion was a major feature of release 6.0. ESL Electronics Systems Laboratory. An MIT group that did research in computer assistance to manufacturing. Produced the APT and AED languages, and the Kludge. exec_com Multics command that executed a script of commands from a file, with argument substitution. execute bracket The range of ringss that can execute a given segment. See ring brackets. extended access ? FAMIS Feature of MR11.0. File Access Methods and Integrity Services. it was an early name for the Data Management (DM) version of MRDS that supported transactions and before journalling. Beta tested at Ford in 83/84. [BWS] This is a file access method that supports atomic transactions (including commits and rollbacks). It was designed to provide MRDS with transaction capabilities. [VS] FAST A DTSS simulator. fault A processor generated exception causing a diversion of control through a fault vector, for any reason except an interrupt. Page faults, segfaults, bad instructions or out-of-bounds references and the like are all common faults. (There is no notion of "failure"). BOS did not take or process any type of faults. When Noel Morris made BOS tapes self-booting (see Zero Six Dog), though, the coup-de-grace was the processor taking a horrible "trouble fault" by executing one of the magic constants on a "Multics Standard Tape" (see MST) and Noel's code handling it, not unlike the swift whap on the buttocks of a new-born babe. But field engineers not savvy to Multics culture were unimpressed that "Multics starts up by taking a fault." (setting the "stop on fault" CPU switches up was part of their S.O.P.) [BSG] fault vector A set of 32 instruction pairs in a fixed location specifying CPU handling of the 32 processor faults. Rather than specifying a location to transfer to, the 600/6000 architecture specified a pair of instructions to be executed out of line by the control unit, one of whose tasks was "executing pairs of instructions, no matter how obtained." The first instruction was invariably SCU, and the second, "return", because the Multics return instruction also reloaded the condition code register, which in the case of interrupt vectors was ingeniously used to stash the interrupt number! [BSG] fdump BOS command that took a core dump into a disk partition. Field Engineers The FEs were Honeywell employees who installed the big iron and fixed it when it broke. They were an incredibly dedicated group of people, who worked long and strange hours, and responded without complaint to panic calls when the machine wouldn't work. They dealt cheerfully with an exotic, undocumented CPU built far away, running software that changed all the time, and kibitzing by a lot of people who provided unhelpful theories and lots of pressure, but not enough recognition. File manager See vfile_. FIM Fault Interceptor Module. This program is invoked whenever the hardware encounters a fault. It manages machine state and calls the appropriate routine. Harlow Frick, Noel Morris, and Tom Van Vleck worked on the original version. In later years, there were actually two FIMs, "wired_fim" and "fim", for faults whose handling has to be done in page-locked environment and not. Firehose drum See Librafile. FJCC Fall Joint Computer Conference. There used to be two big conferences a year, one in the spring and one in the fall. Multics was first announced at the 1965 FJCC. FL Function Language. An assembler that Tom Kinhan of GE was working on but which was never made part of the system. Flag Day Any software change that is neither forward nor backward compatible. Named after a change to Multics scheduled for June 14, 1966, when the values of the ASCII character set were switched around. FNP Front-end Network Processor. Also called FEP. See SFEP. Ford Big Multics customer. format_pl1 A PL/I indenting program with many features, options, and control arguments, written by Monte Davidoff. FORTRAN Multics had two fortran compilers. The version 2 compiler shared a back end code generator with the PL/I compiler. forum Bulletin board system. A descendant of continuum. Unbundled product. FSDCT File System Device Configuration Table. Held file system parameters and volume bit maps (until the new storage system). FSIM File System Interface Module. FSO Federal Systems Operation. The division of Honeywell that handled government contracts, sales, etc. F&T Restaurant in Kendall Square, Cambridge, where Project MAC Multicians used to go to lunch. Not to be confused with the diner next door of the same name. gate A segment that allows transfer of control between rings in a controlled fashion. Each gate segment has a vector of entries at its start. Now called "call gate" in the Intel world. Originated on Multics. Gateway Hardware project to build an ARPANet gateway, done at Honeywell Phoenix in 1979. GCOS Formerly GECOS, General Electric Comprehensive Operating System. After the merger, the "electric" was dropped. A batch processing system comparable to IBM IBSYS. More efficient that OS/360, but limited for many years to a single address space. Unbundled product. Throughout Multics's life as a product it battled with GCOS for Honeywell resources and support of every kind. GCOS simulator Also called the GCOS Environment Simulator, GES. Allows a user to run a GCOS program inside a single segment in Multics, intercepting the MME instructions that these programs issued and calling on Multics to e.g. open files or print output. Similar in many ways to (the much later) Virtual 8086 mode on the Intel architectures. GE General Electric Co. Manufactured toasters, jet engines, nuclear power plants, and, for a while, computers. Sold computer division to Honeywell in 1970. Joke from that time: GE executives had a big meeting in Florida to decide how to become number two in the computer business (this was in the days when it was "IBM and the seven dwarfs"). The solution they came up with: buy IBM and manage it for 6 months. GEBUG Debugging facility for 6.36 programs. Ran on CTSS. Don Wagner and Steve Kidd worked on this program. GEMSOS Gemini Computer's secure OS, influenced by Multics. Genstat Statistical stuff done by Douglas Clark at Bath? GESHUA Pre-merger name for HLSUA. GIM GIOC Interface Module. The code that operated the GIOC in the original 645 Multics. Gimpelize To arrange the items in a PL/I data structure so that no padding is generated, by grouping them with all the items of highest boundary alignment first, then next highest, and so on. Named after Jim Gimpel of BTL, who stated the rule. GIOC Generalized I/O Controller. This box did all the I/O for the 645. Some programmers pronounced this by spelling it out, but the field engineers tended to say "gee-yock." Glim Statistical stuff done by Douglas Clark at Bath? GM General Motors. Big Multics customer. GPM General Purpose Macrogenerator. graphics Multics graphics were heavily influenced by the Electronic Systems Laboratory design for the Kludge on CTSS. The Multics graphics system created a device independent representation and then translated it to device codes at display time. It was intended that this should work as well on an ARDS as on a vector scope. GTSS GCOS Time Sharing System. A TSO-like timesharing environment within GCOS. Simulated on Multics in the GCOS simulator. "gtss" was a Multics command. Unbundled product. Guardian The CISL/MITRE/USAF project that added AIM, the Access Isolation Mechanism, to Multics. hardcore That portion of the Multics that is loaded from the boot tape and runs in ring 0; the supervisor, the operating system kernel. The common phrase "hardcore supervisor" (hcs) is essentially redundant. [BSG] hardcore partition A partition, on the RPV, used for the pages of the segments that constitute the supervisor, not actually part of the user-visible file system. hardware monitor Honeywell had a device that hooked into the backplane of a 6180 for measurement purposes, called the "yellow submarine." They brought it out to Cambridge for a while. HASP Houston Automatic Spooling Program. An IBM Type II program that managed input and output queues and RJE for big 360s. Multics had some software to talk to HASP, pretending to be an IBM 2780 (reader/punch device), over a bisync line. hcs_ Gate into the hardcore supervisor. Most Multics supervisor functions available to ordinary programs are provided as entrypoints in this segment, for example the file system (hcs_$initiate). Other gates are phcs_ and hphcs_. HEALS Honeywell Error Analysis and Logging System. help Tom Van Vleck wrote the first Multics help facility. Over time this code became more and more elaborate. Similar to the UNIX man pages, but the info segs that the help command references are automatically extracted from the runoff source of the Multics commands manuals. hierarchy The Multics file system names files with multi-part names separated by > and organized into a tree-structured hierarchy. Unlike files in the UNIX file system, a Multics segment or directory is a child of only one parent. HISCAN Honeywell Information Systems, Canada. A marketing organization. HISLTD Honeywell Information Systems, Limited. Marketing organization for the UK. HISUK Another name for HISLTD. HLR Hoffman-LaRoche. Multics customer. HLSUA Honeywell Large Systems Users Association. Pronounced "h'lashua". HOPL History of Programming Languages. ACM conference. hphcs_ Highly Privileged HardCore Supervisor, pronounced "h'putschkiss", after Greenberg. A gate which allows arbitrary patching of the supervisor, bringing the system down, and control of critical parameters. Access to this gate is controlled by an ACL, like access to all segments in Multics. Anyone who "has hphcs" is in effect what is now known as a super-user. [BSG] HRX Internal Honeywell codename for a machine never built. IACL Initial ACL. The successor to the CACL scheme, The initial ACL was a "default ACL" to be used as the ACL for new segments in the directory (there is a separate "Directory IACL" for new subdirectories). From that point on, changes to the IACL had no effect on already extant segments -- access is determined by a segment's ACL alone. [BSG] idiotic The EPL compiler produced spectacularly bad code for some kinds of structure references. Jim Gimpel and Don Wagner looked at these problems and divided declarations into "synchronous," "asynchronous," and "idiotic" references, depending on whether an array of items was naturally word-aligned, was some submultiple of word-aligned, or was incommensurate with the word size. For example, an array of 37-bit items is idiotic, an array of 36-bit items is synchronous, and an array of 9-bit items is asynchronous. The EPL compiler was modified to tag all references with this classification, in a comment, in the generated EPLBSA code. An early version of the KST had an idiotic declaration, and each reference to an element of it generated more than a whole page of assembly code from a single EPL statement. idle process Multics creates a dedicated process for every CPU, all of whose code and data are wired. Called the idle process for that CPU, the scheduler gives a CPU to its idle process when there is nothing else for that CPU to do, i.e., no other process for it to run, so it can be so that every CPU is running one and only one process at any time. A ward of both birth and death, a CPU's idle process is the place where it is started when dynamic reconfiguration adds it to the system, and where it goes when it is to be deleted. Making the bootload CPU act in a fashion consistent with this (cf. Adam's navel in classic art) is a major prestidigitation of traffic control initialization. The idle process flashed the CPU accumulator lights; Noel Morris made it rotate the lights like a string of pearls, rolling one bit at each dispatch into it. The heart of the idle process' code is a DIS (Delay until Interrupt Signal) instruction. [BSG] ifd Multics tool written by Bernie Greenberg in LISP that looked at a BOS fdump, interpreted its contents, and allowed inspection of system data structures. Inspired by Steve Webber's "ol_dump". Although ifd was never a product (in part because of its being written in an "unofficial language", MacLisp), it enjoyed widespread use. Replaced by analyze_multics (azm). IMFT Inter Multics File Transfer. IMU Information Multiplexer Unit. A later, programmable version of the IOM. Supported in MR12.0. IN Industrial Nucleonics. Multics customer. Later called AcuRay. info seg The help command prints out information from segments with the suffix .info, called info segments. The system info segments are kept in a special directory whose pathname I forget. The check_info_segs command checks the date modified of segments in this directory, and can perform a specified action on files modified since a date contained in a user profile segment. There was also a facility called info created by Charlie Clingen, which printed out information from a tree-structured document. initialization The software mechanisms by which the Multics supervisor was loaded and started from the boot tape and the system brought up. [BSG] initializer This process is manufactured at system startup by patching the system tables to make it appear that a process is running. The initializer process then completes Multics startup and runs the answering service and message coordinator. initiate Said of a segment. Also "to make a segment known" (to a process). To make the supervisor call (or as a side-effect of dynamic linking) that associates a segment number with a file in the file system by making an entry in a process's KST. From that point on, references to that segment number become references to that segment, the fundamental illusion of the Multics Virtual Memory. On Multics, instead of opening files, a user initiates segments, and all the rest is magic [BSG]. INRA Multics site: Institut National de la Recherche Agronomique (Jouy en Josas, France) INRIA Multics site: Institut National de la Recherche en Informatique et en Automatique [INRIA] (Rocquencourt, France) INSEE Multics site: Institut National de la Statistique et des Etudes Economiques (Paris, France) INSEL Multics site: INSEL, CNI Aix-en-Provence (Aix-en-Provence, France) interrupt The 645/6180 CPU has a separate set of 32 interrupt vectors and fault vectors. Interrupts are always generated external to the processor, by the System Control Unit (SCU), in which the interrupt might have been "set" by another processor or the I/O box (see GIOC, IOM). Interrupts are only recognized during instruction-pair fetches, not in mid-instruction. The interrupt mask is not in the processor, but in the port on the SCU to which the processor is connected. Inter-processor, or even looped-back, interrupts generated by processors are used to take processors on and off the system, crash or shutdown the system, and send IPS signals to running processes.[BSG] ioa_ Standard Multics output formatter, ancestor to UNIX printf, invented by Stan Dunten as part of BOS, and then made the basic output call for all standard programs. IOCT I/O Command Translator. In 645 Multics, a generalized system for managing I/O. I/O Daemon The I/O daemon process runs all the printers and card equipment. It manages print queues and notifies users when it has done something for them. IOI (ioi_) I/O Interfacer. A unique facility in 6180 Multics that allows any user granted the appropriate access to actually run the physical I/O of hardware devices directly to and from his or her segments. IOI relies on the protection (base and bounds) registers of IOM channels, and page control services for temporarily locking pages in core at absolute, contiguous addresses as required for such use. The printer and backup daemons as well as On-line T & D use it. One of Noel Morris' proudest masterpieces. [BSG] IOM Input/Output Multiplexer. Replacement for the GIOC, except that IOMs didn't have terminal channels, so each system had to connect a DN355 to the IOM. ios_ I/O Switch. The original model for UNIX streams. ios_ mapped "stream" names into what are now called method tables by string lookup on each call. The table for each switch was the set of entry points of a DIM. Among the supported operations were synchronous and asynchronous reads and writes and controls, and the ability to define one stream as a synonym (i.e., front) for another. Replaced by iox_.[BSG] IOSIM I/O Switch Interface Module. See iox_. IOTC I/O Table Compiler. In 645 Multics, a tool for generating device descriptions for the IOCT. iox_ I/O Exchange. the MR1.0 follow-on to ios_. iox_ combined the performance-directed move to referencing stream method tables by pointer as opposed to string name with a redefinition of the set of methods to more exactly map the repertoire of PL/I I/O. As part of the package, some capabilities, such as asynchronous I/O, were lost, a change many saw as gratuitous and ill-advised. As a result, a vestigial ios_ had to be kept around indefinitely to support the asynchronous ARPANet DIMs. iox_ DIMs are called IOSIMs. iox_ was the work of Don MacLaren and Max Smith.[BSG] IP Multics site: Institut de Programmation (Paris, France) IPC (1) Information Processing Center. MIT organization that ran the campus computer center. (2) Inter-Process Communication. The facility for interprocess queueing and transmittal of wakeups and associated 72-bit data through a system queue. IPR (1) Independent Project Review. A Honeywell management custom, in which people from outside a project would study it and report the risks. (2) Illegal Procedure. Subclass of 6180 processor faults. IPS (1) Information Processing Services. MIT organization, next higher assembly to IPC, also included various other campus computing facilities such as Nuclear Science computers. (2) Interprocess Signal. An asynchronous interrupt caused by another (privileged) process. IRIA Multics customer. IRT Multics site: Institut de Recherche des Transports (Arcueil, France) ITS (1) Indirect To Segment. 635/645/ 6180 indirect words contain a "further indirection tag", which allows for iteration of the indexing/indirection process after the address in the word has been picked up. The Multics processors added a feature whereby the appending unit watches the pike as these words come by, and if this "further indirection" field of an even-addressed word contains octal 43 ("ITS"), hijacks it before it even gets to the CU, interpreting its "address" field as a segment number (of the TPR) and passing on the odd word of the pair on to the control unit in its place. The net effect is that the word-pair can be viewed as a segment-word "pointer pair", a pointer to a location in two-dimensional virtual memory, and this pair of words, referred to as an "ITS pair" or "ITS pointer", is the standard Multics pointer format. On the 6180, a ring number (see TRR) was added. Both processors had instructions to store pointer registers in this format.[BSG] (2) Incompatible Time Sharing (a pun on CTSS), a homebrew PDP-10 operating system at the MIT AI Lab in the '60's and 70's, which was an intellectual source of ideas relating to Emacs, video, and networking.[BSG] Janus Data analysis application that ran in the Consistent System. KERMIT Protocol for transferring files to and from PCs over async lines. kernel We didn't speak of the "kernel" of the system at first. Our term was usually "supervisor." When Project Guardian got underway, there was discussion of isolating the security-critical parts of the supervisor into a "security kernel." OS/360 used the term "nucleus." Kludge The ESL display, a feature of CTSS. This was a vector scope connected to channel D of the 7094, with substantial intelligence in the display controller. Inspired features of the Multics graphics system. known A segment is "known" in a process if that process has a segment number for it, as defined by an entry in its KST. In today's language, a "known segment" is a file mapped into the address space of a process (but as a segment, not a sub-expanse of linear memory), the only way of accessing files (i.e., segments) in Multics. Making a segment known is also called initiating, and making it unknown is called terminating. Only segments known in a process can have SDWs in that process, but not all known segments in a process have SDWs at any given time. See also active.[BSG] KST Known Segment Table. A per-process data base that defines and stores the mapping between segment numbers in that process and files, effectively but not really by pathname, in the file system (actually a tree of directory entry pointers with unique ID's). It is from this data base that segment faults in a process are resolved, i.e., the segment being referenced for the first time identified with a segment in the file system by having its page table located or created and given an SDW in this process. The size of the KST and the width of the segment number field of pointer registers limited the number of segments available to a process. The KST also, for many years, contained what later became the per-ring RNT, which records all names that a user has used to reference a given segment. In the case of directories, which often have similar upper-case and lower-case names, these names were actually returned when pathnames of segments were asked for, in an unpredictable order, resulting in >udd, >UDD, and >user_dir_dir, all names for the same directory, appearing in unpredictable permutation. See initiate and terminate. [BSG] LALR Compiler-compiler system, used for parser generation. Done by Robert Eachus and Pat Prange at BCO. The LALR translator construction system includes an LALR ("Look Ahead Left-to-right Rightmost" derivation) parser algorithm. LAPB A flavor of X.25. Multics has it. LCS Laboratory for Computer Science. Later name for Project MAC. LDBR Load descriptor base register. The 645 and 6180 process-switching instruction, which directs the appending unit to the base (or page table) of the descriptor segment. Causes a flush of the associative memory. [BSG] Level 6 A Honeywell minicomputer, built by Honeywell at BCO in Billerica, MA. Librafile The "Firehose drum." A large, fixed-head (head per track, hence indistinguishable from a drum), disk used on 645 Multics first as simply the highest-speed secondary storage device, then as a storage device targeted for user temporary segments such as stacks, and finally as the first paging device. "Firehose" was a reference to its high rate of data delivery, 1MB/s. Capacity was 16MB. It wasn't called a Librafile at first; that name came after the original company that made it was acquired by Singer. These drums were rumored to be used on Polaris guided missile submarines. Library tools A set of programs used by system maintenance staff at various sites to install, upgrade, and maintain libraries of source and executable objects. LILA Query language accepted by LINUS. link (1) (Type of branch). A directory entry which describes not a file or a directory, but a text string which is (intended to be) the pathname of some other directory, file, or link. What UNIX calls a soft link. Before the invention of message segments, the printer daemon implemented its queue by making links in a special directory (so that access control could be used to restrict this activity), adding extra characters onto the pathname stored to describe the requester and print options. [BSG] (2) As in dynamic linking. A special indirect-word with a fault tag, FT2, used to implement symbolic references from one program to another. When a program first references some symbolic name (an external procedure, an external datum (see ALM), the CPU takes a fault when indirection through this indirect-word is attempted. The system inspects the word, and finds pointers to strings describing the symbolic reference, and invokes the dynamic linker to resolve it, and places the ITS pointer resulting from the search into this word (pair, actually, at that point) and restarts the instruction (this was called "snapping" the link). From that point on, the link functions as a normal indirect pointer, until the target segment is terminated, at which point the link can be "unsnapped" to its original condition.[BSG] linkage section The output of a compilation is program instructions, in the "text" section, and static storage and linkage information for the dynamic linker, in the linkage section. The EPLBSA assembler produced separate text and link files, but early in Multics development the convention was changed to combine text and link into a single segment. When a segment is linked to by the dynamic linker for the first time in a process, the linkage section from the object file is copied into the process's combined linkage segment for the current ring. linker See dynamic linker. LINUS Logical Inquiry and Update System. Query front end for MRDS. Unbundled product. LISD Large Information Systems Division. The GE/Honeywell/Bull division that built mainframes. Other parts of the Honeywell computer business were BCO, which did minicomputers, and Bull, which did the Level 62 and 64. LISP List processing language developed at MIT in the 60s. See MacLisp. listener The user-ring program that loops reading a line of input from the user and submitting it to the command processor. The listener, or "command level", is accessed via the switchable API cu_$cl (you can install your own listener), and is called whenever command level is "pushed" by an error (compare UNIX behavior) as well as at process start-up. Hence, one could investigate blowups with debuggers, or even change variables and type "start" ("%"). Note that the job discipline is a stack, not a ring of equals as in UNIX. [BSG] load control Multics has elaborate features to handle more user demand than it is able to serve. Load Control assigns different weights to different initial procedures so that, for example, a LSS user counts as using half the system resources of a regular user. Permission to log in depends on whether the system has reached its load limit, set by the system administrator per shift, and on whether someone else in the same load control group can be preempted, that is, bumped off the system. If you get logged in, Load Control protects you from preemption for some specified time period, and chooses unprotected users for bumping. logical volume (LV) NSS term meaning "a group of disk packs treated as one as a pool for segment allocation". See physical volume. [BSG] login The command interpreted by the answering service to create a process for a user. "Login" was the command name used on CTSS and carried over. I think this is east-coast usage; west-coast systems seem to use "logon" instead. LOT Linkage Offset Table. The per-ring table at the head of the combined linkage segment that locates each active segment's linkage information. Indexed by segment number, each word is a packed pointer to that segment's linkage section. LP Cambridge Project software done by R K Scott? LRK Compiler-compiler system, used for parser generation. Done by Dave Ward at BCO. LS TAC ? LSS Limited Service Subsystem. Multics allows a project administrator to specify the initial procedure for a user process. The limited service subsystem gives a user only simple commands, and user control assigns a smaller load control weight for LSS. LUT Multics site: Loughborough University of Technology (Loughborough, England) LVT Logical Volume Table. NSS table listing mounted volumes. MAC See Project MAC. MacLisp The Multics port of LISP. Used virtual memory. Supported Emacs. MACSYMA Symbolic mathematics subsystem written in LISP at MIT AI. Ported to MacLisp by Dave Moon in 1974 and used for some problems no other machine could handle; Multics MACSYMA could do them by using virtual memory. MAD Michigan Algorithm Decoder. A 7094 language developed by Graham, Arden, and Galler at U of Michigan. Henry Ancona worked on a design for a Multics compiler but it was never implemented. mail Quick and dirty unsecure mail was written by Tom Van Vleck in 1969, in imitation of his CTSS mail. Later, this interface was switched to use ring-1 message segments, and then later still was replaced by a suite of tools designed for use in a networking environment. The early Multics mail tools predated the Internet and "net mail". mailbox (1) The per-user file that mail is received in. (2) A cell in the SCU, used to interrupt an active device. Mainz Multics site: University Mainz (Mainz, Germany) MATPAC ? MCB Multics Checkout Bulletin. Early Project MAC document series. Technical white paper, internal to the development group. MCC Multics Computer Center. Another name for Honeywell's System M. MCHQ Canadian DND Multics site. MCR Multics Change Request. The authorization form that had to be approved as part of the CISL development process before a change was made to Multics. MCR Board The group of developers who met weekly to consider MCRs. MCS Multics Communication System. Either the DN355 assembly-language software that ran terminals and comm lines for 6180 Multics, or that taken in conjunction with the ring 0 TTYDIM which implemented the Multics side of its protocols. MCS was flexible enough to handle Bisync lines, X.25, and other spiffy features, in addition to terminals at many speeds. Emacs brought on the need for efficient character-at-a-time I/O and echo negotiation. People in other Honeywell Software organizations were continually annoyed at the fact that Multics required its own communications software in the comm processors, and could not use standard Honeywell packages. The architects and implementors of MCS, which replaced older DATANET software by Dick Snyder, were Mike Grady, Robert Coren, and Larry Johnson, the "FNPMeisters", ("f'noopmeisters") as they were known. [Perhaps Charlie Hornig or someone else knows something about how MCS and IP/TCP later interacted?] [BSG] [Should also say something about what came after MCS, e.g. NPS, UNCP etc] MDA McDonnell Douglas, Transport Aircraft. Multics site. MDBM Multics Data Base Manager. Another name for MRDS. MDBM Data Dictionary ? MDN Multics Design Note. Early Project MAC document series. MegaCalc Third party spreadsheet package for Multics. message coordinator A facility by Tom Van Vleck (1972) that defines and manages multiple logical operator consoles and routes them to and multiplexes them over physical consoles. Before the advent of this masterpiece of I/O switchery, (see ios_), Multics actually required a console for each of its daemons, and the array of TTY37s with their bleary red-shifts, 40's-looking 6-volt pilot lights, and autonomous, cinematic chattering that was needed to run the 645 Multics service on the 9th floor of (545) Tech Square was either extremely impressive or unimpressive, depending on one's degree of sophistication. [(I was young and new, and impressed)-BSG] message segment A ring-1 segment that contains individual messages, used to implement mailboxes. Used extended access to specify additional access controls. metering Multics has many metering commands, such as file_system_meters, traffic_control_meters, pre_page_meters, device_meters, tty_meters, page_trace, trace, meter_gate, meter_signal, alarm_clock_meters, vtoc_buffer_meters, total_time_meters, the ready message, and the script driver. The microsecond hardware clock made it easy to instrument code. Almost all subsystems have metering built in, running all the time; the commands just display the internal counters. The standard procedure for installing a new system release included running a 60-minute performance benchmark. Ministere de la Culture Multics site: Ministere de la Culture (Paris, France) Ministerie van Sociale Zaken Multics site: Ministerie van Sociale Zaken en Werkgelegenheid (Den Haag, The Netherlands) MGS Multics Graphics System. Also Max Smith's initials. MGT Master Group Table. System administration table. Defines work classes and load control groups, which determine the number of users from each group that are permitted to log in, and the percentage of system resources that they are allocated while logged in. mini-GIM Small, simple, fast version of the GIM, introduced in 1968. Minitab Third party stat package for Multics by Minitab, Inc. Designed to run on a wide variety of operating systems. MIT Massachusetts Institute of Technology. A private university, founded in 1860, located in Cambridge, MA. "A university polarized around science." Home of Project MAC. mmtu The graffiti file at MIT. (mmtu = mene mene tekel uphairsin, the writing on the wall, name due to Charlie Garman.) This info seg was maintained by IPC personnel, who responded to comments from users. Monsanto A sale Multics didn't make? motd Message of the Day. This info seg is printed at login, and is updated by operations to inform users of system schedules, new rules, and so forth. MOWSE Multics Online Workstation Support Environment. Its major feature was BFT (Background File Transfer), which allowed the user to start a file transfer and go on to do something else (a big deal for a PC in 1987). [BWS] MPC Microprogrammed Peripheral Controller. These huge Honeywell peripheral controllers (on the 6180) requiring software loading did not seem to provide any noticeable advance in functionality over the non-microprogrammed peripherals on the 645. See Zero Six Dog. [BSG] MPN Multics Planning Notebook. Planning and coordination document used in the late 60s to manage Multics bringup. MPO Multics Project Office. A group within Honeywell FSO that tried to sell Multics to the government. MR Multics Release. The system numbers presented to the customer world. MRDS Multics Relational Data Store. Originally written by Jim Weeldreyer and Oris Friesen of Honeywell Phoenix. Unbundled product. MRGEDT CTSS command that sent a job to the 6.36 simulator. MRPG Multics Report Program Generator. Done by Jim Falksen at Honeywell Phoenix. MRX Internal Honeywell codename for a never released processor. MSB Multics Staff Bulletin. Document describing rules and administrative stuff. MSP (1) Multics Special Projects; Minneapolis group responsible for marketing and supporting first Multics sites after the merger. (2) The airport code for Minneapolis/St. Paul. [WEB] MSPM Multics System Programmer's Manual. About 3000 pages of documentation of the system, written mostly before coding started. The total design presented was more complex and grandiose than was ever implemented. MSS Multics Standard System. System numbers used internal to the development group, and at MIT. MST Either "Multics standard tape" or "Multics system tape", which latter was in fact an instance of the former, being a checksummed, labeled, headered, trailered, fixed-length-record tape format with periodic tape marks used for all backup tapes and disk snapshots, as well as the tapes from which the system and BOS were booted. The record header included two fixed octal constants determined to be optimal for checking controller integrity. This format later proved to be inimical to the goal of having hardware-bootable tapes, and was a nightmare to support in the several assembly-language environments (e.g., BOS) that required it. [BSG] See bootload and Zero Six Dog. MSU0451 Disk unit. MSU0451 held about 149 MB of usable Multics pages. MSU0501 Disk unit. MSU0501 held about 1006 MB of usable Multics pages. MSU3381 Disk unit. MSU3381 held about 3367 MB of usable Multics pages, and was an IBM OEM. MTB Multics Technical Bulletin. Replaced MCBs after Multics was "checked out." Technical white paper, internal to the development group. MTR Multics Task Report. Early Project MAC document series. Described who was doing what. mult I used "mult" to mean either "actively doing Multics programming, or logged in interacting with Multics, as opposed to being away from a terminal," or secondly, said of systems, "successfully time-sharedly running users in the user ring," i.e., what a crashed or hung system doesn't do. "Really? It was multing just fine a half hour ago." This was in part backed by the Ring 1 command level command MULT, which, indeed, told it to do just that - or was it the BOS runcom? Yes, I think it was the latter. David Levin used to tell the story, he had first cut his super-long hair and beard, and how Moseley Meer just sat there next to him multing for a half-hour before saying, "David?" Or "Can you stop multing and spend some time with some human beings?" Today that would be called "Multics hacking," modulo the unfortunate ambiguity of the term "hacking."[BSG] multer At times I used "multer" in the sense one would use "guitar player" as opposed to guitarist, i.e., it could be a term of praise through too-low-a-term (what's the trope term?). "Noel was one multer not soon to be forgotten."[BSG] Multician Anyone who contributed to the development and success of Multics. There is no such thing as an ex-Multician. [TVV] I used "Multician" to mean any pro-level, skilled Multics programmer/designer. Much like "musician." You might be a really good amateur and be highly regarded as a Multician, or even be a pro but not really be a Multician. I think it had to be your main, or full-time pursuit, though. "Moon, in addition to his thousand other talents, was a hell of a Multician," though. I was "as well known a Multician as any." "Tom Van Vleck was one of the original core of Multicians." [BSG] Multicious Stylistically consistent with the standards of Multics design and excellence. Prelinking and phcs_$flush_file_pages are not multicious. Consistent with and excellent in the Multics design philosophy. [BSG] Multics Multiplexed Information and Computing Service. Always spelled in mixed case. Informal plural: Multices (Latinate). multilevel daemon ? multisegment file (MSF) One of the weaknesses of Multics is that data files larger than a megabyte are hard to map into the virtual memory. The file system supports multisegment files as a partial solution. A multisegment file is a directory with a nonzero bit count equal to the number of components of the file. Each component is a segment, contained in the directory, and named 0 ... N. Programs that produce printed listings, such as compilers, use a set of routines that can write MSFs, as do the language runtimes for PL/I, FORTRAN, and COBOL. The I/O daemon can print MSFs. Nancy Multics site: Centre Informatique Regional Interuniversitaire de Lorraine, Universite de Nancy 1 (Vandoeuvre Les Nancy, France) NCP Network Control Program. (1) the set of ARPANet inter-host protocols that preceded TCP/IP (which latter made the Internet possible). (2) The set of ring 0 Multics programs that supported this protocol in the Multics ARPANet implementation, written by Doug Wells and Ed Meyer, and discarded when TCP/IP took over. This system relied on the Host-to-IMP [Interface Message Processor] protocol, that supported in wired code by Raj Kanodia, which pioneered an event count technique for which he later acquired some fame. The Multics NCP involved a daemon which periodically called in to unload buffers of unfetched data from from ring 0. The NCP code was conceptually, stylistically, and implementationally isolated from the rest of ring zero, and was a bete noir to all Multicians except the aforementioned "network people".[BSG] NCSC National Computer Security Center. This US government organization produced the Orange Book under the guidance of its Deputy Director, Roger Schell. new_proc This command reveals a deep weakness in the Multics design. A Multics process is expensive to create, so it runs commands and user programs inside the same process that contained the user's listener and shell. If these programs damage the process's machinery, such as its stack or combined linkage segment, the process may malfunction. The new_proc command destroys the current process and creates a new one, by sending a signal to the answering service. Until Multics was changed (about 1970) to refresh the linkage information for a program when it was recompiled, users used to have to new_proc every time they recompiled. notify "Wait/notify" is one of two interprocess synchronization mechanisms used in Multics. "block and wakeup" is intended only for user programs. The overhead of event queues and the inability to wait on multiple events at once made it unsuitable for use in complex asynchronous subsystems (e.g., page control) in the supervisor. A process goes to "wait on" a given "event", a 36-bit number then recorded in the traffic control entry for the process. The process is suspended until some other process "notifies" that event, whereupon -all- processes waiting on it are resumed. Part of the protocol is the possibility of false notifications, the waiter must test upon resumption, and no datum is conveyed with the notification. Directory and other non-wired locks, as well as paging events, are managed with this mechanism. [BSG] NPS Standard GCOS DN355 software. Multics could run with this as well as its own, more functional, MCS. NPT New Product Test. Honeywell organization that tested each new CPU after it was built. In the late 70s, lack of test cell capacity was a limiting factor on LISD's ability to deliver Multics CPUs. NSA Multics customer. See Site N and DOCKMASTER. NSS New Storage System. MR 4.0 included a rewritten storage system that supported more disk devices and improved fault tolerance and recovery. NTT Nippon Telephone. Built a Multics clone, the NTT DIPS. NWGS Naval War Games System. A set of 4 systems sold to CDC who used them for US Navy training. octal Counting in base 8. On a 36-bit word machine, this is the natural way to express numbers. ONERA Multics site: Office National d'Etudes et de Recherches Aeronautiques - Centre d'Etudes et de Recherche de Toulouse [ONERA-CERT] (Toulouse, France) Online T&D Online Test and Diagnostics. Allows boxes to be isolated from a running system and tested. CPU and memory were first. I/O testing was not done until the mid 80s. operator Unsung heroes. Computer operators at many sites worked long and hard to keep big machines running and users happy. This is a fast-vanishing profession. See also pl1_operators_. Opus System proposed to follow on after Multics. Eventually canceled by Honeywell. ORAS Operations Reporting and Accounting System. A large application developed by SofTech under contract to GM corporate in the mid 70s. ORAS was a huge spreadsheet application that summarized all of GM's business. Orange Book Standards document produced by the NCSC, titled Department of Defense Trusted Computer System Evaluation Criteria, DOD 5200.28-STD, December 1985. Describes levels of security for computer systems. Roger Schell was the main driver behind this document. Orion Honeywell codename for a processor in the ADP architecture. OU Oakland University. Multics site. Overlap Project MIT social-science project which paid to keep the 7094 going at IPC when Multics was late. packed pointer A hardware feature on the 6180, and a much rarer software format on the 645, that encodes a virtual memory pointer (segment and word number, plus EIS bit offset on the 6180) in one 36-bit word. While 50% more storage-efficient than the two-word ITS pointer, a packed pointer could not be used for indirection (see EPPBP) or the storage of a value where ring number had to be saved (see TRR). Also, only twelve bits were available for the segment number (instead of 15 in an ITS pointer), and this was the tightest limit on the maximum number of segments in a process, far too small. The PL/I compiler made heavy internal use of packed pointers (which had to be loaded with a special instruction, again, see EPPBP), but because of the above, their use in general system code was quite uncommon. [BSG] page A fixed size piece of memory. The hardware supports both paged and unpaged segments. The SDW for a paged segment points to a page table, an array of PTWs (stored in the AST). Each PTW points to a page in core, or has a fault tag and an indication of where on secondary storage the page's contents can be found. The 645 had two page sizes, 64 words and 1024 words. Bookkeeping and storage pool management was so complex that small pages were eliminated in 1968. page control The ring 0, wired software responsible for managing the transfer and mapping of pages in and out of memory. Only a small amount of this is the famous "page replacement algorithm" due to Corbato; most of this code, almost all complex and highly-optimized assembler language, is the management of I/O and state, the multilevel paging hierarchy management, and interaction with and services provided for segment control and other areas of the system. Page control was perhaps the most asynchronous, difficult, and critical component of the whole system. Successive gurus who worked there and left their marks were Stan Dunten, Steve Webber, and Bernie Greenberg. [BSG] page fault Still called that, or "missing page exception." What the hardware does when a page is referenced whose PTW says it's not present. paging device A device used as the intermediate level store in a multilevel paging hierarchy ("page multilevel"), at first the firehose drum, then later the bulk store. PAL (forget what this stood for) Programming linguistics language created by Art Evans, using ideas from Martin Richards. Used in the first course taught using Multics, 6.231, in the summer of 1969. Palyn Report Report prepared in 1978 by Palyn Associates for Honeywell corporate, recommending long range large systems plans. partition A contiguous region of a disk volume. Pascal Grenoble wrote a Pascal compiler for Multics in the 1980s. password Multics passwords are stored in the PNT encrypted by a one-way function. They are eight characters long, and the login command has optional arguments to generate a pronounceable password for you. (Code written by Morrie Gasser of MITRE in connection with Project Guardian.) This facility can be invoked automatically after a password has expired. path name Multics segments are named by a sequence of entry names, separated by > characters, e.g. >udd>m>vv>go.ec. This path name provides a path from the root directory to the segment. Pathnames are absolute (descend from the root) or relative to the current working directory. PC support A feature in MR11.0? See MOWSE. pdd (or PDD, process_dir_dir). Alternate names of the directory >process_dir_dir, whose subdirectories are users' process directories, created and destroyed as processes are created and destroyed. Compare UDD. PDT Project Definition Table. The per-project segment that defines which users may login on a project to User Control. A project administrator can update this segment online. PDS Process Data Segment. A per-process, ring 0 segment, containing per-process supervisor data (other than the KST and descriptor segment) as well as the ring 0 stack of the process. The PDS has the same segment number in every process, and contains many symbolically-referenced data objects. When a process is made eligible by the scheduler, the first page of the PDS, which contains data needed by wired code, including places for faults to store SCU data, is wired. Compare PRDS. [BSG] phcs_ Privileged HardCore Supervisor gate. A gate which allows semi-privileged operations, such as examining the contents of ring 0, but doesn't let the user do things that might crash the system. A user with access to phcs_ is trusted, since this gate can be used to examine passwords in the input buffers. Compare with hphcs_. Phase 1 Integration milestone during Multics development. The first time that Multics booted from tape and came up to type on the operator's TTY. Accomplished December 1967 by Noel Morris and Tom Van Vleck. PHM Page Has been Modified. Flag set by the CPU in a PTW when a page was stored into, used by the page control replacement algorithm. Phoenix City in Arizona, where LISD built computers. Used metonymically to refer to LISD management. photocomposition A feature of compose. PHU Page Has been Used. Flag set by the CPU in a PTW when a page was read, used by the page control replacement algorithm. physical volume (PV) NSS term meaning "a disk pack". The contrast is with logical volumes, groups of PV's: users can specify on which LV a segment is to reside, but not on which PV - that is up to the system alone. PV's, however, are the unit of data integrity and recovery, and this non-transparency in the illusion is apparent. [BSG] PIT Process Initialization Table. Segment in the process directory where the system stores constants determined at process creation time. PL/I Programming Language #1, invented by IBM. Combining scientific features from FORTRAN, business features like records from COBOL, and block structuring from Algol, PL/I's future looked rosy in 1965 when the team chose it for the Multics systems programming language and the idea of coding an operating system in a "higher level language" was radical. Multics's storage models, procedure models, data types, and run-time architecture were all designed around those of the PL/I language, and all system APIs were given in PL/I. Use of any other language for systems programming tasks was actively and officially discouraged. Nonetheless, over the years certain critical subsystems of substantive complexity and bulk (notably page control and the scheduler) were recast into assembler language to optimize performance. The version 2 Multics PL/I implementation (Bob Freiburghouse and Barry Wolman, chief architects), is arguably the preeminent PL/I implementation of record. [BSG] pl1_operators_ A segment referred to by every compiled PL/I program, containing open code (threaded code) cliches for common constructs, including call/save/return. Normally every process shares the same (wired) copy of the segment, but a user can modify the operator pointer in the stack root to switch operators to, for example, test a new version or to turn on call tracing. pln Print with Line Numbers. A private command by Max Smith that was used heavily in the development community, very similar to UNIX grep. Although the Multics product had nothing like it, widespread feeling that it was not Multicious, as it had no obvious place in an organized, extant or proposed suite of tools, and an immensely useful feature of "knowing" about the insides of archives which raised questions about other commands, prevented it from ever being made part of the product. While pln's many fans were often frustrated by the double-edgedness of the at-times conservative sword of multiciousness, and could not understand why the world at large could not benefit from this incredibly useful tool, precisely such a profusion of diverse, unrelated tools is in fact one of UNIX's most well-known flaws.[BSG] PNT Person Name Table. User control's password and user name registration database. pointer register A register on the 6180 (or "pointer pair" on the 645) containing a segment number and a word number within that segment (and on the 6180, a ring number and a bit number for EIS), i.e., a generic pointer into the segmented address space. Other than constant and code references, Multics instructions usually make references relative to pointer registers, for the same reasons of relocatability that obtain in any architecture. On the 6180, the pointer registers visible to the Multics instructions are actually fabricated illusions constructed of "address registers" shared with the non-Multics (GCOS) CPU's and segment and ring registers managed by the appending unit, which lock-step mimics every CU operation on the "address registers" to create the software illusion of pointer registers. On the 645, the "pointer pairs" were wholly within the base frame, being built of 8 ABRs which could function either as segment or word pointers and be associated into pairs. During normal Multics PL/I code, pointer registers are reserved for the stack frame, the entry vector of pl1_operators_, and less strictly, the procedure's actual parameter list, its linkage section, and the operator table at the base of the current stack. In addition to numbers 0, 1 ... 7, the pointer registers also had names, ap, ab, bp, bb, lp, lb, sp, sb, based upon their conventional use in Multics PL/I object code. [BSG]. PPR Procedure Pointer Register - a tripartite processor register defining the segment, ring, and location of the next instruction to be executed, the Multics equivalent of the "instruction counter", which is the "location" component of the above. The processor actually implemented the three components on three different boards in three different ways, but Multics chose to conceptualize it as one. The ring component ("PRR") defines the current ring of execution. Compare TPR, TRR.[BSG] PRDS Processor Data segment. A per-processor, fully-wired ring 0 segment, containing not only symbolically-referenced per-processor data but a stack used when running fault and interrupt handlers that cannot take page faults or interrupts, such as page control itself, and the scheduler. The processor carries around the SDW for the PRDS from process to process like a carpet-bag, dropping it in the same slot in the descriptor segment of each process as the processor moves from process to process, literally holding it in the accumulator during every process-switching instruction (LDBR). Compare PDS. [BSG] prelinker One of two. The Multics supervisor is pre-linked statically at boot time by a pair of assembly-language programs known as the "prelinker". In the late 70's, the capability of pre-linking select user's address spaces as a performance boon was added. This is done by a separate "prelinker." [BSG] PRHA Puerto Rican Highway Association. Multics customer. printer Multics supported the standard-issue GE and Honeywell line printers of the era of fanfold paper, fitted with special type-bars and chains to support the ASCII character set. As these printers were designed for a 6-bit BCD character set (and were thus incredibly fast at printing foot-thick dumps and the like), printing upper-and-lower-case characters required odd modes and complex escape sequences. Although softwarily possible, users never attached printers or directed output to it -- the only mode of printer use is to queue ASCII files to be printed by the Printer daemon, using the dprint command. Before the era of GUIs and WYSIWYG editing, fanfold listings were an invaluable aid in developing and debugging programs. [BSG] probe Multics high-level PL/I source language debugger. process An address space and a locus of control. A Multics process is a complex object, because it has a complicated address space. process directory A directory created when a process is created for exclusive use of that process, namely per-process and scratch segments, including stacks (including the PDS) and combined linkage segment. Disk quota in the process directory is not charged against the user. All process directories are subdirectories of >PDD [BSG] process overseer Procedure called at process initialization time. It sets up the process environment and then calls the process's listener. process preservation Multics can save a process across a communications interruption. A user can later reestablish communications and connect to or destroy the preserved process. profile Facility to count the number of times each source statement in a program is executed. Compile a program with the -profile option, run it, and then use print_profile to print out per-statement counters in its static section. project A group of Multics users working together, for the same firm or organizational division, for whom Multics can pool all disk record quota and establish common access rights, and grant other group privileges. Although a user has to be registered globally to the system in order to use it, he or she can only log in as a member of a project, one project or another at any one time. [BSG] The PDT lists a project's users. project administrator The person who administers a Multics project. Among the responsibility of the Project Administrator is registering and deregistering users on the project (a user can only log in if he or she has a project to log in to), and creating home directories under the project directory. [BSG] Decentralized management of the user community was an important feature of User Control; the system administrators established the registration of persons, and their initial passwords, but project administrators could add and drop registered persons without consulting the system administration, and modify users' resource quotas and get reports of current usage. project directory A directory for a given UDD. The subdirectories of the project directory are home directories. In the directory pathname >udd>Multics>Morris, >udd>Multics is the project directory. [BSG] Project MAC MIT Project MAC, suggested by J.C.R. Licklider, was the organization that began the research that led to Multics. It is now called the MIT Laboratory for Computer Science. PRR Procedure Ring Register. Part of the PPR. Stored in the SCU data. PTL Page Table Lock. More accurately, a lock on all the data-bases of page control, that is, PTWs, core frame tables, and paging device map. This lock, protecting a huge amount of performance- and integrity-critical data, is used only by wired code masked against interrupts, including interrupt and page fault handlers, so it was designed as a "spin lock", which would only be found locked on multi-processor systems. As Multics grew, the necessity of alleviating this growing performance bottleneck resulted first in the Cow's Stomach, and later in an extremely non-modular tryst of traffic control and page control, also by Greenberg, allowing processes to wait (see notify) on the Page Table lock as a highly special case. [BSG] PTW Page Table Word. 36-bit word interpreted by the hardware, which contained the absolute address of a page, or a fault tag and an indicator of where the page is on secondary storage. pure procedure Multics compilers all generated code that did not modify itself. This may seem like a no-brainer, but it was quite radical at the time: OS/360 struggled with the concept of "reentrant" (same thing as pure procedure), "serially reusable," and another flavor, forget the name, of program. CTSS stored into its code in lots of places, but we realized that this would be very bad on a multiprocessor system. PVT Physical Volume Table. NSS table listing physical volumes. QED CTSS editor written by Ken Thompson. Ported to Multics BCPL. Bob Daley then wrote Multics qedx as a less functional but faster version. Both qed and qedx are programmable: they support multiple buffers, and a user can execute the contents of a buffer containing editor commands. Doug McIlroy wrote a version of tic-tac-toe in qed. Qedx was the standard editor for most of the Multics development community throughout the 70's. See ted. quit A method used to interrupt a running program. The quit condition is raised by pressing the ATTN or INTERRUPT key on a terminal. This condition normally causes the printing of QUIT followed by establishment of a new command level. quota Usually referred to disk quota. Sometimes people spoke of the other resource limits, CPU, dollar cost, etc, and quotas, since that was the term used on CTSS. RADC Rome Air Development Center, Griffiss Air Force Base, Rome NY. The first Multics sale (after MIT, BTL, and GE). Pronounced "rad-see". RAE Multics site: Royal Aircraft Establishment (Farnborough, England) RAID GECOS machine-level debugger, like DDT. RALR "Ring alarm register". A 6180 CPU register that causes a fault when a process transfers control to a ring at least that high. Using this register, interrupts and signals can be masked on a per-ring basis without the need for software help in inter-ring transfer. [BSG] The 645 didn't have this register, and simulated the function by giving each process multiple descriptor segments, one per ring. RAR (1) Read-alter-rewrite, an SCU operation needed by a class of CPU instructions (AOS, STAC, STACQ) often used for synchronization. On the 645, the SCU ensured that no other requests (from CPU's, GIOC, etc.) were serviced between the requester's "read" and "rewrite." Typically, STAC and STACQ were used to lock and unlock locks. The 6180 generation SCU's did not at first support this two-phase operation, and much effort was spent by GCOS-oriented hardware designers to convince us to make Multics use LDAC, the GCOS locking instruction which indicates the locked state by zeroing the word in question in one phase, instead! This was unacceptable, and we got compatible two-phase ("STACQ") locking retrofitted, but it took some time to debug it to acceptability. (2) Roger A. Roach, MIT IPS top Multics man. [BSG] RCCL Read Calendar Clock. 645 instruction that read the clock. Returned a 52-bit value, the number of microseconds since 0000 GMT Jan 1, 1901. RCI Renaissance Computing Incorporated. Took over support of the Consistent System. RCP Resource Control Package. Written by Bill Silver. Handled tape mounting requests, operator interaction, tape reel access control. read bracket The range of rings which can read a given segment. If the segment's ring brackets are 1, 5, 5, the read bracket is rings 0 to 5 (the first 5). Also sometimes used to refer to that upper inclusive limit itself. [BSG]. ready message The standard listener called cu_$ready_proc before reading a command. The default action for this call was to print a line like r 1445 2.370 22 showing time of day and virtual CPU usage and page faults since last message. This message was customizable by author-maintained programs such as general_ready or could be turned off entirely with the ready_off command. relative A relative pathname is interpreted relative to the current working directory. Renault Multics site: Renault (Boulogne-Billancourt, France) restor BOS command. Opposite of save. The save and restor commands copied the contents of disk to tape in physical format, as fast as the system could do this. These operations were much faster than running the backup daemon inside Multics to dump segments logically through the file system. Replaced by the volume backup facility. retrieve Obtain a copy of a lost file from a backup tape and put it back in the hierarchy. REWPUG Read, Execute, Write, Privileged, Unpaged, (not) Gate, the six SDW permission bits on the 6180 in their storage layout, a cryptic formula which often appeared in part or whole in descriptor segment dumps, and was very dear to Noel Morris. The corresponding 645 formula was "SAWP DATA" (Slave-access write-permit), which novices sometimes mistook for a typo. [BSG] ring Concentric level of privilege of user/supervisor distinction. Although now a standard part of the Intel architecture and Microsoft Windows, this concept was invented on Multics. Although there were 64 rings (an illusion created by software) on GE 645 Multics, there are 8 rings, supported in hardware, on the Honeywell 6180 in its various models. Only rings 0, 1, and 4 saw any non-forced use. [BSG] ring 0 The most privileged ring of the Multics architecture. The hardcore supervisor runs in ring 0, so the term was used as a casual synonym for "the supervisor" or "the hardcore." Privileged code only runs in ring 0. ring brackets Three numbers associated with every segment defining the highest ring which can write in it, the highest ring which can read it (must be equal or larger than the preceding), and the highest ring (if greater than the preceding) which can call it as a gate. Executable segments have the first two numbers equal, lest some ring be able to influence the execution of an inner (lower-numbered, less privileged) ring by writing the segment.[BSG] RJE Remote Job Entry. RLV Root Logical Volume. NSS term for the logical volume containing all directories and system critical software. RNT Reference Name Table. This per-ring table records all reference names that a user has used to reference a given segment. Also holdssearch rules and current working directory. RPV Root Physical Volume. NSS term for the physical volume that contains the hardcore partition and the root directory. root The top directory in the naming hierarchy of a Multics system. The name of the root is simply ">". The root directory is always stored on the RPV. runcom The BOS facility that allowed the execution of a script of BOS commands, named after the corresponding CTSS facility. Runcoms could call other runcoms but not return. In 1977, a facility for "continuous operation" was added to BOS and Multics; a small piece of memory was shared between the two environments for flags, and a runcom written that would reboot Multics if it crashed, if certain flags were set in the communications region. This facility kept MIT Multics running during the Big Snow of February 1978. run unit A COBOL concept. There were some commands whose short names were spelled out, rather than pronounced, such as stop_cobol_run_unit. RUNOFF CTSS command for text formatting written by Jerry Saltzer. Ported to Multics BCPL. Eventually replaced by compose. Ancestor of UNIX troff. salvager A set of programs for reconstructing directory and file system integrity after a crash. Until NSS, the Salvager was a separate tape booted after a crash; built of Multics supervisor parts and running entirely in ring 0, it scanned and repaired the file hierarchy instead of coming up to serve users. Eventually, more and more of its functionality was moved to code that can run while the system is up. When a crawlout occurs, locked directories are salvaged before returning to the user ring. [BSG] The salvager does more or less what UNIX fsck does. scheduler Used ambiguously, as in today's operating systems, to denote either that piece of software that manages multiprogramming or that allocates time slices to users. Since these are the same program, "pxss" (process exchange, switch stack), this was not a problem. This very large, complex assembly language module was highly optimized, including by many non-modular hooks into page control. [BSG] The Multics scheduler began as a Greenberger-Corbato exponential scheduler similar to that in CTSS. About 1976, it was replaced by Bob Mullen's virtual deadline scheduler.[TVV] SCOMP Secure COMPuter. Secure front-end processor, done by Honeywell in Tampa, first system to get an Orange Book A1 rating. Used to be called SFEP. SCSI Multics site: SCSI (?) SCU (1) System Control Unit. The multiported, arbitrating interface to each bank of memory (usually 128 or 256 KWords), each port connecting to a port of an "active unit" (CPU, GIOC or IOM). On the 645, the clock occupied an SCU as well. The SCU's have their own repertoire of opcodes and registers, including those by which system interrupts are set by one active unit for another. The flexibility of this architecture was significant among the reasons why the GE 600 line was chosen for Multics.[BSG] (2) Store Control Unit. The 645 and 6180 instruction instruction that stores an eight-word encoding of the processor state (other than register contents and the state of the EIS unit on the 6180) at the time of an interrupt or fault. Because of potentially lengthy indirect chains and instruction modifiers with side-effects (increment-on-reference pointers), instructions must be restartable in the middle. Only some of this data is used by the software, and there are bits that are by and large not understood by the system staff: most is used by the processor upon restart. With the EIS unit data, the processor state took 40 words to encode [BSG]. SDW Segment Descriptor Word. An element of a process' descriptor segment; the hardware-accessible data element that defines a segment and the process' access rights to it. SEADACS Old name for McDonnell Douglas site in Long Beach CA. search rules The dynamic linking mechanism looks for segments in a set of directories specified by the user process's search rules. These rules are per-process and stored in the RNT. In addition to specifying a list of directories, there are three special values that can be specified: -initiated-segments, specifying the use of already initiated segments (this rule should always be first); -working_dir, to select the current working directory (which might have changed since the search rules were set); and -referencing_dir, which specifies "the same directory as the one holding the procedure that took the linkage fault." This is a subtle brilliance, that helps subsystems find the version of code that they are packaged with. segfault Jargon for "(missing) segment fault". What the hardware takes when a segment number is used for which there is no valid SDW. The latter is not necessarily an invalid or error situation, in fact, it is the default situation when a segment has just been made known. Segfaults are resolved by looking in the process' KST (table of segments known to it) to find out what segment is intended to be referenced, and the AST searched for that segment's page table to construct the SDW. If not active, the segment has to be activated, perhaps requiring some other segment to be deactivated to make room for its page table. When segments are deactivated, segment control invalidates the SDWs of all processes having SDWs for it, to start this tale at the beginning again. [BSG] segment A user-visible subdivision of a process's address space, mapped onto a storage system file. Each segment is 1MB long, and has a zero address. segment control The ring 0 software responsible for the management of segmentation, the allocation and deallocation of page tables, the connection and disconnection of the SDWs of processes from the page tables, and the performing of operations (such as truncation) upon active segments. Tightly bound up with, and requesting service of page control, in the "New Storage System" (NSS), segment control is tightly bound up with VTOC management as well. [BSG] segmentation The division of a process' virtual memory into a vector of vectors, each such vector being a segment. The idea came from the Burroughs 5500 series. Different segments can have different access rights, including for different users, and other differing attributes. Multics's use of segmentation is as a basis for what are now called "memory-mapped files", hence each segment is a file and each file is a segment, in some sense, the basic idea of Multics. [BSG] Selectric IBM mechanism for typewriters and computer terminals. The character set was on a plastic "golf ball" that struck the paper through a typewriter ribbon. This mechanism was used in the IBM 1050 and 2741 terminals, in various third-party terminals, and in the console typewriter of the 6180. There were three grades of this mechanism OEM'd by IBM, light, medium, and heavy duty; the 6180 console had a heavy duty model. SEP Multics site: Societe Europeenne de Propulsion (Vernon, France) Series 60, Level 68 Marketing name for a repackaged 6180. Later called the DPS-68. SET System Environment Test. Honeywell organization. SFEP Secure Front End Processor; original name of the machine that eventually becameSCOMP.[WEB] shell The Multics command processor used to be called the shell. This program is passed a command line for execution by the listener; it parses the line into a command name and arguments, locates the command and initiates it, and calls command with arguments that are character strings. It is simple to replace the default system supplied shell with a user-provided program, by calling cu_$set_cp (see abbrev). A UNIX shell includes the concepts of both shell and listener in the Multics sense. shift The accounting system defines up to 8 shifts, which can start at any half-hour boundary in a week, at site option. User Control charges users' resource usage against the slot for the current shift in a per-user vector in the PDT for the user's project. shriek name Multics has a convention of converting unique IDs into character string names: >pdd>!BqrHmpZZtL was a typical pathname of a process directory, generated from a 36-bit process ID. These were called "shriek names," because a colloquial pronunciation of the exclamation point was "shriek." The unique_name_ subroutine reduced the alphabet to sixteen characters to eliminate the possibility of obscenities: all vowels were removed, "v" because you can use it to look like an "u", and "f", of course, and "y" because it's like a vowel, and 2 others. The initializer's process ID (777777000000) always came out !zzzzzbBBBBB, which was thus always the name of its process directory. Rich Lamson suggested that this was Hebrew for "Fly of the Lord" (the Initializer's function, in some sense, cf., "Beelzebub", Heb. for "Lord of the Flies.") [BSG] signal PL/I name for an exception. The Multics environment maps hardware events, e.g. zerodivide, linkage fault, out-of-segment-bounds reference, into PL/I signals. When a signal is raised, the runtime searches back up the stack for a condition handler for the signal, and invokes it if found. If no handler can be found, the runtime starts over, looking for a handler for "unclaimed_signal." Eachlistener on the stack establishes an unclaimed signal handler. If invoked, this handler prints a message and "caps" the stack, establishing a new "command level" by calling a new listener. If you give the start command, the new listener returns to the signal handler, which returns to the point of error and retries. For linkage faults, this setup is ideal: if your program calls a non-existent subroutine, the system will come to command level and let you write it, compile it, and then type start to invoke it. Issuing the use command, followed by start, lets you specify a different segment or entrypoint name, so that you can redirect a call if you made a simple spelling error. The on and answer commands establish a condition handler and execute a command line under it; when a program asks a question by calling command_query_, a signal is raised that the answer command can intercept and supply a canned answer. SIPB MIT Student Information Processing Board. A student organization founded in 1969? by Bob Frankston, Gary Gut, David Burmaster, and Ed Fox. The original purpose was to provide access to computers for students, which translated into buying time on the online systems, in the days when computers were big and heavy and cost millions of dollars. To be honest, SIPB was the Student IPB when the computer center was run by the big IPB. SIPB used what is now called soft money. Of course, as any organization does, it tended to become a social group as well as a service organization. Many of the young Multicians of the late 70's were active SIPB members. SIPB's relationship to Multics was complex: by virtue of being among its greatest admirers and promoters, they were at once among its most demanding and insistent critics. Overall they were enthusiastic, though SIPB even gave out CTSS time to a user (Paul Green!) for WTBS (now WMBR). [BSG, Frankston] Site Analysts Heroes of Multics. Honeywell employees who worked at the customer site and helped the customer use the machine, report problems, install fixes. Site N US National Security Agency. They didn't want it known that they had a Multics, so all the lists showed "Site N" and if you had questions, you were referred to some guy in FSO. Bob Morris (see EPL) was Principal Scientist at NSA after he left BTL. SJU Multics site: St John's University (Jamaica NY) SMM Segment Management Module. Early supervisor module, obsoleted before 1970; managed reference names. Sue Rosenbaum worked on it. SNECMA Multics site: Societe Nationale d'Etude et de Construction de Moteurs Aeronautiques (France) sort/merge Multics has a sort/merge facility that was done as part of the COBOL support. Very batch-like, as a result of the language definition. SOZAWE Multics customer. SSA Multics customer. SST System Segment Table. Supervisor segment fabricated at boot, contains AST, and thus, all the page tables of all segments in use. STAC Store A (accumulator) Conditional (on memory operand being zero.) The 645/ 6180 instruction used universally in Multics to lock locks by storing a process 36-bit ID in a zero (unlocked) lock word. See RAR. stack Multics has a stack segment for the stack of each ring of each process (that has been referenced), in the process directory of that process. The ring 0 stack is actually (inevitably) a per-process data base of the supervisor. The need for call stacks follows from the PL/I basis of the programming environment, which determines the stack discipline. The stack contains data with the PL/I automatic storage class. Procedures have stack frames - there is no single-data-item pushing and popping (and no instructions to support such). Stacks are kept to less than the full 256k lest wrap-around not be detected. The base of the stack segment contains a table of pointers to critical operators, e.g., the procedure entry sequence.[BSG] STACQ Store A (accumulator) Conditional on Q (quotient register) (being equal to the contents of the memory operand.) Pronounced "stack queue". Indivisible RAR instruction used by Multics to unlock locks: Multics stores a zero in the word if and only if the content is currently the current process's 36-bit process ID; if it is not, the supervisor or SCU RAR handling is broken. STACQ is general enough to simulate, with a little software ingenuity, any other real or desired indivisible storage update, and was often used to generate unique ID tags, event counts, and the like as well as unlocking locks. See RAR. [BSG] standard service system Thecommands and subroutines provided with Multics, necessary for use of the system. Stored in >gt;sss, >gt;sl1, and >gt;unb. Notice the mention of subroutines. Unlike many other systems, Multics makes available a large library of utility routines used to construct the standard commands. These routines are shared by all programs that call them by the dynamic linking mechanism. star convention A convention of representing the names of multiple segments in a directory with asterisks. Each asterisk matches either one component of the trailing characters of a component: foo.*.pl1 matches foo.a.pl1, but not foo.pl1. ** matches any number of components: foo.** matches foo, foo.pl1, and foo.pl1.old. Although there are subroutines to do star matching and searching, it is the responsibility of commands to call them; star expansion is not done by the shell. See also equal convention. [BSG] Staran Attached associative processor, built by Goodyear Aerospace, used on the RADC 645 and 6180 in the mid 70s. Had 1000 1-bit CPUs that could be combined under program control to do vector operations. The Staran daemon ran with a load setting of 2. static PL/I storage class. Storage declared static is initialized once per process. static section Region of the combined linkage segment where static storage is allocated. STC Multics site: Standard Telephones and Cables (New Southgate, London, England) supervisor That portion of the operating system which runs in ring 0, a hardware concept on the 6180. The supervisor is loaded from the boot tape, and, like the rest of Multics, consists of segments, but most of them, although they (mostly) are paged, exist outside of the file system. Having SDWs in every process, the supervisor forms a part, the same part, of every process' address space, occupying its lowest segment numbers. The supervisor's SDWs are permanent, and never incur segfaults. Some parts, e.g., the ring 0 stack and the KST, are actually different segments in each process, although with identical segment numbers. The supervisor can be thought of as a shared, secure domain common to all processes: this gives it the ability to develop and store pointers that are valid across processes, a capability notably lacking from the Multics user rings. [BSG] SysAdmin Project name for system administrators, the people who registered users and projects. SysDaemon The Multics project name that daemon processes runs under. SysMaint Project name for system maintainers, the people who installed new software on the system. System M Multics system in Phoenix used by Honeywell employees for Multics development and for other Honeywell work. T&D Test and Diagnostic. Until late in the 70's, all T & D on Multics hardware was performed by field engineers running offline tools provided by a different part of the GE (or Honeywell) corporation. See Online T & D. tape Multics used tape for file backup, for disk snapshots when the system is down, for T&D's, and for occasional file interchanges with other systems. Tape software was not considered very important, it was considered a throwback to an earlier age. There were no "job stacks from tape", "spooling to and from tape", or the like. [BSG] TCP/IP Transmission Control Protocol/Internet Protocol. ARPANet packet protocols introduced in the late 1970s, replacing the older "NCP" protocols. Tech Square Technology Square. Office complex behind MIT. 545 Tech Square was the office building that housed Project MAC. 575 Tech Square was the building where CISL and the Cambridge Project were located. Also located in 545 Tech Square was the IBM Cambridge Scientific Center, home of CP/CMS. TECO Text Editor and Corrector. An editor first written for TX-0 by Dan Edwards, then ported to the PDP-1 thru 10, CTSS, Multics, and other systems. Stallman's original ITS EMACS was written as a set of editor macros in TECO. ted For "text editor", a powerfully enhanced qedx by Jim Falksen of Honeywell Phoenix, mid '70's. Once Multics had acquired product status and a certain amount of momentum, new tools were not assimilated as rapidly and enthusiastically as theretofore. While the weakness and ugliness of qedx, especially its internal "programming language" daily presented obstacles to its many users, any attempt to replace or enhance it rapidly became bogged down in the "general editor issue", the "right way to design an editor", "how to have a Multicious editor", compatibility with multitudinous extant qedx "programs", etc., all problems larger than we could solve, and official progress on the "editor front" seemed impossible. Falksen ignored all this, creating ted, enhancing it, and adding features on request for his grateful and enthusiastic private user community, not at all unlike the development paradigm undertaken at the height of this by Emacs, which broke the "editor" impasse by wholly usurping the terms of discourse in 1978. [BSG] The ted editor was added to the Multics product line, as an unbundled product, sometime in the 80s. Telefunken TR440 ? terminal type A character string that identifies the kind of terminal device. terminal operators These were the CISL staff who typed in the Multics documentation written by the technical writers. They spent a lot of time programming in runoff/compose. terminate Said of a segment. To "make unknown", to remove the binding between a segment number and a file in a process, the opposite and complementary operation of initiate. Sort of like closing a file, but not quite, for no promises of the file being consistent on disk are made: being known, which is orthogonal to being active, is a state of relation between a process and a segment, not a file and the disk. From a data reliability viewpoint, this is a major deficiency of the Multics scheme. [BSG] TeX ? thrashing A condition in which the combined working set of the programs a time-sharing system is attempting to run simultaneously exceeds the physical memory available, so that the system spends most of its time generating and servicing page faults. First named by Peter Denning. Multics designers spent a lot of time trying to prevent and overcome thrashing. TMG TransMoGrifier. Compiler-compiler language created by Doug McClure at Texas Instruments about 1964. Used by Doug McIlroy and Bob Morris to write EPL. TN1200 A GE hardcopy terminal that ran at 1200 baud. Toshiba Multics customer. Two sites in Japan. TP Transaction Processing. Feature added in MR7.0. TPR Temporary Pointer Register - a tripartite processor register in which the effective address of instruction operands is developed. The three components are segment, ring, and offset (location within that segment) of reference. At the time of a page fault or other mid-instruction exception, the TPR value(s) saved in the processor state identify the address faulted on. Not valid for interrupts, though, which only occur between instructions. See TRR.[BSG] TR Trouble Report. Multics had its own database for tracking and reporting on problems. TRR Temporary Ring Register - the ring component of the TPR (Temporary pointer register). The notion of the ring of reference is a subtle and ingenious one, innovated on Multics through the thesis of Michael D. Schroeder. It is defined as the lowest level of privilege involved in the computation of an address up to this point. Starting equal to the ring of execution (see PRR), the TRR is raised (made "less privileged") as indirect words are indirected through - both the ring number stored in the indirect words and the write bracket (the highest ring that could have put that number or pointer there) of the segment containing the indirect word are factored in. The right to access data at every single processor cycle is computed by comparing not the PRR, but the TRR with the ring brackets of the segment being referenced. This is done automatically, and did not require "adjust requester privilege level" (based on the same concept) as on the Intel architectures which pay tribute to it. Through this mechanism, the supervisor is able to reference user-supplied arguments (passed by pointer, as PL/I requires) without fear of security breach.[BSG] traffic control The supervisor subsystem that performed the functions of controlling process/processor binding and scheduling (see scheduler), i.e., the allocation and management of processor resources. Also included under this rubric are interprocess communication. Multics traffic control is based upon Jerry Saltzer's Ph.D. thesis on this subject. Trinity The management group consisting of the leaders of MIT (Robert M. Fano), GE (C. Walker Dix), and BTL (Edward E. David Jr.). Triumvirate The next-level management group, reporting to the Trinity, of the programming managers of MIT (F. J. Corbato), GE (A. L. Dean Jr.), and BTL (Peter G. Neumann). Reporting to the Triumvirate were two Project Consultants (Edward L. Glaser and Jerome H. Saltzer), the Project Administrator (George D. Bennett), the Development Director (Robert C. Daley), and the Integration Director (Izhar Shy). TSP Cambridge Project feature? TSS IBM's time-sharing system for System/360. TTY DIM Device interface module for terminals. Hardcore software that handles communications, talked to the FNP. Pronounced "titty-dim." TTY37 Teletype Model 37. First terminal to use full ASCII. 150 baud. See message coordinator. UBCC Multics site: University of Birmingham Computer Centre (Birmingham, England) UC Multics site: University of Calgary (Calgary, Alberta, Canada) UIM Universal Interface Module. Feature designed but never implemented for 645 Multics. UK file transfer & RJE ? UK mail & network addressing ? UK Transport Service ? unbundled Costs extra. Some Multics software was not "bundled" with the hardware purchase, but instead had an additional charge. Typically there would be several prices: a large amount for a one-time paid-up license, or an initial fee and then a monthly license charge. This practice, of unbundling software and leasing it to the customer for a monthly fee, was introduced by IBM about 1970, and represented a radical shift in computer finance. Multics took to it reluctantly. It led to complications, since we had to avoid dependencies from standard software on unbundled products: e.g. we couldn't use MRDS to store accounting data and produce reports. Unbundled software was stored in >system_library_unbundled, also called >unb. [BSG adds:] Since division of function by sharing of programs in a single large address space is one of the basic features of Multics, unbundling threatened this fundamental design goal. For example, the editor could not rely on the "good" mail system, because it might not be there. Major improvements to functionality were relegated to options available for a price, and old, inadequate, embarrassingly obsolete tools could not be phased out. The inevitable transition from the age of software supplied with hardware to that of the competitive software vendor is at the heart of it, though. Emacs was one of the first unbundled products. unclaimed signal If a signal is raised, and the runtime cannot find a condition handler for it, it searches for a handler for "unclaimed_signal." UNCP Universal Network Control Program. This I/O subsystem ran on a DN355. Honeywell communications software. Multics worked with it. unique name See shriek name. UNIX UNIX is a trademark of AT&T Bell Laboratories, or somebody. udd (or UDD, user_dir_dir) Alternate names of the directory >user_dir_dir, whose subdirectories are project directories, whose subdirectories in turn are users' home directories. Compare PDD. User Control Subsystem that handled login, user registration, projects, and so on. USGS US Geological Survey. Multics customer. Had 3 systems, in Menlo Park, Reston, and Denver. USL University of Southwestern Louisiana. Multics customer. Swamp on campus with real alligators. Used Delta Data 4000's as terminals. vfile_ The Multics DIM that allowed users to access segments with read/write calls. Video System Supported a character based window system and a real-time input editor much like the UNIX ksh command line editor. Followed on the heels of Multics Emacs. VIP7760 Honeywell video terminal. Synchronous device, required a controller. Lacking insert or delete lines or characters, it was not well suited for screen-managed video at less than 9600 baud. Prior to Emacs, video terminals were in general less desirable than good printing terminals for any number of reasons.[BSG] VIP7801 Honeywell video terminal. Worked asynchronously or synchronously. Complete with insert and delete lines and characters and nicely-chiseled high-resolution characters, this was an excellent Emacs terminal popular in the Multics development community, although its high cost kept it from being used almost anywhere outside Honeywell. Developed by Honeywell in Billerica, MA. [BSG] virtual cpu The system kept track of "virtual" CPU usage for each user, that is, CPU usage not counting overhead. Interrupt service time was subtracted from a process's "real" CPU usage so that a user program would incur repeatable CPU charges for running the same program, regardless of load. virtual memory As in "The Multics Virtual Memory", a paper by Clingen, Bensoussan, and Daley. A Multics process accesses all the data (it is allowed to) on the system as part of a huge, two-dimensional address space (see segmentation). There is no "file I/O", no buffers, no read-in, no write-out. All the data on the system is "virtual memory", paging being handled completely transparently. [BSG] VisiCalc Microcomputer spreadsheet developed by Multicians Frankston and Bricklin. VLSI Design software ? VMM Virtual Machine Monitor. A virtual machine implementation done by Russ McGee of GE Phoenix and a bunch of AEPs. Users could run virtual 645s and 635s, and run GECOS and Multics under control of the VMM "Hypervisor." Comparable to IBM's CP-67. Never a product. volume backup The volume dumper dumped by physical volumes, like BOS save, but ran while the system was up. Not possible until after NSS. Programmed by Dave Vinograd. volume pool RCP concept. A volume pool could allocate volumes, e.g. "system-scratch-tape." VOS Stratus operating system, influenced by Multics, developed by Multicians. VPI Virginia Polytechnic Institute, Blacksburg, VA. Multics customer. VTOC Volume Table of Contents. OS/360 volumes had these, and NSS adopted the term for its similar database. By defining the segment catalogue of a disk pack as a fixed-record, fixed-form database, a substantial advance in reliability was achieved. VTOCE VTOC entry. Very like an inode in the UNIX file system. Contains the activation attributes of a segment (date/time modified, page fault count, etc.) and its file map. VW Multics site: Volkswagen of America (Troy MI) wired Today called "page-locked". Said of code or data that is fixed in physical memory, either by virtue of being in unpaged segments (individual segments can either be paged or contiguous in memory), or in segments whose pages are marked as being non-removable. This is done for code and data that must be either be run or referenced at an equal or lower conceptual level than the I/O and page management routines doing the paging, data actually being transferred to and from I/O controllers, or code which must compete with such code for resources and its data. In practice, this means page control, the scheduler, the disk routines, low-level I/O control routines, interrupt handlers and vectors, page tables, and that subset of the PL/I runtime (see pl1_operators_) that is used by any of those aforementioned that are written in PL/I. Except as an experiment, code or data was never wired for performance reasons. [BSG] WORDPRO Marketing package for compose plus Emacs. working directory The directory used as the implicit prefix of relative path names. See search rules. working set The set of pages, at any time, required in core for a program to make reasonable progress. Defined by Peter Denning. write bracket The range of rings which can write a given segment. If the segment's ring brackets are 1, 5, 5, the write bracket is rings 0 to 1. Also sometimes used to refer to that upper inclusive limit itself. [BSG]. X25 ? xforum, xmail These were "Executive" versions of the forum and mail commands. That is, they were menu-driven interfaces, slow and simple. [BWS] Unbundled products. XR Index Register. The 645 and 6180 each had eight of them. Containing only 18 bits, they cannot contain pointers when used in a Multics environment.[BSG] See ABR. XRAY Jerry Grochow's tool for debugging 645 Multics. Consisted of a PDP7 on the fifth floor of Tech Square, linked to a special GIOC channel. The channel was in a send/receive loop, and the PDP7 sent address ranges to the GIOC, received the contents, and displayed them on its tube. XTS200 Honeywell product name for the SCOMP. ZARF Air Force/MITRE tiger team project that cracked Multics security. "Zarf" is Turkish for a coffee cup, applied by the Air Force to those white disposable cups that fit into a brown holder with a handle, which they called a finjan, also the appropriate Turkish term. Zero Six Dog Field Engineers' jargon for "PRG06D", the 6080/6180 T & D program which was initially the only program that knew how to load firmware into the "MPC"s (tape/disk/unit record microprogrammed controllers). Bringing up and interacting with the T & D environment was extremely difficult (as well as requiring the system to be down), and initially, no Multicians could do it. This situation helped impel Noel Morris to develop on-line firmware loading for MPC's (a product requirement), but that was still of no value for the disk and tape controllers on which the system had to be brought up. That impelled Bernie Greenberg (1974) to learn to run "the old dog", decode the T & D programs and invent self-loading Multics firmware tapes, which he and Noel then in concert developed into self-booting, self-firmware-loading BOS tapes.[BSG]