Honeywell 6050 Data General Nova 2 Texas Instruments TI990/10
Kernel type
Microkernel
Succeeded by
Port, Verex, Harmony, V
Thoth is a real-time, message passing operating system (OS) developed at the University of Waterloo in Waterloo, Ontario Canada .
Contents
1History
2Features
3Legacy
3.1Academic
3.2Commercial
4References
5Further reading
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]
Easily portable to other hardware[3]
Programs run as a set of inexpensive, cooperating concurrent processes with efficient inter-process communications (IPC)[5]
Suitable for real-time uses as to system response to external events
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
The microNet distributed file server system at the University of Waterloo ran on an operating system named WatSys that was similar to Thoth, and Port.[24] WatSys debuted in 1981.[25]
The National Research Council of Canada was the development home of the Harmony operating system, a derivative of Thoth oriented towards real-time robot control.[26]
Cheriton took a position at the University of British Columbia, where he was involved in developing Verex, and Distributed Verex, using many of the ideas he had earlier explored in Thoth.[12][27]
Cheriton later moved to Stanford University in the US, where he developed the V-System, which continued to build on earlier work with Thoth.[15][28][29][30]
The Sylvan Multiprocessing system's architecture included a coprocessor that implemented Thoth's synchronous message passing primitives (and Ada's extended rendezvous) in hardware.[16][31]
Thoth and its message passing IPC were used to underpin a multi-process paint program that employed the anthropomorphic programming model.[32][33]
Thoth's message passing semantics were part of an experimental parallel-processing version of the computer algebra system (CAS) Maple.[34]
The distributed Process Execution And Communication Environment (PEACE) was developed for high-performance applications. The paper cites Thoth as a "major foundation" for the project.[35]
The Eindhoven Multi-Processor System (EMPS) executive put an emphasis on efficiency. Thoth provided the inspiration for the design of the EMPS kernel.[36]
An experimental human-computer interface environment named the Room system was built on Waterloo Port, which was derived from Thoth and which used its IPC techniques. The Room paper references earlier Thoth papers.[37]
The Flash web server, a research project with an emphasis on efficiency and portability, was said to resemble Thoth in its method of multi-process structuring and concept of process teams communicating via message passing.[38]
Commercial
Gordon Bell and Dan Dodge, developers of the QNX message passing realtime operating system, both worked with Thoth while they were students at Waterloo.[39][40][41][42]
AT&T's System 75 Office Communication System was controlled by the Oryx kernel and the Pecos set of essential system processes, jointly referred to as Oryx/Pecos. It used ideas from Thoth, DEMOS, and an internal AT&T project.[43]
The commercial Waterloo Port network operating system was derived from Thoth.[44] The associated Zed language was upgraded to become the PORT language for Waterloo Port.[45][46]
Hayes Microcomputer Products acquired Waterloo Microsystems, and rebranded and upgraded the Waterloo Port product to create LANstep.[47][48]
The Auspex storage company produced the Functional Multiprocessing Kernel (FMK), which employed concepts identified as having been first developed in Thoth.[49] Unlike the V-System and Waterloo Port, FMK had no memory management.
Early versions of Network Appliance, Inc.'s storage appliance operating system have been described as being very similar to Thoth.[50] NetApp's OS was written by David Hitz, who had previously been at Auspex.
In 1996 the CacheFlow web acceleration appliance company released their CacheOS, which was based on Thoth.[51] In 2001 CacheFlow was renamed Blue Coat Systems and, with the addition of a policy engine, CacheOS became the Secure Gateway Operating System (SGOS).
↑ 3.03.1Malcolm, Michael (24 March 2009). "2009 March 24: Deloitte speakers series". https://uwaterloo.ca/institute-computer-research/events/2009-march-24.
↑Ritchie, Dennis M. (April 1993). "The Development of the C Language". Association for Computing Machinery. http://heim.ifi.uio.no/inf2270/programmer/historien-om-C.pdf. Retrieved 2020-10-06.
↑ 5.05.15.25.35.4Cheriton, David R.; Malcolm, Michael A.; Melen, Lawrence S.; Sager, Gary R. (March 1978). Thoth, a Portable Real-Time Operating System (Revised). https://cs.uwaterloo.ca/research/tr/1978/CS-78-15.pdf.
↑Braga, Reinaldo S. C. (November 1976). Eh Reference Manual. https://cs.uwaterloo.ca/research/tr/1976/CS-76-45.pdf.
↑ 7.07.17.27.37.4Cheriton, David R.; Malcolm, Michael A.; Melen, Lawrence S.; Sager, Gary R. (February 1979). "Thoth, a Portable, Real-Time Operating System". Communications of the ACM22 (2): 105–115. doi:10.1145/359060.359074. https://zoo.cs.yale.edu/classes/cs422/2014fa/readings/papers/cheriton79thoth.pdf.
↑Melen, Laurence S. (October 1976). A Portable Real-Time Executive, Thoth. Department of Computer Science, University of Waterloo.
↑Lion, John (October 1993). "Letter from New Jersey — January, 1979". Australian Unix Users Group Newsletter (The AUUG Inc.) 14 (5): 48–51.
↑"Programming Languages Database: Z". 2012. http://www.epocalc.net/php/liste_langue.php?nom=Z.
↑Bonkowski, G. Bert; Gentleman, W. Morven; Malcolm, Michael A. (May 1979). Porting The Zed Compiler. https://cs.uwaterloo.ca/research/tr/1979/CS-79-22.pdf.
↑ 12.012.1Lockhart, Thomas Wayne (November 1979). The Design of a Verifiable Operating System Kernel (Thesis). The University of British Columbia. doi:10.14288/1.0051812.
↑Kinnersley, Bill (23 January 1995). "The Language List: Version 2.4". http://ckw.phys.ncku.edu.tw/public/pub/Notes/Computers/Lectures/Old/Programming/The Language List - Version 2_4, January 23, 1995.htm.
↑Hutchinson, Norman A. (1987). Emerald: An Object-Based Language for Distributed Programming. University of Washington. https://www.uio.no/studier/emner/matnat/ifi/INF5510/v15/phd/HutchinsonThesis.pdf.
↑ 15.015.1Cheriton, David R. (March 1988). "The V Distributed System". Communications of the ACM31 (3): 314–333. doi:10.1145/42392.42400. https://www.scs.stanford.edu/nyu/04fa/sched/readings/V.pdf.
↑ 16.016.1Burkowski, Forbes J.; Clarke, Charles L. A.; Cowan, S. Crispin; Vreugdenhil, G. J. (February 1995). Performance Evaluation of the Sylvan Multiprocessor Architecture. University of Waterloo. https://www.researchgate.net/publication/2585705.
↑Chubb, Lucy (1987). A Multiprocess Operating System for 16 Bit Microcomputers. University of New South Sales, School of Electrical Engineering and Computer Science. http://unsworks.unsw.edu.au/fapi/datastream/unsworks:58517/SOURCE01?view=true.
↑Comer, Douglas E.; Munson, Steven B (1988). Efficient Interprocess Communication Using Shared Memory. Purdue University Department of Computer Science. https://docs.lib.purdue.edu/cgi/viewcontent.cgi?article=1639&context=cstech.
↑ 20.020.1O'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". http://www.cs.albany.edu/~sdc/CSI400/Resources/comp.os.research.FAQ/FAQ-1.html.
↑Fleisch, Brett D.; Co, Mark Allan A. (April 1997). Workplace Microkernel and OS: A Case Study. Department of Computer Science, University of California.
↑Appavoo, Jonathan. Optimizing Multi-Processor Operating Systems Software Research Review. Boston University Department of Computer Science. http://www.cs.bu.edu/~jappavoo/Resources/Papers/depth.pdf.
↑Depoutovitch, Alexandre (2011). Otherworld — Giving Applications a Chance to Survive OS Kernel Crashes. University of Toronto Graduate Department of Computer Science. https://tspace.library.utoronto.ca/bitstream/1807/31733/1/Depoutovitch_Alexandre_201111_PhD_thesis.pdf.
↑Cowan, D. D.; Boswell, F. D.; Grove, T. R. (December 1984). A Distributed File-Server for a Personal Computer Network. https://cs.uwaterloo.ca/research/tr/1984/CS-84-54.pdf.
↑Fonds, Wes Graham (5 August 1983). "Chronology: 1980s: A Decade of Expansion — 1981". https://cs.uwaterloo.ca/40th/Chronology/1981.shtml.
↑Tanner, P. P.; Buxton, W. (1985). "Some Issues in Future User Interface Management System (UIMS) Development". User Interface Management Systems. Berlin. pp. 67–79. https://www.billbuxton.com/UIMStax.html.
↑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.
↑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. https://kilthub.cmu.edu/articles/journal contribution/MACH_threads_and_the_UNIX_kernel_the_battle_for_control/6607079/1.
↑Chakraborty, Pinaki (2010). "Research Purpose Operating Systems — A Wide Survey". GESJ: Computer Science and Telecommunications (3): 147–160. ISSN 1512-1232. http://gesj.internet-academy.org.ge/download.php?id=1682.pdf.
↑Bin Shafaat, Ahmed; Xu, Shuxiang (26 December 2017). "A Comparative Study of Technologies Developed in Perspective of Distributed Operating Systems". AMSE Journals: AMSE IIETA Publication: 2017-Series: Advances B60 (3): 613–629. http://iieta.org/sites/default/files/Journals/AMA/AMA_B/60.03_07.pdf.
↑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.. Hypercube Multiprocessors 1986. Society for Industrial & Applied Mathematics, U.S.. pp. 27–37. ISBN 978-0898712094.
↑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 (Association for Computing Machinery) 16 (3): 277–287. doi:10.1145/965145.801292. https://dl.acm.org/doi/abs/10.1145/965145.801292.
↑Plebon, Darlene A.; Booth, Kellogg S. (1982). Interactive Picture Creation System. University of Waterloo. https://cs.uwaterloo.ca/research/tr/1982/CS-82-46.pdf.
↑Watt, Stephen Michael (1985). Bounded Parallelism in Computer Algebra. University of Waterloo. https://www.csd.uwo.ca/~watt/pub/reprints/1985-smw-phd.pdf.
↑Schröder, W.. A Distributed Process Execution and Communication Environment for High-Performance Application Systems. Technische Universität Berlin. https://core.ac.uk/download/pdf/189920111.pdf.
↑van Dijk, G. J. W. (1 January 1993). The design of the EMPS multiprocessor executive for distributed computing. Technische Universiteit Eindhoven. https://pure.tue.nl/ws/files/2147961/393185.pdf.
↑Chan, Patrick P. (July 1984). Learning Considerations in User Interface Design: The Room Model. https://cs.uwaterloo.ca/research/tr/1984/CS-84-16.pdf.
↑Pai, Vivek S.; Druschel, Peter; Zwaenepoel, Willy. Flash: An efficient and portable Web server. Rice University Department of Computer Science. https://www.eecg.utoronto.ca/~amza/ece1747h/papers/flash.pdf.
↑"Embedded Applications — Technology for the Real World". 29 May 1998. https://infranet.uwaterloo.ca/index.php?MenuItemID=29.
↑Morris, James B. (February–April 1983). "The Powerful Tools of QNX". PC Magazine: 269–297.
↑Advani, Prakash (14 June 2001). "A talk with Paul Leroux". http://www.freeos.com/articles/4160.
↑Oberle, Bonnie (30 October 1998). "Returning the favour". Imprint (Impring Publications, Waterloo): p. 7. https://wp.issuu.com/uw_imprint/docs/1998-99_v21-n15_imprint/7.
↑Sager, Gary R.; Melber, John A.; Fong, Kenneth T. (January 1985). "System 75: The Oryx/Pecos operating system.". AT&T Technical Journal64 (1): 251–268. doi:10.1002/j.1538-7305.1985.tb00431.x.
↑Coppens, J.A.W.M (August 1988). Information security in Local Area Networks, especially in Waterloo Port. Technische Universiteit Eindhoven. https://research.tue.nl/files/46729710/292708-1.pdf.
↑Rigney, Steve (April 1992). "LAN Fundamentals Part 2 — LANstep". PC Magazine: 316. https://books.google.com/books?id=AoKUhNoOys4C&q="Waterloo+Port"+LANstep&pg=PP340.
↑Nunn, Tom (24 August 1994). "Hayes tries to unload Kitchener-Waterloo research and development facility". The Gazette (Montreal, QC Canada). https://www.newspapers.com/newspage/424316131/.
↑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. Auspex. http://www.bitsavers.org/pdf/auspex/techReport/tr05.pdf.
↑Kopp, Carlo (June 1997). "Brave Little Toasters?". http://users.monash.edu/~carlo/SYSTEMS/Network-Appliance-0697.html.
↑Jerian, Charles P.. "Chuck's Home Page — I worked for CacheFlow Inc". http://jerian.tripod.com/.
Further reading
Malcolm, Michael A.; Stafford, Gary J. (September 1977). The Thoth Assembler Writing Kit. https://cs.uwaterloo.ca/research/tr/1977/CS-77-14.pdf.
Cheriton, D. R.; Murphy, W. (September 1979). Verex System Programmer's Manual. University of British Columbia.
Cheriton, David R. (1979). Designing an Operating System to be Verifiable.
Cheriton, D. R. (September 1980). The Verex Kernel. University of British Columbia.
Cheriton, D. R. (November 1981). "The Design of a Distributed Kernel". Proceedings of ACM National Conference.
Wallis, Peter J. L. (1982). Portable programming. Macmillan. ISBN 0333310365.
Cheriton, David R. (1982). The Thoth system: multi-process structuring and portability. North-Holland. ISBN 0-444-00701-6.
Malcolm, Michael Alexander; Dyment, Doug (December 1983). "Experience designing the waterloo port user interface". Proceedings of the 1983 ACM SIGSMALL symposium on Personal and small computers - SIGSMALL '83. pp. 168–175. doi:10.1145/800219.806664. ISBN 0897911237.
v
t
e
Real-time operating systems (RTOS)
Comparison of real-time operating systems
Open-source
BeRTOS
ChibiOS/RT
Contiki
eCos
ERIKA Enterprise
FreeRTOS
Fuchsia
FunkOS
Mynewt OS
Nano-RK
NuttX
RIOT
RTAI
RTEMS
RTLinux
RT-Thread
seL4
TI-RTOS
TRON
Wombat OS
Xenomai
Zephyr
Proprietary
4690 OS
DioneOS
embOS
Integrity
Junos OS
LynxOS
µC/OS-II
MQX
Nucleus RTOS
OpenComRTOS
OSE
OS-9
OS2000
PikeOS
QNX
REAL/32
REX OS
ScreenOS
ThreadX
TPF
VRTX
VxWorks
Windows Embedded Compact
Historic
4680 OS
Concurrent DOS
DNIX
DSOS
EROS
FlexOS
MERT/UNIX-RT
Multiuser DOS
pSOS
RMX
RSX-11
RT-11
Sintran III
Symbian
THEOS
UNOS
Category
v
t
e
Microkernels-nanokernels
Kernels
ADEOS
EPOC
EKA1
EKA2
Eumel
Exec
ExecSG
EROS
K42
L3
L4
Little Kernel
Mac OS nanokernel
Mach
GNU Mach
MicroEmpix
µ-velOSity
nucleus
NuKernel
Off++
Opus
PowerUP
Quark
TI-RTOS kernel
Vanguard
WarpOS
Zircon
Operating systems
AmigaOS
Amoeba
AROS
AspireOS
Broadway
Icaros Desktop
ARX
BeRTOS
ChibiOS/RT
ChorusOS
Copland
Cosmos
EROS
FreeRTOS
Fuchsia
Genode
GNOSIS
GNU Hurd
HelenOS
Hydra
Integrity
JX
JavaOS
KeyKOS
Lites
Classic Mac OS (PowerPC kernel)
MachTen
MacMach
MeikOS
MERT
µC/OS
Midori
MINIX
Minix-vmd
MINIX 3
MkLinux
MorphOS
MQX
NLTSS
Nucleus RTOS
NuttX
OS2000
OSE
Phantom OS
PikeOS
QNX
RC 4000
Redox
REX OS
RIOT
SharpOS
Singularity
SPIN
Spring
Symbian
Taligent OS
ThreadX
TI-RTOS
Tinix
UNICOS
V
Verve
VRTX
VSTa
Wombat OS
Workplace OS
Zephyr
0.00
(0 votes)
Original source: https://en.wikipedia.org/wiki/Thoth (operating system). Read more