Harmony was designed as a
real-time operating system (RTOS) for
robot control. It is a
multitasking,
multiprocessing system. It is not
multi-user. 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. 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". 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. 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. 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. ==Applications and tools==