Design Principles
Inferno was first made in 1995 by members of Bell Labs' Computer Science Research division to bring ideas of Plan 9 from Bell Labs to a wider range of devices and networks. Inferno is a distributed operating system based on three basic principles drawn from Plan 9:
- Resources as files: all resources are represented as files within a hierarchical file system
- Namespaces: a program's view of the network is a single, coherent namespace that appears as a hierarchical file system but may represent physically separated (locally or remotely) resources
- Standard communication protocol: a standard protocol, called Styx, is used to access all resources, both local and remote
To handle the diversity of network environments it was intended to be used in, the designers decided a virtual machine was a necessary component of the system. This is the same conclusion of the Oak project that became Java, but arrived at independently. The Dis virtual machine is a register machine intended to closely match the architecture it runs on, as opposed to the stack machine of the Java Virtual Machine. An advantage of this approach is the relative simplicity of creating a just-in-time compiler for new architectures.
The virtual machine provides memory management designed to be efficient on devices with as little as 1 MB of memory and without memory-mapping hardware. Its garbage collector is a hybrid of reference counting and a real-time coloring collector that gathers cyclic data.
The Inferno kernel contains the virtual machine, on-the-fly compiler, scheduler, devices, protocol stacks, and the name space evaluator for each process' file name space, and the root of the file system hierarchy. The kernel also includes some built-in modules that provide interfaces of the virtual operating system, such as system calls, graphics, security, and math modules.
The Bell Labs Technical Journal paper introducing Inferno listed the several dimensions of portability and versatility provided by the OS,
- Portability across processors: it currently runs on ARM, MIPS, PA-RISC, PowerPC, SPARC, and x86 architectures and is readily portable to others.
- Portability across environments: it runs as a stand-alone operating system on small terminals, and also as a user application under Plan 9, Windows NT, Windows 95, and Unix (Irix, Solaris, FreeBSD, Mac OS X, Linux, AIX, HP-UX, Tru64). In all of these environments, Inferno programs see an identical interface.
- Distributed design: the identical environment is established at the user's terminal and at the server, and each may import the resources (for example, the attached I/O devices or networks) of the other. Aided by the communications facilities of the run-time system, programs may be split easily (and even dynamically) between client and server.
- Minimal hardware requirements: it runs useful applications stand-alone on machines with as little as 1 MB of memory, and does not require memory-mapping hardware.
- Portable programs: Inferno programs are written in the type-safe language Limbo and compiled to Dis bytecode, which can be run without modifications on all Inferno platforms.
- Dynamic adaptability: programs may, depending on the hardware or other resources available, load different program modules to perform a specific function. For example, a video player might use any of several different decoder modules.
These design choices were directed to provide standard interfaces that free content and service providers from concern of the details of diverse hardware, software, and networks over which their content is delivered.
Read more about this topic: Inferno (operating System)
Famous quotes containing the words design and/or principles:
“Joe ... you remember I said you wouldnt be cheated?... Nobody is really. Eventually all things work out. Theres a design in everything.”
—Sidney Buchman (19021975)
“The proposition that Muslims are welcome in Britain if, and only if, they stop behaving like Muslims is a doctrine which is incompatible with the principles that guide a free society.”
—Roy Hattersley (b. 1932)