Multics 843 entries
20 Apr 2024

Glossary - R

Glossary of Multics acronyms and terms. Entries by Tom Van Vleck ([THVV]) unless noted.

Index| A| B| C| D| E| F| G| H| I| J| K| L| M| N| O| P| Q| R| S| T| U| V| W| X| Y| Z|
The initial 645 configuration shipped to MIT included an RCA RACE unit in GE skins. This was a datacell-like device, about 15 feet long, containing bins, each bin filled with magnetic strips about one foot wide by two feet long. In operation, the device transported a particular bin to the reading station, selected a strip using notches at the top of the strip, picked the strip out of the bin and wrapped it around a drum, and treated it as a sort of magnetic drum storage.

We never wrote a DIM for the device or used it in Multics. Field engineers started it up a few times and the noise was significant; it sounded like a printing press.

Rome Air Development Center, Griffiss Air Force Base, Rome NY. The first Multics sale (after MIT, BTL, and GE). They did classified communications research. RADC had a 645 installed in August 1970, upgraded to a 6180 in 1975, and was shut down in 1989. Pronounced "rad-see." RADC Site history.

Multics site: Royal Aircraft Establishment (Farnborough, Hampshire, England). Used Multics as front end to a Cray. Installed in 1984 and shut down in 1991. RAE Site history.

Supposedly, terminate_segment_$force_write was implemented at this site's request after a file that had been saved from the editor under light load was destroyed by a power failure hours later because the modified pages were never written to disk.

GECOS machine-level debugger, like DDT. Used during initial debugging of bootstrap1, before John Gintell wrote his dump program.

[BSG] "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. The 645 didn't have this register, and simulated the function by having the module (gatekeeper) which implemented ring crossings send IPS interrupts at ring-crossing time.

Relational database produced by the British consulting firm Logica, ported to Multics at STC in the early 80s and later used at several sites.

[BSG] (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 CPUs, GIOCs, etc.) were serviced between the requester's "read" and "rewrite." Typically, STAC and STACQ were used to lock and unlock locks. The 6180 generation SCUs 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 in the 1980s.

Read Calendar Clock. 645 instruction that read the clock. Returned a 52-bit value, the number of microseconds since 0000 GMT Jan 1, 1901.

Renaissance Computing Incorporated. Took over support of the Consistent System.

Resource Control Package. Written by Bill Silver. Handles tape mounting requests, operator interaction, tape reel access control.

read bracket
[BSG] Range of rings that 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. .

Read-Write Sequence
[BSG] (RWS) An internal operation of page multilevel which evicts a page from the paging device (i.e., back to the disk). If it is known that the page is the same as that on the disk, that's easy. But if not, the page must be read in from the paging device and written out disk, requiring a core frame as a buffer. Since the need for free records on the paging device ultimately arises from the need for free frames of core, a nasty recursion looms. PML employed an algorithm similar to the clock algorithm for core which tried keep ahead of the game by maintaining a small pool of free or readily-freeable records on the paging device, initiating RWS's in course. Obviously, all such I/O must be completely overlapped, and no process be made to wait for a page on account of an RWS in progress on it or some other page needed to free up core. In fact, an RWS Abort was declared if a process faulted on a page with an RWS in progress, attempting to use it in place in its RWS buffer. Yes, a hairy deal -- although I was in awe of PML, many were delighted to see it go.

ready message
The standard listener called cu_$ready_proc before reading a command. The default action for this call is 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 is customizable by author-maintained programs such as general_ready or can be turned off entirely with the ready_off command.

record stock
[WOS] An in-memory "stock" of records is withdrawn from the free list when each disk is mounted and the on-disk free list updated to reflect this. The stock is replenished as new records are needed, or returned to disk as segments are deleted. Implemented by John Bongiovanni See scavenger.

Symbolic algebra package written in LISP.

Story: Multics REDUCE, by Rainer Schöpf.

External page: REDUCE Home Page.

reduction compiler
Tool similar to YACC that generated a parser for a language given a language definition in the form of reductions.

reference name
Name supplied to hcs_$initiate when a segment is made known, and entered into the process's RNT. When a linkage fault occurs, the dynamic linker searches for a segment with that reference name, using the process's search rules. If the segment is not found by reference name, other search rules are used, and if a segment is found, it is initiated with the reference name used in the search. Thus one can issue the commands

initiate test_wankel wankel

to cause the invocation of mysubsystem to find test_wankel when it links to the function wankel.

Search rule that looks for a segment in the same directory as the segment that wants it. This rule means that subsystems packaged in a directory will tend to find a consistent set of components. The referencing_dir rule is usually preceded by the initiated_segments rule, so that explicit calls to the initiate command or hcs_$initiate override it.

Pathname interpreted relative to the current working directory.

Multics site: Regie National des Usines Renault, Boulogne-Billancourt, France, near Paris. Automobile manufacturer. Installed 1980, shut down 1985.

Restricted EPL. The "system programming subset" of the EPL dialect of PL/I used during the initial development of Multics, because EPL generated very slow code for some PL/I features. EPL with the following features excluded:
  • varying strings
  • adjustable strings, arrays, and structures
  • fixed length strings longer than 4 chars or 36 bits
  • substr function and pseudovariable
  • blocks
  • strings, arrays, and structures as arguments
  • fixed binary variables with precision greater than 18
MSPM Section BB.2.01 describes the subset.

There is a way to reserve tape drives and attach them later. (need more info)

resource limits
Multics supported spending limits per user and per project. When a user or project exceeded its limits, users could not log in, and logged-in users whose limit expired were logged out by the answering service. Prices in "dollars" were set for interactive (per shift) and absentee (per queue) virtual CPU usage and memory usage, terminal connect time, terminal I/O, I/O daemon usage by queue, and attached device usage time by device type. A project administrator could set limits on individual users' spending in the PDT, per shift or overall.

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.

Obtain a copy of a lost file from a backup tape and put it back in the hierarchy.

[BSG] 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.

Request for Proposal. In the 70s and 80s, mainframe computers cost millions of dollars. Organizations that bought them went through complex processes to make sure they bought the right thing. In many cases this began with a thick document called an RFP (Request for Proposal) which specified what the computer system should do. Sometimes these RFPs were slanted so that only one vendor, such as IBM, could respond; the ones that weren't "wired" for a particular vendor were often written in such abstract language that figuring out how to meet the RFP was difficult and time consuming.

See benchmark.

[BSG] 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.

[THVV] The Multics CPU contains a register, the PRR, that contains the current ring number. Segment descriptors contain ring brackets that specify the access rights to a segment relative to the ring of execution.

[WOS] By design, ring 1 and below can violate AIM rules; ring 2 and below are reserved for shared functions that are part of the system; ring 3 is reserved for shared functions that are customer-supplied or otherwise non-system.

[THVV] The supervisor runs in ring 0. Extended access object managers, such as the message segment support, run in ring 1, as does the multilevel secure TCP/IP code. The mail system run in ring 3, as does the database manager and Forum, a bulletin board system. Ring 3 was for site-supplied protected subsystems: forum ran there when under development at MIT. Ring 5 was often used as a restricted user ring by user-developed subsystems. The standard system libraries were executable in rings 0-5. Rings 6 and 7 were used for very restricted subsystems, where programs were given only very specific access: for example, one could not call the hardcore gates from rings 6 and 7, so all supervisor functions had to be mediated by an inner ring.

Story: Using Ring 5, by Randy Saunders.

ring 0
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 mode code only runs in ring 0.

ring brackets
[BSG] 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. Non-gate executable segments have the last two numbers equal, lest some ring be able to influence the execution of an inner (lower-numbered, less privileged) ring by writing the segment. The more rings can write a segment, the fewer can use it. Here are some examples of ring brackets:

0,0,5>sl1>hcs_Gate into ring 0
1,1,5>sl1>ms_Gate into ring 1
1,5,5>sss>lsStandard system command
4,4,4>udd>m>vv>fred  Random user's program

In this example, the ls command can be used by any ring from 1 to 5. Calls to hcs_ from rings 1 to 5 cause an inward ring crossing to ring 0. Calls to ms_ from rings 2 to 5 cause an inward ring crossing to ring 1. Attempts to call ms_ or ls from ring 0 will get an attempt-to-execute-data fault.

Remote Job Entry.

Root Logical Volume. NSS term for the logical volume containing all directories and system critical software (e.g. >sss and >sl1).

Reference Name Table. This per-ring table records all reference names that a user has used to reference a given segment. Also holds search rules and current working directory.

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.

Root Physical Volume. NSS term for the physical volume that contains the hardcore partition and the root directory.

[BSG] Root Physical Volume Salvage. (Either spelled out or pronounced rh-peuv-iss, as though it were the Ashkenazic pronunciation of the imaginary *Repuvoth (cf. Rehoboth (Mass.), jladdae))

An optional keyword supplied to the BOS BOOT command, which caused a volume salvage of the Root Physical Volume (RPV) to take place early in initialization.

Although the system maintained sufficient state to automatically determine the need for the reconstruction of the free storage map of the RPV, during the debugging and early days of the New Storage System (NSS), BOOT RPVS acquired talismanic power as something one said in times of deep trouble to give the system that "extra little bit of luck" in cleaning its house to come up. The management of disk storage for deciduous segments was tricky, and while the bugs were being worked out, an extra RPVS on an ad hoc basis could never hurt.

The cryptic four-character formula was a consequence of the BOS command line ("card") parser's limitation of four nine-bit ASCII characters to the one 36-bit word allocated to arguments of any type.

Resource Sharing EXECutive facility, funded by ARPA as a demonstration of the use of the ARPANet.

[DMW] RSEXEC wss the Resource Sharing EXECutive. After Bob Thomas went to BBN, he worked on RSEXEC (and as far as I can remember was largely responsible for it). RSEXEC was one of several protocols for accessing and using resources, such as files, printers, ttys, on other hosts. Other such protocols were FTP, the M* devices on ITS (and Multics), the NSW protocol, and one (DFTP?) for the DataComputer (the terabit store in 575 Tech Square).

RSEXEC had many commands that were similar to FTP. It also had the ability to create new processes and run programs. Bob used RSEXEC to create a demonstration that simulated an air traffic control system. Rather than "passing off" a plane to the next ATC center, however, Bob's demo had one process per plane. As the plane travelled across the country, the process controlling the plane continually "moved" to the computer at the closest ATC center. Consider this an early implementation of Mobile Agents. I think Bob had an article about this in CACM in the mid-1970s. (The Multics RSEXEC server may have included only the subset that managed passive resources. My recollection is that it did not implement the ability to create or run a process.)

run unit
Introduced to support COBOL. A run unit is equivalent to a "job" in languages like FORTRAN and COBOL that distinguish between the execution of a process, the execution of a job, and the execution of a single program. Resources, such as I/O unit numbers, were acquired and released at the run unit boundary.

[BWS] Multics was unique in its concept of a gracefully evolving process in which cleanliness of the address space was left up to the programs. ("You're living there -- keep it as clean as suits you.") Most OSs run user programs in a rubber room, and hose the place down after the program exits. The run unit was a compromise between these approaches, allowing the comfortable room to continue for Multicious programs but providing a rubber room for those whose habits required one. (For example, many Fortran programs assumed that common would be zeroed at load time, but on Multics would find it just as they had left it when they exited and trip on their own trash.)

[THVV] There were some commands whose short names were spelled out, rather than pronounced, such as stop_cobol_run_unit, whose short name would have been scru.

BOS facility that allowed the execution of a script of BOS commands, named after the corresponding CTSS facility, created by Louis Pouzin. BOS RUNCOMs could call other RUNCOMs but not return. In 1977, Tom Van Vleck added a facility for "continuous operation" 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's Multics running during the Big Snow of February 1978. The Multics command that runs a script from a file is exec_com.

CTSS command for text formatting written by Jerry Saltzer. A Multics BCPL version of runoff was written by Doug McIlroy and Bob Morris. A version of runoff in PL/I was written by Dennis Capps in 1974. runoff was eventually replaced by compose. (See also format_document.) Ancestor of Unix nroff. Info segment for runoff command

Multics documentation was transitioned from the Flexowriters to use of runoff when the system became self-hosting about 1968. runoff was used for manuals, release bulletins, internal memos and other documentation for most of the 70s. To support this use, Multics runoff had many features such as multi-pass execution and variable definition and expansion that went far beyond the CTSS version. Multics manuals were formatted with complex macros, included by the document source, that handled tables of contents and standard formatting, and supported the single sourcing of the commands manual and the info files for commands.

Jerry Saltzer has placed the original CTSS documentation for RUNOFF online as Manuscript Typing and Editing (from Patricia Crisman, editor. The Compatible Time-Sharing System, A Programmers Guide. Second edition. M. I. T. Press, 1965, section AH.9.01, December 1966 revision) and TYPSET and RUNOFF, memorandum editor and type-out commands, M.I.T. Computation Center Memorandum CC-244 and M.I.T. Project MAC Memorandum MAC-M-193. November 6, 1964.

Jargon for Read-Write Sequence.