Developer | National Research Council Canada |
---|---|
Written in | C, Assembly language |
Working state | Discontinued |
Initial release | 1985 |
Marketing target | Research |
Available in | English |
Update method | Compile from source code |
Platforms | Motorola 68000 (VMEbus, Multibus), Atari ST (520, 1040), Digital Equipment Corporation VAX |
Kernel type | Microkernel |
Preceded by | Thoth |
Succeeded by | Message Queue eXecutive (MQX) |
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.
Harmony was a successor to the Thoth system developed at the University of Waterloo. [1] Work on Harmony began at roughly the same time as that on the Verex kernel developed at the University of British Columbia. David Cheriton was involved in both Thoth and Verex, and would later go on to develop the V System at Stanford University. Harmony's principal developers included W. Morven Gentleman, Stephen A. MacKay, Darlene A. Stewart, and Marceli Wein. [2]
Early ports of the system existed for a variety of Motorola 68000-based computers, including ones using the VMEbus and Multibus backplanes and in particular the Multibus-based Chorus multiprocessor system at Waterloo. Other hosts included the Atari 520 or 1040 ST. A port also existed for the Digital Equipment Corporation VAX. [2]
Harmony achieved formal verification in 1995. [3]
Harmony was designed as a real-time operating system (RTOS) for robot control. [2] It is a multitasking, multiprocessing system. It is not multi-user. [2] Harmony provided a runtime system (environment) only; development took place on a separate system, originally an Apple Macintosh. For each processor in the system, an image is created that combines Harmony with the one multitask program for that processor at link time, an exception being a case where the kernel is programmed into a read-only memory (ROM).
Although the term did not appear in the original papers, Harmony was later referred to as a microkernel. [3] A key in Harmony is its use of the term task, which in Harmony is defined as the "unit of sequential and synchronous execution" and "the unit of resource ownership". [2] It is likened to a subroutine, but one that must be explicitly created and which runs independently of the task that created it. Programs are made up of a number of tasks. [2] A task is bound to a specific processor, which may be different from that of the instantiating task and which may host many tasks. All system resources are owned and managed by tasks.
Intertask communication is provided mostly by synchronous message passing and four associated primitives. [2] Shared memory is also supported. Destruction of a task closes all of its connections. Input/output uses a data stream model.
Harmony is connection-oriented in that tasks that communicate with each other often maintain state information about each other. In contrast with some other distributed systems, connections in Harmony are inexpensive. [2]
An advanced debugger called Melody was developed for Harmony at the Advanced Real-Time Toolset Laboratory at Carleton University. It was later commercialized as Remedy . [4]
The Harmony kernel underpinned the Actra project — a multiprocessing, multitasking Smalltalk. [5] [6]
Harmony was used in the multitasking, multiprocessor Adagio robotics simulation workstation. [7] [8]
Concepts from both Harmony and Adagio influenced the design of the Smalltalk-based Eva event driven user interface builder. [9]
Harmony was used as the underlying OS for several experimental robotic systems. [10] [11] [12]
Harmony was commercialized by the Taurus Computer Products division of Canadian industrial computer company Dy4. [13] [14] [15] [16] When Dy4 closed down their software division, four of Taurus' former developers founded Precise Software Technologies and continued developing the OS as Precise/MPX, the predecessor to their later Precise/MQX product. [17]
Another commercial operating system derived from Harmony is the Unison OS from Rowebot Research Inc. [18]
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.
In computing, a virtual machine (VM) is the virtualization or emulation of a computer system. Virtual machines are based on computer architectures and provide the functionality of a physical computer. Their implementations may involve specialized hardware, software, or a combination of the two. Virtual machines differ and are organized by their function, shown here:
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.
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.
An embedded system is a computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is embedded as part of a complete device often including electrical or electronic hardware and mechanical parts. Because an embedded system typically controls physical operations of the machine that it is embedded within, it often has real-time computing constraints. Embedded systems control many devices in common use. In 2009, it was estimated that ninety-eight percent of all microprocessors manufactured were used in embedded systems.
An object-oriented operating system is an operating system that is designed, structured, and operated using object-oriented programming principles.
An Embedded Operating System (EOS) is an operating system designed specifically for embedded computer systems. These systems aim to enhance functionality and reliability to perform dedicated tasks. When the multitasking method employed allows for timely task execution, such an OS may qualify as a real-time operating system (RTOS).
OSF/1 is a variant of the Unix operating system developed by the Open Software Foundation during the late 1980s and early 1990s. OSF/1 is one of the first operating systems to have used the Mach kernel developed at Carnegie Mellon University, and is probably best known as the native Unix operating system for DEC Alpha architecture systems.
Carl Sassenrath is an architect of operating systems and computer languages. He brought multitasking to personal computers in 1985 with the creation of the Amiga Computer operating system kernel, and he is the designer of the REBOL computer language, REBOL/IOS collaboration environment, the Safeworlds AltME private messaging system, and other products. Carl was a Principal Engineer at Roku, Inc. until his retirement in November 2023.
TRON is an open architecture real-time operating system kernel design. The project was started by Ken Sakamura of the University of Tokyo in 1984. The project's goal is to create an ideal computer architecture and network, to provide for all of society's needs.
The PERQ, also referred to as the Three Rivers PERQ or ICL PERQ, is a pioneering workstation computer produced in the late 1970s through the early 1980s. It is the first commercially-produced personal workstation with a graphical user interface (GUI). The design of the PERQ was heavily influenced by the original workstation computer, the Xerox Alto, which was never commercially produced. The workstation was conceived by six former Carnegie Mellon University alumni and employees: Brian S. Rosen, James R. Teter, William H. Broadley, J. Stanley Kriz, Raj Reddy and Paul G. Newbury, who formed the startup Three Rivers Computer Corporation (3RCC) in 1974.
In computing, preemption is the act of temporarily interrupting an executing task, with the intention of resuming it at a later time. This interrupt is done by an external scheduler with no assistance or cooperation from the task. This preemptive scheduler usually runs in the most privileged protection ring, meaning that interruption and then resumption are considered highly secure actions. Such changes to the currently executing task of a processor are known as context switching.
A virtual fixture is an overlay of augmented sensory information upon a user's perception of a real environment in order to improve human performance in both direct and remotely manipulated tasks. Developed in the early 1990s by Louis Rosenberg at the U.S. Air Force Research Laboratory (AFRL), Virtual Fixtures was a pioneering platform in virtual reality and augmented reality technologies.
In multiprocessor computer systems, software lockout is the issue of performance degradation due to the idle wait times spent by the CPUs in kernel-level critical sections. Software lockout is the major cause of scalability degradation in a multiprocessor system, posing a limit on the maximum useful number of processors. To mitigate the phenomenon, the kernel must be designed to have its critical sections as short as possible, therefore decomposing each data structure in smaller substructures.
TurboDOS is a multi user CP/M like operating system for the Z80 and 8086 CPUs developed by Software 2000 Inc.
A distributed operating system is system software over a collection of independent software, networked, communicating, and physically separate computational nodes. They handle jobs which are serviced by multiple CPUs. Each individual node holds a specific software subset of the global aggregate operating system. Each subset is a composite of two distinct service provisioners. The first is a ubiquitous minimal kernel, or microkernel, that directly controls that node's hardware. Second is a higher-level collection of system management components that coordinate the node's individual and collaborative activities. These components abstract microkernel functions and support user applications.
MQX is a real-time operating system (RTOS) developed by Precise Software Technologies, Inc., and currently sold by Synopsys, Embedded Access, Inc., and NXP Semiconductors.
Gregory D. Hager is the Mandell Bellmore Professor of Computer Science and founding director of the Johns Hopkins Malone Center for Engineering in Healthcare at Johns Hopkins University.
Thoth is a real-time, message passing operating system (OS) developed at the University of Waterloo in Waterloo, Ontario Canada.