| THE multiprogramming system | |
|---|---|
| Developer | Eindhoven University of Technology (Technische Hogeschool Eindhoven); Edsger Dijkstra,et al. |
| Written in | Electrologica X8assembly language |
| Working state | Discontinued |
| Initial release | 1965; 60 years ago (1965) |
| Final release | Final / 1968; 57 years ago (1968) |
| Marketing target | Research |
| Available in | English |
| Update method | Compile fromsource code |
| Supported platforms | Electrologica X8 |
| Kernel type | Layered |
| Default user interface | Paper tape |
TheTHE multiprogramming system (THE OS) was a computeroperating system designed by a team led byEdsger W. Dijkstra, described in monographs in 1965-66[1] and published in 1968.[2]Dijkstra never named the system; "THE" is simply the abbreviation of "Technische Hogeschool Eindhoven", then the name (inDutch) of theEindhoven University of Technology of theNetherlands. The THE system was primarily abatch system[3] that supportedmultitasking; it was not designed as amulti-user operating system. It was much like theSDS 940, but "the set ofprocesses in the THE system was static".[3]
The THE system apparently introduced the first forms of software-basedpagedvirtual memory (theElectrologica X8 did not supporthardware-basedmemory management),[3] freeing programs from being forced to use physical locations on thedrum memory. It did this by using a modifiedALGOLcompiler (the onlyprogramming language supported by Dijkstra's system) to "automatically generatecalls to system routines, which made sure the requested information was in memory,swapping if necessary".[3] Paged virtual memory was also used forbufferinginput/output (I/O) device data, and for a significant portion of the operating system code, and nearly all theALGOL 60 compiler. In this system,semaphores were used as a programming construct for the first time.
The design of the THE multiprogramming system is significant for its use of alayered structure, in which "higher" layers depend on "lower" layers only:
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 division of thekernel into layers was similar in some ways toMultics' laterring-segmentation model. Several subsequent operating systems have used layering to some extent, includingWindows NT andmacOS, although usually with fewer layers.
The code of the system was written inassembly language for the DutchElectrologica X8 computer. This computer had aword size of 27 bits, 48kilowords ofcore memory,[3] 512 kilowords ofdrum memory providingbacking store for theLRU cache algorithm, paper tape readers, paper tape punches, plotters, and printers.