THE multiprogramming system

THE multiprogramming system

Infobox OS
name = THE multiprogramming system



caption =
developer = Technische Hogeschool Eindhoven / Edsger Dijkstra (et al.)
source_model =
kernel_type =
supported_platforms = Electrologica X8
ui =
family =
released = 1968
latest_release_version =
latest_release_date =
latest_test_version =
latest_test_date =
marketing_target =
programmed_in = Assembly language
prog_language = ALGOL
language =
updatemodel =
package_manager =
working_state = Historic
license =
website =
The THE multiprogramming system was a computer operating system designed by a team led by Edsger Dijkstra, described in monographs in 1965-66 and published in 1968. Dijkstra never named the system; "THE" is simply the abbreviation of "Technische Hogeschool Eindhoven", then the name (in Dutch) of the Eindhoven University of Technology of the Netherlands. The THE system was primarily a batch system that supported multitasking; it was not designed as a multi-user operating system. It was much like the SDS 940, but "the set of processes in the THE system was static."

The THE system apparently introduced the first forms of software-based memory segmentation (the Electrologica X8 did not support hardware-based memory management)pg 512, "Chapter 13: Historical Perspective" of "Operating System Concepts" by Abraham Silberschatz and James L. Peterson, June 1988; ISBN 0-201-18760-4. 573 pages.] , freeing programmers from being forced to use actual physical locations on the drum memory. It did this by using a modified ALGOL compiler (the only programming language supported by Dijkstra's system) to "automatically generate calls to system routines, which made sure the requested information was in memory, swapping if necessary."

Design

The design of the THE multiprogramming system is significant for its use of a layered structure, in which "higher" layers only depend on "lower' layers:
* Layer 0 was responsible for the multiprogramming aspects of the operating system. It decided which process was allocated to the CPU. It dealt with interrupts and performed the context switches when a process change was required. This is the lowest level.
* Layer 1 was concerned with allocating memory to processes.
* Layer 2 dealt with inter-process communication and communication between the operating system and the console. The system used semaphores for synchronization, with Dijkstra's Banker's algorithm avoiding deadlocks.
* 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 compilation, execution, and printing of users' 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 overall control of the system (called the system operator).

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) 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 formal design process was highly successful, as reported by Dijkstra:

We have found it is possible to design a refined multiprogramming system in such a way that its logical soundness can be proved a priori and that its implementation admits exhaustive testing. The only errors that showed up during testing were trivial coding errors (occurring with a density of only one error per 500 instructions), each of them located with 10 minutes (classical) inspection at the machine and each of them correspondingly easy to remedy. [E. W. Dijkstra . "EWD 196: The structure of the 'THE'-multiprogramming system" (manuscript). Text [http://www.cs.utexas.edu/users/EWD/transcriptions/EWD01xx/EWD196.html] , PDF [http://www.cs.utexas.edu/users/EWD/ewd01xx/EWD196.PDF] ]

This division of the kernel into layers was similar in some ways to Multics' later ring-segmentation model. Several subsequent operating systems have used layering to some extent, including Windows NT and Mac OS X, although usually with fewer layers.

The code of the system was written in assembly language for the Dutch Electrologica X8 computer. This computer had 32K of core memory using 27-bit words, a 512K drum providing backing store for the LRU algorithm, paper tape readers, paper tape punches, and printers.

ee also

* Ring (computer security)
* Venus (operating system), a follow-up by Barbara Liskov inspired by the THE system. It updated the THE system's design to be a time-sharing system using paged-segmented memory, with the lowest levels written in microcode.
* Timeline of operating systems

References

* E. W. Dijkstra . "EWD 126: The Multiprogramming System for the EL X8 THE" (manuscript). 14 June 1965. Text [http://www.cs.utexas.edu/users/EWD/transcriptions/EWD01xx/EWD126.html] , PDF [http://www.cs.utexas.edu/users/EWD/ewd01xx/EWD126.PDF]
* E. W. Dijkstra, "The structure of the 'THE'-multiprogramming system", "Communications of the ACM" 11(5):341 – 346, 1968. [http://doi.acm.org/10.1145/363095.363143 (subscription)]


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Look at other dictionaries:

  • 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… …   Wikipedia

  • THE — is a three letter acronym that may refer to:* Technische Hogeschool Eindhoven (Eindhoven University of Technology), a Dutch university of technology ** THE multiprogramming system, a computer operating system which was developed there under… …   Wikipedia

  • Multiprogramming with a Variable number of Tasks (MVT) — was the most sophisticated of three available configurations of the OS/360 s control program.cite book author = IBM title = OS/360 Introduction series = IBM Systems Reference Library date = 1972 url = http://bitsavers.vt100.net/pdf/ibm/360/GC28… …   Wikipedia

  • Multiprogramming — Computer multiprogramming is the allocation of a computer system and its resources to more than one concurrent application, job or user ( program in this nomenclature). Initially, this technology was sought in order to optimize use of a computer… …   Wikipedia

  • Multiprogramming with a Variable number of Tasks — History of IBM mainframe operating systems On early mainframe computers: GM OS GM NAA I/O 1955 BESYS 1957 UMES 1958 SOS 1959 IBSYS 1960 CTSS 1961 On S/360 and successors: BOS/360 1965 TOS/360 1965 TSS/360 1967 MTS 1967 …   Wikipedia

  • Communications of the ACM — Editor in Chief Moshe Y. Vardi Categories Computer Science Frequency monthly First issue 1957 Company Association for Computing Machinery …   Wikipedia

  • Communications of the ACM — Для улучшения этой статьи желательно?: Добавить иллюстрации …   Википедия

  • IBM System/34 — The IBM System/34 was a minicomputer marketed by IBM from 1978 to 1983. It was a multi user, multi tasking successor to the single user System/32. Most notably, it included two very different processors, one based on System/32 and the second… …   Wikipedia

  • IBM System/36 — The IBM System/36 was a minicomputer marketed by IBM from 1983 to 2000. It was a multi user, multi tasking successor to the System/34. Like the System/34 and the older System/32, the System/36 was primarily programmed in the RPG II language. One… …   Wikipedia

  • multiprogramming — noun Date: 1959 the technique of utilizing several interleaved programs concurrently in a single computer system …   New Collegiate Dictionary

Share the article and excerpts

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