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 ofdata types, and renamedZed. Thoth was then rewritten in Zed.[9][10][11][12][13]
One of the early principal developers of Thoth wasDavid Cheriton. Cheriton would go on to develop the Verexkernel, and theV-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 citedPer Brinch Hansen'sRC 4000, then listed Thoth, DEMOS, and Accent together as later developments.[15] Other influences on the development of Thoth includedMultics,Data General's RTOS,Honeywell GCLS, andUnix.[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
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 sameabstract machine toapplication software, regardless of the underlyingphysical 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 theThoth 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 amicrokernel.[22][20][23]
Thoth's synchronous message passing IPC lent itself to the application of an anthropomorphic programming model, building on the work ofCarl Hewitt'sactor model, and ofSmalltalk.[17]
The microNet distributedfile 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]
Cheriton took a position at theUniversity 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]
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 thecomputer 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]
Gordon Bell andDan Dodge, developers of theQNX message passing realtime operating system, both worked with Thoth while they were students at Waterloo.[39][40][41][42]
AT&T'sSystem 75 Office Communication System was controlled by theOryx kernel and thePecos set of essential system processes, jointly referred to asOryx/Pecos. It used ideas from Thoth, DEMOS, and an internal AT&T project.[43]
The commercialWaterloo 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 createLANstep.[47][48]
TheAuspex storage company produced theFunctional 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 ofNetwork Appliance, Inc.'s storage appliance operating system have been described as being very similar to Thoth.[50] NetApp's OS was written byDavid Hitz, who had previously been at Auspex.
In 1996 the CacheFlow web acceleration appliance company released theirCacheOS, which was based on Thoth.[51] In 2001 CacheFlow was renamedBlue Coat Systems and, with the addition of a policy engine, CacheOS became theSecure Gateway Operating System (SGOS).
^Bonkowski, G. Bert; Gentleman, W. Morven; Malcolm, Michael A. (May 1979).Porting The Zed Compiler(PDF). University of Waterloo Computer Science Department (Technical report).
^abBooth, Kellogg S.; Schaeffer, Jonathan; Gentleman, W. Morven (February 1984).Anthropomorphic Programming(PDF). University of Waterloo Computer Science Department (Technical report).
^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.CiteSeerX10.1.1.46.7315.
^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.
^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.ISBN978-0898712094.
^Oberle, Bonnie (30 October 1998)."Returning the favour".Imprint. Impring Publications, Waterloo. p. 7.
^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.
Malcolm, Michael A.; Stafford, Gary J. (September 1977).The Thoth Assembler Writing Kit(PDF). University of Waterloo Computer Science Department (Technical report).
Cheriton, D. R.; Murphy, W. (September 1979).Verex System Programmer's Manual (Technical report). University of British Columbia.
Cheriton, David R. (1979).Designing an Operating System to be Verifiable (Technical report).
Cheriton, D. R. (September 1980).The Verex Kernel (Technical report). 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.ISBN0333310365.
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.ISBN0897911237.S2CID14736242.