Thoth (operating system)

Last updated
Thoth
Developer University of Waterloo
Written in Eh, Zed, assembly language
OS family RTOS
Working stateDiscontinued
Initial releaseOctober 1976;48 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">Microkernel</span> Kernel that provides fewer services than a traditional kernel

In computer science, a microkernel 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, thread management, and inter-process communication (IPC).

Mach is an operating system 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">Process (computing)</span> Particular execution of a computer program

In computing, a process is the instance of a computer program that is being executed by one or many threads. There are many different process models, some of which are light weight, but almost all processes are rooted in an operating system (OS) process which comprises the program code, assigned system resources, physical and logical access permissions, and data structures to initiate, control and coordinate execution activity. Depending on the OS, a process may be made up of multiple threads of execution that execute instructions concurrently.

<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. In many cases, a thread is a component of a process.

<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.

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.

<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">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 being the basis for macOS, is also the basis for Apple TV Software, iOS, iPadOS, watchOS, visionOS, and tvOS.

<span class="mw-page-title-main">Per Brinch Hansen</span> Danish-American computer scientist

Per Brinch Hansen was a Danish-American computer scientist known for his work in operating systems, concurrent programming and parallel and distributed computing.

David Ross Cheriton is a Canadian computer scientist, 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> Operating system

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">Gernot Heiser</span> Australian computer scientist

Gernot Heiser is a Scientia Professor and the John Lions Chair for operating systems at UNSW Sydney, where he leads the Trustworthy Systems group (TS).

<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". 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". Institute for 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 (Technical report).
  6. Braga, Reinaldo S. C. (November 1976). Eh Reference Manual (PDF). University of Waterloo Computer Science Department (Technical report).
  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 (Technical report). Department of Computer Science, University of Waterloo.
  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 (Technical report).
  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) (Technical report). University of Washington.
  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 (Technical report). University of Waterloo.
  17. 1 2 Booth, Kellogg S.; Schaeffer, Jonathan; Gentleman, W. Morven (February 1984). Anthropomorphic Programming (PDF). University of Waterloo Computer Science Department (Technical report).
  18. Chubb, Lucy (1987). A Multiprocess Operating System for 16 Bit Microcomputers (Technical report). University of New South Sales, School of Electrical Engineering and Computer Science.
  19. Comer, Douglas E.; Munson, Steven B (1988). Efficient Interprocess Communication Using Shared Memory (Technical report). Purdue University Department of Computer Science.
  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 (Technical report). Department of Computer Science, University of California. CiteSeerX   10.1.1.46.7315 .
  22. Appavoo, Jonathan. Optimizing Multi-Processor Operating Systems Software Research Review (PDF) (Technical report). Boston University Department of Computer Science.
  23. Depoutovitch, Alexandre (2011). Otherworld — Giving Applications a Chance to Survive OS Kernel Crashes (PDF) (Technical report). University of Toronto Graduate Department of Computer Science.
  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 (Technical report).
  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 (Technical report). Department of Computer Science Carnegie-Mellon University.
  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) (Technical report). University of Waterloo.
  34. Watt, Stephen Michael (1985). Bounded Parallelism in Computer Algebra (PDF) (Technical report). University of Waterloo.
  35. Schröder, W. A Distributed Process Execution and Communication Environment for High-Performance Application Systems (PDF) (Technical report). Technische Universität Berlin.
  36. van Dijk, G. J. W. (1 January 1993). The design of the EMPS multiprocessor executive for distributed computing (PDF) (Technical report). Technische Universiteit Eindhoven.
  37. Chan, Patrick P. (July 1984). Learning Considerations in User Interface Design: The Room Model (PDF). University of Waterloo Computer Science Department (Technical report).
  38. Pai, Vivek S.; Druschel, Peter; Zwaenepoel, Willy. Flash: An efficient and portable Web server (PDF) (Technical report). Rice University Department of Computer Science.
  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) (Technical report). Technische Universiteit Eindhoven.
  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) (Technical report). Auspex.
  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