Sprite (operating system)

Sprite is an experimental Unix-like distributed operating system developed at the University of California, Berkeley by John Ousterhout's research group between 1984 and 1992. Its notable features include support for single system image on computer clusters and the introduction of the log-structured file system. The Tcl scripting language also originated in this project.

Early work
Early work on Sprite was based on the idea of making the operating system more "network aware", and thereby at the same time make it invisible to the user. The primary area of work was the building of a new network file system which made heavy use of local client-side caching in order to improve performance. After opening the file and some initial reads, the network is only used on-demand, and most user actions occur against the cache. Similar utilities allow remote devices to be mapped into the local computer's space, allowing for network printing and similar duties.

Many of the key Unix files are based on the network, including things like the password file. All machines in a network share the root directory as well. Other common Unix utilities such as  were re-written to make them network aware as well, listing all of the people logged on across the network. This makes a Sprite network appear as if it were a single large time-sharing system, or a single-system image.

Another key addition to Sprite is process migration, which allows programs to be moved between machines at any time. The system maintains a list of machines and their state, and automatically moves processes to idle machines to improve local performance. Processes can also be "evicted" from machines to improve their performance, causing the original starter to move it to another machine on the network, or take control of it locally again. Long tasks (like compiling the Sprite system) can appear very fast.

Further development
Work on the "early" Sprite outlined above ended around 1987, but was improved during the next year. Starting in 1990 Sprite was used as the basis for development of the first log-structured file system (LFS), development of which continued until about 1992. LFS dramatically increases the performance of file writes at the expense of read performance. Under Sprite, this tradeoff is particularly useful because most read access is cached anyway—that is, Sprite systems typically perform fewer reads than a normal Unix system. LFS-like systems also allow for much easier crash recovery, which became a major focus of the project during this period. Additional experimentation on striped file systems, both striped across different machines as well as clusters of drives, continued until about 1994.

Discontinuation
Sprite was not a microkernel system, and suffers the same sort of problems as other Unixes in terms of development complexity, becoming increasingly difficult to develop as more functionality was added. By the 1990s it was suffering and the small team supporting the project was simply not able to keep up with the rapid changes in Unix taking place during this time. The project was slowly shut down by 1994.