The THE multiprogramming system or THE OS was a computer
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
designed by a team led by
Edsger W. Dijkstra
Edsger Wybe Dijkstra ( ; ; 11 May 1930 – 6 August 2002) was a Dutch computer scientist, programmer, software engineer, mathematician, and science essayist.
Born in Rotterdam in the Netherlands, Dijkstra studied mathematics and physics and the ...
, described in monographs in 1965-66
[
(Jun 14, 1965)
] and published in 1968.
[
]
Dijkstra never named the system; "THE" is simply the abbreviation of "Technische Hogeschool Eindhoven", then the name (in
Dutch
Dutch or Nederlands commonly refers to:
* Something of, from, or related to the Netherlands
** Dutch people as an ethnic group ()
** Dutch nationality law, history and regulations of Dutch citizenship ()
** Dutch language ()
* In specific terms, i ...
) of the
Eindhoven University of Technology
The Eindhoven University of Technology (), Abbreviation, abbr. TU/e, is a public university, public technical university in the Netherlands, situated in Eindhoven. In 2020–21, around 14,000 students were enrolled in its Bachelor of Science, BS ...
of the
Netherlands
, Terminology of the Low Countries, informally Holland, is a country in Northwestern Europe, with Caribbean Netherlands, overseas territories in the Caribbean. It is the largest of the four constituent countries of the Kingdom of the Nether ...
. The THE system was primarily a
batch system that supported
multitasking; it was not designed as a
multi-user
Multi-user software is computer software that allows access by multiple users of a computer. Time-sharing systems are multi-user systems. Most batch processing systems for mainframe computers may also be considered "multi-user", to avoid leavi ...
operating system. It was much like the
SDS 940
The SDS 940 was Scientific Data Systems' (SDS) first machine designed to directly support time-sharing. The 940 was based on the SDS 930's 24-bit CPU, with additional circuitry to provide protected memory and virtual memory.
It was announced in ...
, but "the set of
process
A process is a series or set of activities that interact to produce a result; it may occur once-only or be recurrent or periodic.
Things called a process include:
Business and management
* Business process, activities that produce a specific s ...
es in the THE system was static".
The THE system apparently introduced the first forms of software-based
paged virtual memory
In computing, virtual memory, or virtual storage, is a memory management technique that provides an "idealized abstraction of the storage resources that are actually available on a given machine" which "creates the illusion to users of a ver ...
(the
Electrologica X8 did not support
hardware-based memory management
Memory management (also dynamic memory management, dynamic storage allocation, or dynamic memory allocation) is a form of Resource management (computing), resource management applied to computer memory. The essential requirement of memory manag ...
),
freeing programs from being forced to use physical locations on the
drum memory
Drum memory was a magnetic data storage device invented by Gustav Tauschek in 1932 in Austria. Drums were widely used in the 1950s and into the 1960s as computer memory.
Many early computers, called drum computers or drum machines, used drum ...
. It did this by using a modified
ALGOL
ALGOL (; short for "Algorithmic Language") is a family of imperative computer programming languages originally developed in 1958. ALGOL heavily influenced many other languages and was the standard method for algorithm description used by the ...
compiler
In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
(the only
programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
supported by Dijkstra's system) to "automatically generate
calls to system routines, which made sure the requested information was in memory,
swapping if necessary".
Paged virtual memory was also used for
buffering input/output
In computing, input/output (I/O, i/o, or informally io or IO) is the communication between an information processing system, such as a computer, and the outside world, such as another computer system, peripherals, or a human operator. Inputs a ...
(I/O) device data, and for a significant portion of the operating system code, and nearly all the
ALGOL 60
ALGOL 60 (short for ''Algorithmic Language 1960'') is a member of the ALGOL family of computer programming languages. It followed on from ALGOL 58 which had introduced code blocks and the begin and end pairs for delimiting them, representing a ...
compiler. In this system,
semaphores were used as a programming construct for the first time.
Design
The design of the THE multiprogramming system is significant for its use of a
layered structure, in which "higher" layers depend on "lower" layers only:
* Layer 0 was responsible for the multiprogramming aspects of the operating system. It decided which process was allocated to the
central processing unit
A central processing unit (CPU), also called a central processor, main processor, or just processor, is the primary Processor (computing), processor in a given computer. Its electronic circuitry executes Instruction (computing), instructions ...
(CPU), and accounted for processes that were blocked on
semaphores. It dealt with
interrupt
In digital computers, an interrupt (sometimes referred to as a trap) is a request for the processor to ''interrupt'' currently executing code (when permitted), so that the event can be processed in a timely manner. If the request is accepted ...
s and performed the
context switch
In computing, a context switch is the process of storing the state of a process or thread, so that it can be restored and resume execution at a later point, and then restoring a different, previously saved, state. This allows multiple processes ...
es when a process change was needed. This is the lowest level. In modern terms, this was the
scheduler
A schedule (, ) or a timetable, as a basic time-management tool, consists of a list of times at which possible tasks, events, or actions are intended to take place, or of a sequence of events in the chronological order in which such things ...
.
* Layer 1 was concerned with
allocating memory to processes. In modern terms, this was the pager.
* Layer 2 dealt with communication between the operating system and the
system console
A computer terminal is an electronic or electromechanical computer hardware, hardware device that can be used for entering data into, and transcribing data from, a computer or a computing system. Most early computers only had a front panel to ...
.
* Layer 3 managed all I/O between the devices attached to the computer. This included buffering information from the various devices.
* Layer 4 consisted of
user programs. There were 5 processes: in total, they handled the
compiling
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs tha ...
,
executing, and
printing
Printing is a process for mass reproducing text and images using a master form or template. The earliest non-paper products involving printing include cylinder seals and objects such as the Cyrus Cylinder and the Cylinders of Nabonidus. The ...
of user programs. When finished, they
passed control back to the schedule
queue, which was
priority-based, favoring recently started processes and ones that blocked because of I/O.
* Layer 5 was the user; as Dijkstra notes, "not implemented by us".
The constraint that higher layers can only depend on lower layers was imposed by the designers in order to make reasoning about the system (using quasi-
formal methods
In computer science, formal methods are mathematics, mathematically rigorous techniques for the formal specification, specification, development, Program analysis, analysis, and formal verification, verification of software and computer hardware, ...
) more tractable, and also to facilitate building and testing the system incrementally. The layers were implemented in order, layer 0 first, with thorough testing of the abstractions provided by each layer in turn. This division of the
kernel
Kernel may refer to:
Computing
* Kernel (operating system), the central component of most operating systems
* Kernel (image processing), a matrix used for image convolution
* Compute kernel, in GPGPU programming
* Kernel method, in machine learnin ...
into layers was similar in some ways to
Multics
Multics ("MULTiplexed Information and Computing Service") is an influential early time-sharing operating system based on the concept of a single-level memory.Dennis M. Ritchie, "The Evolution of the Unix Time-sharing System", Communications of t ...
' later
ring-segmentation model. Several subsequent operating systems have used layering to some extent, including
Windows NT
Windows NT is a Proprietary software, proprietary Graphical user interface, graphical operating system produced by Microsoft as part of its Windows product line, the first version of which, Windows NT 3.1, was released on July 27, 1993. Original ...
and
macOS
macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
, although usually with fewer layers.
The code of the system was written in
assembly language
In computing, assembly language (alternatively assembler language or symbolic machine code), often referred to simply as assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence bet ...
for the Dutch
Electrologica X8 computer. This computer had a
word
A word is a basic element of language that carries semantics, meaning, can be used on its own, and is uninterruptible. Despite the fact that language speakers often have an intuitive grasp of what a word is, there is no consensus among linguist ...
size of 27 bits, 48
kiloword
In computing, a word is any processor design's natural unit of data. A word is a fixed-sized datum handled as a unit by the instruction set or the hardware of the processor. The number of bits or digits in a word (the ''word size'', ''word widt ...
s of
core memory
Core or cores may refer to:
Science and technology
* Core (anatomy), everything except the appendages
* Core (laboratory), a highly specialized shared research resource
* Core (manufacturing), used in casting and molding
* Core (optical fiber), ...
,
512 kilowords of
drum memory
Drum memory was a magnetic data storage device invented by Gustav Tauschek in 1932 in Austria. Drums were widely used in the 1950s and into the 1960s as computer memory.
Many early computers, called drum computers or drum machines, used drum ...
providing
backing store for the
LRU cache algorithm, paper tape readers, paper tape punches, plotters, and printers.
See also
*
RC 4000 Multiprogramming System
The RC 4000 Multiprogramming System (also termed Monitor or RC 4000 depending on reference) is a discontinued operating system developed for the RC-4000 third generation computer in 1969. For clarity, this article mostly uses the term Moni ...
*
Ring (computer security)
In computer science, hierarchical protection domains, often called protection rings, are mechanisms to protect data and functionality from faults (by improving fault tolerance) and malicious behavior (by providing computer security).
Computer ...
*
Timeline of operating systems
This article presents a timeline of events in the history of computer operating systems from 1951 to the current day. For a narrative explaining the overall developments, see the History of operating systems.
1950s
* 1951
** LEO I 'Lyons Elec ...
* Source code is available at http://archive.computerhistory.org/resources/text/Knuth_Don_X4100/PDF_index/k-1-pdf/k-1-C1063.6-source-THE-os.pdf
References
{{Edsger Dijkstra
Assembly language software
Discontinued operating systems
Dutch inventions
Computer science in the Netherlands
Information technology in the Netherlands
Edsger W. Dijkstra
1968 software