RC 4000 Multiprogramming System

RC 4000 Multiprogramming System

The RC 4000 Multiprogramming System was an operating system developed for the RC 4000 minicomputer in 1969. It 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 kernel. Although RC 4000 itself was not very successful it was nevertheless extremely influential, sparking the microkernel concept that dominated operating system research through the 1970s and 80s. The system is also known as Monitor and, somewhat confusingly, simply RC 4000 depending on the reference. For clarity, this article will use the term Monitor.

Monitor was created largely by one programmer, Per Brinch Hansen, who worked at Regnecentralen where the RC 4000 was being designed. Leif Svalgaard participated in the implementation and testing of 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, for instance, uses small interacting programs for many tasks, transferring data through a system known as "pipes". However a large amount of fundamental code is buried in the kernel itself, notably things like file systems and program control. Monitor would remove this code as well, 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 communications. Data to be sent from one process to another was copied into an empty memory buffer, and when the receiving program was ready, back out again. The buffer was then returned to the pool. Programs had a very simple API for passing data, using an asynchronous 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 than Mach's completely I/O-based system.

Monitor divided the application space in two; "internal processes" were traditional programs, started on request, while "external programs" were effectively device drivers. External processes were actually handled outside of user space by the nucleus, although they could be started and stopped just like any other program. Internal programs 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 was left entirely to the programs, if required at all (in the 1960's, multitasking was a debatable feature). One user could start up a session in a pre-emptive multitasking environment, while another might start in a single-user mode to run batch processing at higher speed. Real-time scheduling could be supported by sending messages to a timer process that would only return at the appropriate time.

Monitor proved to have truly terrible performance. Much of this was due to the cost of IPC, a problem that has since plagued most microkernels. Under Monitor data was copied twice for every message, and memory handling on the RC 4000 was not particularly fast. Another area of serious concern was launching and killing programs to handle requests, which happened all the 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 to improve messaging by using the copy-on-write 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 Liedtke L4 microkernel demonstrated an order-of-magnitude improvement in IPC overheads.

ee also

*Timeline of operating systems

References

*cite journal | author = Brinch Hansen, Per | year = 1970 | volume = 13 | title = The Nucleus of a Multiprogramming Operating System | journal = Communications of the ACM | pages = 238--250 | url = http://www.brinch-hansen.net/papers/1970a.pdf
* [http://brinch-hansen.net/papers/1969a.pdf RC 4000 SOFTWARE: MULTIPROGRAMMING SYSTEM]


Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Look at other dictionaries:

  • List of operating systems — Operating systems can be categorized by technology, ownership, licensing, working state, usage, and by many other characteristics. In practice, many of these groupings may overlap.Early, and historically important*CTSS (The Compatible Timeshare… …   Wikipedia

  • Per Brinch Hansen — (November 13, 1938 July 31, 2007) was a Danish American computer scientist known for concurrent programming theory.BiographyHe was born in Frederiksberg, in Copenhagen, Denmark. Brinch Hansen was one of the pioneers of concurrent programming and… …   Wikipedia

  • Per Brinch Hansen — Saltar a navegación, búsqueda Per Brinch Hansen. 1999. Universidad de Siracusa, NY Per Brinch Hansen (EN DESARROLLO) (13 de noviembre 1938 31 de julio 2007) fue un danés estadounidense informático conocido por la teoría de la programación… …   Wikipedia Español

  • Kernel (computing) — A kernel connects the application software to the hardware of a computer In computing, the kernel is the main component of most computer operating systems; it is a bridge between applications and the actual data processing done at the hardware… …   Wikipedia

  • 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. Contents 1 1950s 2 1960s 3 1970s …   Wikipedia

  • Kernel (computer science) — In computer science, the kernel is the central component of most computer operating systems (OS). Its responsibilities include managing the system s resources (the communication between hardware and software components). As a basic component of… …   Wikipedia

  • Per Brinch Hansen — Brinch Hansen 1959 Per Brinch Hansen (* 13. November 1938 in Frederiksberg; † 31. Juli 2007) war ein dänischer Informatiker. Er gilt als Pionier der Entwicklung von Betriebssystemen und der Nebenläufigkeits Programmierung (Concurrent Programming) …   Deutsch Wikipedia

  • List of IBM products — The following is a list of notable products from the International Business Machines (IBM) Corporation and its predecessor corporations, beginning in the 1890s, and spanning punched card machinery, time clocks, and typewriters, via mainframe… …   Wikipedia

  • Système d'exploitation pour carte à puce — Les systèmes d exploitation pour carte à puce aussi appelés COS[note 1] assurent fondamentalement les mêmes fonctions que les autres systèmes d exploitation, mais dans un contexte matériel où les limitations matérielles et les problématiques de… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”