Inferno Os

Inferno is an OperatingSystem developed at BellLabs (the research arm of LucentTechnology?). They describe it as "an OperatingSystem for creating DistributedServices?". It is now wholly owned and developed by Vita Nuova

Inferno runs directly on native hardware and also as an application providing a Virtual Operating System over other platforms. Applications can be developed and run on all Inferno platforms without modification or recompilation.

Native ports include:

Hosted or Virtual OS ports include: Inferno applications are written in a language called Limbo (LimboLanguage) which directly provides support for multi-threading and synchronised inter-thread communication using a channel mechanism based on Tony Hoare's CSP. Limbo is compiled to Dis bytecode, representing the instruction set of a VirtualMachine. Dis execution is performed either by an interpreter or is compiled on-the-fly to native machine instructions by a JIT (JustInTime) compiler when a dis module is loaded.

Perhaps the most interesting aspect of the system is its philosophy of services as files and per-process namespaces. All devices and OS services are presented as names (think: files) in a hierarchical namespace (think: filesystem). Namespaces can be composed on a per-process basis with resources being imported from other processes and other machines. All resources can then be accessed using standard file access primitives such as Open, Read and Write.

A good example of the efficacy of this approach is remote debugging in Inferno. Each Inferno process is represented by a directory under /prog where the directory name is the ID of the process. Each directory contains names such as "status", "stack" and "ctl". The Inferno debugger interacts with these "files". To perform remote debugging you simply import the remote machines /prog directory over the top of the local one. The local debugger then interacts with the remote processes, completely unaware that they belong to a remote machine.

Although it was created on PlanNineFromBellLabs, and retains a bit of a special attachment to it, it is a completely different operating system from Plan 9. There's a good comparison to be made with java, as they had similar design goals:

However, they diverged in a few areas (probably to their advantage):

See for an informal specification of the inferno virtual machine. Also see "The design of the Inferno virtual machine" by PhilWinterbottom? and RobPike ( Also there is a paper on Dis implementation of a concurrent garbage collector:

For more papers see:

Inferno's memory footprint is small: you can fit (say) the kernel and a non-trivial application into 1Mb of RAM.

It is specially suited to run in systems without an mmu because Dis ensures that applications can only access and manipulate their own memory without the help of the mmu. This also makes portability to new architectures easier as dealing with mmu peculiarities is usually one of the most tedious tasks when porting an operating system.

Inferno has been ported to the Play Station 2 and more recently to the Nintendo DS:

Release 3 came out in the Summer of 2000, as of 2008 the code has been fully opensourced under the GPL and can be accessed at:

Inferno has been compiled as a plugin module for InternetExplorer on Wintel machines: the plugin is less than a megabyte

Expecting a cd in the mail in the next while, I'm quite interesting in playing with this natively as I've been very impressed with what I've seen so far. --WilliamUnderwood

It has also been ported to Android. They stripped out the Java stuff and run it directly on the Linux/libc. Simpler, smaller TCB, etc. Link:

See also InfernoDevelopers.


EditText of this page (last edited October 28, 2013) or FindPage with title or text search