The RC 4000 Multiprogramming System (also termed Monitor or RC 4000 depending on reference) is a discontinued
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 ...
developed for the RC-4000 third generation computer in 1969.
For clarity, this article mostly uses the term Monitor.
Overview
The RC 4000 Multiprogramming System is historically notable for being the first attempt to break down an operating system into a group of interacting programs communicating via a
message passing
In computer science, message passing is a technique for invoking behavior (i.e., running a program) on a computer. The invoking program sends a message to a process (which may be an actor or object) and relies on that process and its supporting ...
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 ...
. RC 4000 was not widely used, but was highly influential, sparking the
microkernel
In computer science, a microkernel (often abbreviated as μ-kernel) is the near-minimum amount of software that can provide the mechanisms needed to implement an operating system (OS). These mechanisms include low-level address space management, ...
concept that dominated operating system research through the 1970s and 1980s.
Monitor was created largely by one programmer,
Per Brinch Hansen
Per Brinch Hansen (13 November 1938 – 31 July 2007) was a Denmark, Danish-United States, American computer scientist known for his work in operating systems, Concurrent computing, concurrent Computer programming, programming and Parallel comput ...
, who worked at
Regnecentralen
Regnecentralen (RC) was the first Denmark, Danish computer company, founded on 12 October 1955. Through the 1950s and 1960s, they designed a series of computers, originally for their own use, and later to be sold commercially. Descendants of thes ...
where the RC 4000 was being designed. Leif Svalgaard participated in implementing and testing Monitor. Brinch Hansen found that no existing operating system was suited to the new machine, and was tired of having to adapt existing systems. He felt that a better solution was to build an underlying kernel, which he referred to as the ''nucleus'', that could be used to build up an operating system from interacting programs.
Unix
Unix (, ; trademarked as UNIX) is a family of multitasking, multi-user computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
, for instance, uses small interacting programs for many tasks, transferring data through a system called ''
pipelines or pipes''. However, a large amount of fundamental code is integrated into the kernel, notably things like
file systems and program control. Monitor would relocate such code also, making almost the entire system a set of interacting programs, reducing the kernel (nucleus) to a communications and support system only.
Monitor used a pipe-like system of shared memory as the basis of its
inter-process communication
In computer science, interprocess communication (IPC) is the sharing of data between running Process (computing), processes in a computer system. Mechanisms for IPC may be provided by an operating system. Applications which use IPC are often cat ...
(IPC). Data to be sent from one process to another was copied into an empty memory
data buffer
In computer science, a data buffer (or just buffer) is a region of memory used to store data temporarily while it is being moved from one place to another. Typically, the data is stored in a buffer as it is retrieved from an input device (such as ...
, and when the receiving program was ready, back out again. The buffer was then returned to the pool. Programs had a very simple application programming interface (
API
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
) for passing data, using an
asynchronous
Asynchrony is any dynamic far from synchronization. If and as parts of an asynchronous system become more synchronized, those parts or even the whole system can be said to be in sync.
Asynchrony or asynchronous may refer to:
Electronics and com ...
set of four methods. Client applications send data with
send message
and could optionally block using
wait answer
. Servers used a mirroring set of calls,
wait message
and
send answer
. Note that messages had an implicit "return path" for every message sent, making the semantics more like a
remote procedure call
In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in a different address space (commonly on another computer on a shared computer network), which is written as if it were a ...
than
Mach's completely
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) based system.
Monitor divided the application space in two: ''internal processes'' were the execution of traditional programs, started on request, while ''external processes'' were effectively device drivers. External processes were handled outside of user space by the nucleus, although they could be started and stopped just like any other program. Internal processes were started in the context of the ''parent'' that launched them, so each user could effectively build up their own operating system by starting and stopping programs in their own context.
Scheduling
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 ...
was left entirely to the programs, if required at all (in the 1960s,
computer multitasking
In computing, multitasking is the concurrent computing, concurrent execution of multiple tasks (also known as Process (computing), processes) over a certain period of time. New tasks can interrupt already started ones before they finish, instea ...
was a feature of debatable value). One user could start a session in a
pre-emptive multitasking
In computing, preemption is the act performed by an external scheduler — without assistance or cooperation from the task — of temporarily interrupting an executing task, with the intention of resuming it at a later time. This preemptive s ...
environment, while another might start in a single-user mode to run
batch processing
Computerized batch processing is a method of running software programs called jobs in batches automatically. While users are required to submit the jobs, no other interaction by the user is required to process the batch. Batches may automatically ...
at higher speed.
Real-time
Real-time, realtime, or real time may refer to:
Computing
* Real-time computing, hardware and software systems subject to a specified time constraint
* Real-time clock, a computer clock that keeps track of the current time
* Real-time Control Syst ...
scheduling could be supported by sending messages to a timer process that would only return at the appropriate time.
These two areas have seen the vast majority of development since Monitor's release, driving newer designs to use hardware to support messaging, and supporting threads within applications to reduce launch times. For instance, Mach required a
memory management unit
A memory management unit (MMU), sometimes called paged memory management unit (PMMU), is a computer hardware unit that examines all references to computer memory, memory, and translates the memory addresses being referenced, known as virtual mem ...
to improve messaging by using the
copy-on-write
Copy-on-write (COW), also called implicit sharing or shadowing, is a resource-management technique used in programming to manage shared data efficiently. Instead of copying data right away when multiple programs use it, the same data is shared ...
protocol and mapping (instead of copying) data from process to process. Mach also used threading extensively, allowing the external programs, or ''servers'' in more modern terms, to easily start up new handlers for incoming requests. Still, Mach IPC was too slow to make the microkernel approach practically useful. This only changed when
Jochen Liedtke
Jochen Liedtke (26 May 1953 – 10 June 2001) was a German computer scientist, noted for his work on microkernel operating systems, especially in creating the L4 microkernel family.
Career
Education
In the mid-1970s Liedtke studied for a d ...
's
L4 microkernel
L4 is a family of second-generation microkernels, used to implement a variety of types of operating systems (OS), though mostly for Unix-like, ''Portable Operating System Interface'' (POSIX) compliant types.
L4, like its predecessor microkernel ...
demonstrated IPC overheads reduced by an order-of-magnitude.
See also
*
THE multiprogramming system
The THE multiprogramming system or THE OS was a computer operating system designed by a team led by Edsger W. Dijkstra, described in monographs in 1965-66
(Jun 14, 1965)
and published in 1968.
Dijkstra never named the system; "THE" is simply ...
*
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 ...
References
*
RC 4000 Software: Multiprogramming SystemRC 4000 Reference Manualat bitsavers.org
{{Microkernel
Microkernel-based operating systems
Microkernels
1969 software