Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Inferno (operating system)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Design principles == Inferno was created in 1995 by members of [[Bell Labs]]' Computer Science Research division to bring ideas derived from their previous operating system, [[Plan 9 from Bell Labs]], to a wider range of devices and networks. Inferno is a [[distributed operating system]] based on three basic principles: * Resources as files: all [[Resource (computer science)|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 (protocol)|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]] (VM) was a necessary component of the system. This is the same conclusion of the Oak project that became [[Java (software platform)|Java]], but arrived at independently. The [[Dis virtual machine]] is a [[register machine]] intended to closely match the architecture it runs on, in contrast 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 MiB of memory and without memory-mapping hardware. Its [[Garbage collection (computer science)|garbage collector]] is a hybrid of reference counting and a real-time coloring collector that gathers cyclic data.<ref name="gc">{{cite conference |last1=Huelsbergen |first1=Lorenz |last2=Winterbottom |first2=Phil |url=http://doc.cat-v.org/inferno/concurrent_gc/concurrent_gc.pdf |title=Very Concurrent Mark and Sweep Garbage Collection without Fine-Grain Synchronization |conference=1998 International Symposium on Memory Management |year=1998}}</ref> The Inferno kernel contains the virtual machine, on-the-fly compiler, scheduler, devices, protocol stacks, the name space evaluator for the file name space of each process, 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 several dimensions of portability and versatility provided by the OS:<ref name="bltj" /> * Portability across processors: it currently runs on [[ARM architecture|ARM]], SGI [[MIPS architecture|MIPS]], [[Hewlett-Packard|HP]] [[PA-RISC]], IBM [[PowerPC]], Sun [[SPARC]], and Intel [[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 Bell [[Plan 9 from Bell Labs|Plan 9]], MS [[Windows NT]], [[Windows 95]], and [[Unix]] ([[Silicon Graphics|SGI]] [[Irix]], [[Sun Microsystems|Sun]] [[Solaris (operating system)|Solaris]], [[FreeBSD]], [[Apple, Inc|Apple]] [[Mac OS X]], [[Linux]], [[IBM]] [[AIX]], [[HP-UX]], Digital [[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 MiB of memory, and does not require [[Virtual memory|memory-mapping]] hardware. * Portable programs: Inferno programs are written in the [[type-safety|type-safe language]] [[Limbo (programming language)|Limbo]] and compiled to [[Dis virtual machine|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.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)