Thoth (operating system)

Last updated
Thoth
Developer University of Waterloo
Written in Eh, Zed, assembly language
OS family RTOS
Working stateDiscontinued
Initial releaseOctober 1976;46 years ago (1976-10)
Marketing targetResearch
Available in English
Update method Recompiling
Platforms Honeywell 6050
Data General Nova 2
Texas Instruments TI990/10
Kernel type Microkernel
Succeeded byPort, Verex, Harmony, V

Thoth is a real-time, message passing operating system (OS) developed at the University of Waterloo in Waterloo, Ontario Canada.

Contents

History

Thoth was developed at the University of Waterloo in Waterloo, Ontario, Canada. The curriculum at Waterloo includes a Real Time Operating Systems course and an associated "Train lab", where students must develop a real-time operating system (RTOS) to control a model track with multiple trains. [1] [2] [3]

In 1972, the B programming language, a derivative of BCPL, was brought to Waterloo by Stephen C. Johnson while on sabbatical from Bell Labs. [4] A new language derived from B, named Eh, was developed at Waterloo. Thoth was written originally in Eh with some assembly language. [5] [6]

Initial development of Thoth occurred on a Honeywell 6050 computer. [7] It was first run on a Data General Nova 2 in May 1976, and was next ported to a Texas Instruments TI990/10 in August 1976. [7] [5]

In October 1976, the University of Waterloo published Laurence S. Melen's Master's Thesis, titled "A Portable Real-Time Executive, Thoth". [8]

Eh was later upgraded, in part with the addition of data types, and renamed Zed. Thoth was then rewritten in Zed. [9] [10] [11] [12] [13]

One of the early principal developers of Thoth was David Cheriton. Cheriton would go on to develop the Verex kernel, and the V-System OS; both influenced by Thoth. Another early developer was Michael Malcolm, who would later found Waterloo Microsystems, Network Appliances, Inc., Blue Coat Systems, and Kaliedescape, several of whose operating systems are believed to have been derived from or influenced by Thoth.

Certain papers describe DEMOS as the inspiration for Thoth. [14] As prior art Cheriton cited Per Brinch Hansen's RC 4000, then listed Thoth, DEMOS, and Accent together as later developments. [15] Other influences on the development of Thoth included Multics, Data General's RTOS, Honeywell GCLS, and Unix. [5] Later references cite Thoth as the original implementation of its particular use of synchronous message passing and multiprocess program structure, which were subsequently applied by other projects. [16] :2

Work on Thoth ended around 1982. [17]

Features

Thoth was developed to meet four goals: [7]

  1. Easily portable to other hardware [3]
  2. Programs run as a set of inexpensive, cooperating concurrent processes with efficient inter-process communications (IPC) [5]
  3. Suitable for real-time uses as to system response to external events
  4. Adaptable and scalable to a wide range of real-time uses

Thoth exposes the same abstract machine to application software, regardless of the underlying physical machine. [5] [18] This abstract machine was defined with certain minimal requirements, such that meeting these requirements allowed a given computer to be included in the Thoth Domain of potential Thoth port targets.

Processes running under Thoth can be grouped into "Teams". All processes within a team share a common address space and can share data. [19] [7] This is similar to other systems' concepts of "lightweight processes" or threads. [20] Processes not members of the same team communicate using Thoth's IPC.

Inter Process Communication in Thoth is primarily accomplished by means of synchronous message passing. [7] This approach greatly simplified message queueing. [21]

Although the term was not current when the original papers were written, Thoth has been called a microkernel. [22] [20] [23]

Thoth's synchronous message passing IPC lent itself to the application of an anthropomorphic programming model, building on the work of Carl Hewitt's actor model, and of Smalltalk. [17]

Legacy

The Thoth operating system provided either the basis or the inspiration for several later projects, some of which are listed below.

Academic

Commercial

Related Research Articles

<span class="mw-page-title-main">Computer multitasking</span> Concurrent execution of multiple processes

In computing, multitasking is the concurrent execution of multiple tasks over a certain period of time. New tasks can interrupt already started ones before they finish, instead of waiting for them to end. As a result, a computer executes segments of multiple tasks in an interleaved manner, while the tasks share common processing resources such as central processing units (CPUs) and main memory. Multitasking automatically interrupts the running program, saving its state and loading the saved state of another program and transferring control to it. This "context switch" may be initiated at fixed time intervals, or the running program may be coded to signal to the supervisory software when it can be interrupted.

Mach is a kernel developed at Carnegie Mellon University by Richard Rashid and Avie Tevanian to support operating system research, primarily distributed and parallel computing. Mach is often considered one of the earliest examples of a microkernel. However, not all versions of Mach are microkernels. Mach's derivatives are the basis of the operating system kernel in GNU Hurd and of Apple's XNU kernel used in macOS, iOS, iPadOS, tvOS, and watchOS.

<span class="mw-page-title-main">Thread (computing)</span> Smallest sequence of programmed instructions that can be managed independently by a scheduler

In computer science, a thread of execution is the smallest sequence of programmed instructions that can be managed independently by a scheduler, which is typically a part of the operating system. The implementation of threads and processes differs between operating systems. In Modern Operating Systems, Tanenbaum shows that many distinct models of process organization are possible. In many cases, a thread is a component of a process. The multiple threads of a given process may be executed concurrently, sharing resources such as memory, while different processes do not share these resources. In particular, the threads of a process share its executable code and the values of its dynamically allocated variables and non-thread-local global variables at any given time.

<span class="mw-page-title-main">Symmetric multiprocessing</span> The equal sharing of all resources by multiple identical processors

Symmetric multiprocessing or shared-memory multiprocessing (SMP) involves a multiprocessor computer hardware and software architecture where two or more identical processors are connected to a single, shared main memory, have full access to all input and output devices, and are controlled by a single operating system instance that treats all processors equally, reserving none for special purposes. Most multiprocessor systems today use an SMP architecture. In the case of multi-core processors, the SMP architecture applies to the cores, treating them as separate processors.

Multiprocessing is the use of two or more central processing units (CPUs) within a single computer system. The term also refers to the ability of a system to support more than one processor or the ability to allocate tasks between them. There are many variations on this basic theme, and the definition of multiprocessing can vary with context, mostly as a function of how CPUs are defined.

<span class="mw-page-title-main">QNX</span> Real-time operating system (RTOS) software

QNX is a commercial Unix-like real-time operating system, aimed primarily at the embedded systems market. QNX was one of the first commercially successful microkernel operating systems.

<span class="mw-page-title-main">DragonFly BSD</span> Free and open-source Unix-like operating system

DragonFly BSD is a free and open-source Unix-like operating system forked from FreeBSD 4.8. Matthew Dillon, an Amiga developer in the late 1980s and early 1990s and FreeBSD developer between 1994 and 2003, began working on DragonFly BSD in June 2003 and announced it on the FreeBSD mailing lists on 16 July 2003.

The V operating system is a discontinued microkernel distributed operating system that was developed by faculty and students in the Distributed Systems Group at Stanford University from 1981 to 1988, led by Professors David Cheriton and Keith A. Lantz. V was the successor to the Thoth operating system and Verex kernel that Cheriton had developed in the 1970s. Despite similar names and close development dates, it is unrelated to UNIX System V.

<span class="mw-page-title-main">Inferno (operating system)</span> Distributed operating system

Inferno is a distributed operating system started at Bell Labs and now developed and maintained by Vita Nuova Holdings as free software under the MIT License. Inferno was based on the experience gained with Plan 9 from Bell Labs, and the further research of Bell Labs into operating systems, languages, on-the-fly compilers, graphics, security, networking and portability. The name of the operating system, many of its associated programs, and that of the current company, were inspired by Dante Alighieri's Divine Comedy. In Italian, Inferno means "hell", of which there are nine circles in Dante's Divine Comedy.

<span class="mw-page-title-main">XNU</span> Computer operating system kernel

XNU is the computer operating system (OS) kernel developed at Apple Inc. since December 1996 for use in the Mac OS X operating system and released as free and open-source software as part of the Darwin OS, which in addition to macOS is also the basis for the Apple TV Software, iOS, iPadOS, watchOS, and tvOS OSes. XNU is an abbreviation of X is Not Unix.

Micro-Controller Operating Systems is a real-time operating system (RTOS) designed by Jean J. Labrosse in 1991. It is a priority-based preemptive real-time kernel for microprocessors, written mostly in the programming language C. It is intended for use in embedded systems.

David Ross Cheriton is a Canadian computer scientist, mathematician, billionaire businessman, philanthropist, and venture capitalist. He is a computer science professor at Stanford University, where he founded and leads the Distributed Systems Group.

In computing, an inter-processor interrupt (IPI), also known as a shoulder tap, is a special type of interrupt by which one processor may interrupt another processor in a multiprocessor system if the interrupting processor requires action from the other processor. Actions that might be requested include:

<span class="mw-page-title-main">HelenOS</span>

HelenOS is an operating system based on a multiserver microkernel design. The source code of HelenOS is written in C and published under the BSD-3-Clause license.

<span class="mw-page-title-main">Software portability</span> Ability of a program to run on different platforms with little alteration

A computer program is said to be portable if there is very low effort required to make it run on different platforms. The pre-requirement for portability is the generalized abstraction between the application logic and system interfaces. When software with the same functionality is produced for several computing platforms, portability is the key issue for development cost reduction.

The Mac OS nanokernel is an operating system kernel serving as the basis of most PowerPC based system software versions 7 through 9 of the classic Mac OS, predating Mac OS X.

<span class="mw-page-title-main">Asymmetric multiprocessing</span>

An asymmetric multiprocessing system is a multiprocessor computer system where not all of the multiple interconnected central processing units (CPUs) are treated equally. For example, a system might allow only one CPU to execute operating system code or might allow only one CPU to perform I/O operations. Other AMP systems might allow any CPU to execute operating system code and perform I/O operations, so that they were symmetric with regard to processor roles, but attached some or all peripherals to particular CPUs, so that they were asymmetric with respect to the peripheral attachment.

A multiprocessor system is defined as "a system with more than one processor", and, more precisely, "a number of central processing units linked together to enable parallel processing to take place".

Harmony is an experimental computer operating system (OS) developed at the National Research Council Canada in Ottawa. It is a second-generation message passing system that was also used as the basis for several research projects, including robotics sensing and graphical workstation development. Harmony was actively developed throughout the 1980s and into the mid-1990s.

References

  1. "CS 452 Real-Time Programming". University of Waterloo, Cheriton School of Computer Science.
  2. "CS 452/652 - Real-time Programming". University of Waterloo, Computing Science Computing Facility.
  3. 1 2 Malcolm, Michael (24 March 2009). "2009 March 24: Deloitte speakers series". University of Waterloo, Institute of Computer Research.
  4. Ritchie, Dennis M. (April 1993). The Development of the C Language (PDF). Association for Computing Machinery. Archived from the original (PDF) on 2015-07-24. Retrieved 2020-10-06.
  5. 1 2 3 4 5 Cheriton, David R.; Malcolm, Michael A.; Melen, Lawrence S.; Sager, Gary R. (March 1978). "Thoth, a Portable Real-Time Operating System (Revised)" (PDF). University of Waterloo Computer Science Department.{{cite journal}}: Cite journal requires |journal= (help)
  6. Braga, Reinaldo S. C. (November 1976). "Eh Reference Manual" (PDF). University of Waterloo Computer Science Department.{{cite journal}}: Cite journal requires |journal= (help)
  7. 1 2 3 4 5 Cheriton, David R.; Malcolm, Michael A.; Melen, Lawrence S.; Sager, Gary R. (February 1979). "Thoth, a Portable, Real-Time Operating System" (PDF). Communications of the ACM. 22 (2): 105–115. doi:10.1145/359060.359074. S2CID   14350500.
  8. Melen, Laurence S. (October 1976). "A Portable Real-Time Executive, Thoth". Department of Computer Science, University of Waterloo.{{cite journal}}: Cite journal requires |journal= (help)
  9. Lion, John (October 1993). "Letter from New Jersey — January, 1979". Australian Unix Users Group Newsletter. Vol. 14, no. 5. The AUUG Inc. pp. 48–51.
  10. "Programming Languages Database: Z". epocalc. 2012.
  11. Bonkowski, G. Bert; Gentleman, W. Morven; Malcolm, Michael A. (May 1979). "Porting The Zed Compiler" (PDF). University of Waterloo Computer Science Department.{{cite journal}}: Cite journal requires |journal= (help)
  12. 1 2 Lockhart, Thomas Wayne (November 1979). The Design of a Verifiable Operating System Kernel (Thesis). The University of British Columbia. doi:10.14288/1.0051812.
  13. Kinnersley, Bill (23 January 1995). "The Language List: Version 2.4". ckw.phys.ncku.edu.tw.
  14. Hutchinson, Norman A. (1987). "Emerald: An Object-Based Language for Distributed Programming" (PDF). University of Washington.{{cite journal}}: Cite journal requires |journal= (help)
  15. 1 2 Cheriton, David R. (March 1988). "The V Distributed System" (PDF). Communications of the ACM. 31 (3): 314–333. doi:10.1145/42392.42400. S2CID   7523994.
  16. 1 2 Burkowski, Forbes J.; Clarke, Charles L. A.; Cowan, S. Crispin; Vreugdenhil, G. J. (February 1995). "Performance Evaluation of the Sylvan Multiprocessor Architecture". University of Waterloo.{{cite journal}}: Cite journal requires |journal= (help)
  17. 1 2 Booth, Kellogg S.; Schaeffer, Jonathan; Gentleman, W. Morven (February 1984). "Anthropomorphic Programming" (PDF). University of Waterloo Computer Science Department.{{cite journal}}: Cite journal requires |journal= (help)
  18. Chubb, Lucy (1987). "A Multiprocess Operating System for 16 Bit Microcomputers". University of New South Sales, School of Electrical Engineering and Computer Science.{{cite journal}}: Cite journal requires |journal= (help)
  19. Comer, Douglas E.; Munson, Steven B (1988). "Efficient Interprocess Communication Using Shared Memory". Purdue University Department of Computer Science.{{cite journal}}: Cite journal requires |journal= (help)
  20. 1 2 O'Sullivan, Bryan (13 August 1996). "Answers to frequently asked questions for comp.os.research: Part 1 of 3 — 2.2.3. The history of threads". University at Albany Department of Computer Science.
  21. Fleisch, Brett D.; Co, Mark Allan A. (April 1997). "Workplace Microkernel and OS: A Case Study". Department of Computer Science, University of California. CiteSeerX   10.1.1.46.7315 .{{cite journal}}: Cite journal requires |journal= (help)
  22. Appavoo, Jonathan. "Optimizing Multi-Processor Operating Systems Software Research Review" (PDF). Boston University Department of Computer Science.{{cite journal}}: Cite journal requires |journal= (help)
  23. Depoutovitch, Alexandre (2011). "Otherworld — Giving Applications a Chance to Survive OS Kernel Crashes" (PDF). University of Toronto Graduate Department of Computer Science.{{cite journal}}: Cite journal requires |journal= (help)
  24. Cowan, D. D.; Boswell, F. D.; Grove, T. R. (December 1984). "A Distributed File-Server for a Personal Computer Network" (PDF). University of Waterloo Computer Systems Department.{{cite journal}}: Cite journal requires |journal= (help)
  25. Fonds, Wes Graham (5 August 1983). "Chronology: 1980s: A Decade of Expansion — 1981". University of Waterloo — Cheriton School of Computer Science.
  26. Tanner, P. P.; Buxton, W. (1985). Some Issues in Future User Interface Management System (UIMS) Development. User Interface Management Systems. Berlin. pp. 67–79.
  27. Boyle, Patrick David (June 1982). The Design of a Distributed Kernel for a Multiprocessor System (Thesis). University of British Columbia Department of Computer Science. doi:10.14288/1.0051817.
  28. Tevanian Jr., Avadis; Rashid, Richard F.; Golub, David B.; Black, David L.; Cooper, Eric; Young, Michael W. (August 1987). "Mach Threads and the Unix Kernel: The Battle for Control". Department of Computer Science Carnegie-Mellon University.{{cite journal}}: Cite journal requires |journal= (help)
  29. Chakraborty, Pinaki (2010). "Research Purpose Operating Systems — A Wide Survey" (PDF). GESJ: Computer Science and Telecommunications (3): 147–160. ISSN   1512-1232.
  30. Bin Shafaat, Ahmed; Xu, Shuxiang (26 December 2017). "A Comparative Study of Technologies Developed in Perspective of Distributed Operating Systems" (PDF). AMSE Journals: AMSE IIETA Publication: 2017-Series: Advances B. 60 (3): 613–629.
  31. Burkowski, F. J.; Cormack, G. V.; Dyment, J. D.; Pachl, J. K. (28 February 1987). "A Message-Based Architecture For High Concurrency". In Heath, Michael T. (ed.). Hypercube Multiprocessors 1986. Society for Industrial & Applied Mathematics, U.S. pp. 27–37. ISBN   978-0898712094.
  32. Beach, Richard J.; Beatty, John C.; Booth, Kellogg S.; Plebon, Darlene A.; Fiume, Eugene L. (July 1982). "The Message is the Medium: Multiprocess Structuring of an Interactive Paint Program". Computer Graphics. Vol. 16, no. 3. Association for Computing Machinery. pp. 277–287. doi:10.1145/965145.801292.
  33. Plebon, Darlene A.; Booth, Kellogg S. (1982). "Interactive Picture Creation System" (PDF). University of Waterloo.{{cite journal}}: Cite journal requires |journal= (help)
  34. Watt, Stephen Michael (1985). "Bounded Parallelism in Computer Algebra" (PDF). University of Waterloo.{{cite journal}}: Cite journal requires |journal= (help)
  35. Schröder, W. "A Distributed Process Execution and Communication Environment for High-Performance Application Systems" (PDF). Technische Universität Berlin.{{cite journal}}: Cite journal requires |journal= (help)
  36. van Dijk, G. J. W. (1 January 1993). "The design of the EMPS multiprocessor executive for distributed computing" (PDF). Technische Universiteit Eindhoven.{{cite journal}}: Cite journal requires |journal= (help)
  37. Chan, Patrick P. (July 1984). "Learning Considerations in User Interface Design: The Room Model" (PDF). University of Waterloo Computer Science Department.{{cite journal}}: Cite journal requires |journal= (help)
  38. Pai, Vivek S.; Druschel, Peter; Zwaenepoel, Willy. "Flash: An efficient and portable Web server" (PDF). Rice University Department of Computer Science.{{cite journal}}: Cite journal requires |journal= (help)
  39. "Embedded Applications — Technology for the Real World". The infraNET Project. 29 May 1998.
  40. Morris, James B. (February–April 1983). "The Powerful Tools of QNX". PC Magazine. pp. 269–297.
  41. Advani, Prakash (14 June 2001). "A talk with Paul Leroux". FreeOS.com.
  42. Oberle, Bonnie (30 October 1998). "Returning the favour". Imprint. Impring Publications, Waterloo. p. 7.
  43. Sager, Gary R.; Melber, John A.; Fong, Kenneth T. (January 1985). "System 75: The Oryx/Pecos operating system". AT&T Technical Journal. Vol. 64, no. 1. pp. 251–268. doi:10.1002/j.1538-7305.1985.tb00431.x.
  44. Coppens, J.A.W.M (August 1988). "Information security in Local Area Networks, especially in Waterloo Port" (PDF). Technische Universiteit Eindhoven.{{cite journal}}: Cite journal requires |journal= (help)
  45. "Port - (Computer Language)". Online Historical Encyclopaedia of Programming Languages.
  46. "Port". Computer Dictionary of Information Technology.
  47. Rigney, Steve (April 1992). "LAN Fundamentals Part 2 — LANstep". PC Magazine. p. 316.
  48. Nunn, Tom (24 August 1994). "Hayes tries to unload Kitchener-Waterloo research and development facility". The Gazette. Montreal, QC Canada.
  49. Hitz, David; Harris, Guy; Lau, James K.; Schwartz, Allan M. (January 1990). "Using Unix as One Component of a Lightweight Distributed Kernel for Multiprocessor File Servers" (PDF). Auspex.{{cite journal}}: Cite journal requires |journal= (help)
  50. Kopp, Carlo (June 1997). "Brave Little Toasters?". Dr. Carlo Kopps's Industry Publications.
  51. Jerian, Charles P. "Chuck's Home Page — I worked for CacheFlow Inc". jerian.tripod.com.

Further reading