- Plan 9 from Bell Labs
Infobox OS
name = Plan 9 from Bell Labs
caption =Glenda, the Plan 9 Bunny
developer =Bell Labs
source_model =Free software /Open source
kernel_type = Hybrid
supported_platforms = x86, MIPS,DEC Alpha ,SPARC ,PowerPC , ARM
ui = rio /rc
family = Unix successor
released =
latest_release_version = Fourth Edition
latest_release_date = daily snapshots
latest_test_version =
latest_test_date =
marketing_target =
programmed_in = Dialect of ISO/ANSI C
prog_language =
language =
updatemodel =
package_manager =
working_state = Current
license =Lucent Public License
website = [http://plan9.bell-labs.com/plan9 Plan 9 from Bell Labs]Plan 9 from Bell Labs is a
distributed operating system , primarily used for research. It was developed as the research successor toUnix by the Computing Sciences Research Center atBell Labs between the mid-1980s and 2002. Plan 9 is most notable for representing all system interfaces, including those required for networking and the user-interface, through the filesystem rather than specialized interfaces. Plan 9 aims to provide users with a workstation-independent working environment through the use of the9P protocols. Plan 9 continues to be used and developed in some circles as a research operating system and by hobbyists.The name "Plan 9 from Bell Labs" is a reference to the classic
science fiction B-movie "Plan 9 from Outer Space ". [cite web
last = Raymond
first = Eric
title = The Art of UNIX Programming
url=http://www.faqs.org/docs/artu/plan9.html#ftn.id3015199
accessdate = 2007-05-07 ]History
Plan 9 replaced Unix at Bell Labs as the organization's primary platform for research and explores several changes to the original Unix model that improve the experience of using and programming the system, notably in distributed
multi-user environments. Plan 9 was a Bell Labs internal project from its start during the mid 1980s. In 1992, the first public release was made available to universities. In 1995, a commercial second release version was made available to the general public. In the late 1990s,Lucent Technologies , who had inherited Bell Labs, dropped commercial interest in the project. In 2000, a non-commercial third release was made under anopen source license. In 2002, a non-commercial fourth release was made under a newfree software license.A user and development community, including current and former
Bell Labs and MIT members, continues to produce daily minor releases asISO image s. Bell Labs still hosts development.cite web | year=2006 | url=http://plan9.bell-labs.com/plan9/ | title=Plan 9 from Bell Labs | publisher= Lucent Technologies | accessmonthday=April 27 | accessyear=2006] The development source tree is accessible over the9P and HTTP protocols and is used to keep an installation up to date.cite web | year=2006 | url=http://cm.bell-labs.com/wiki/plan9/Staying_up_to_date/index.html | title=Staying up to date | publisher=Plan 9 community | accessmonthday=April 27 | accessyear=2006]Overview
Plan 9 from Bell Labs was developed by members of the
Computing Science Research Center atBell Labs , the same group that developedUNIX and C.cite web | year=1995 | url=http://www.lucent.com/press/0795/950718.bla.html | title=From the inventors of UNIX system comes Plan 9 from Bell Labs | publisher=Lucent Technologies | accessmonthday=April 2 | accessyear=2006] The Plan 9 team was originally led byRob Pike , Ken Thompson,Dave Presotto andPhil Winterbottom with support fromDennis Ritchie as head of the Computing Techniques Research Department. Over the years many notable developers have contributed to the project includingBrian Kernighan ,Tom Duff ,Doug McIlroy ,Bjarne Stroustrup ,Bruce Ellis and others.cite web | last=McIlroy | first=Doug | year=1995 | url=http://cm.bell-labs.com/sys/man/preface.html | title=Preface to the Second (1995) Edition | publisher=Lucent Technologies | accessmonthday=April 2 | accessyear=2006]All resources as files
Before Unix, most operating systems had different mechanisms for accessing different types of devices. For example, the
application programming interface (API) to access adisk drive was vastly different from the API used to send and receive data from a serial port, which in turn was different from the API used to send data to a printer.Unix attempted to remove these distinctions, and model all
input/output as file operations. All device drivers were required to support meaningful "read" and "write" operations as a means of control. This lets programmers use utilities likemv and cp to send data from one device to another without being aware of the underlying implementation details. However, at the time, many key concepts (such as the control of process state) did not seem to map neatly onto files. As new features like Berkeley sockets and theX Window System were added, they were incorporated to exist "outside" the file system. New hardware features (such as the ability to eject a CD in software) also encouraged the use of hardware-specific control mechanisms like theioctl system call.The Plan 9 research project rejected these different approaches and returns to the file-centric view of the system. Each Plan 9 program views all available resources, including networking and the user-interface resources (like the window it is running in), as part of a hierarchical file system, rather than specialized interfaces.cite web | year=2006 | url=http://plan9.bell-labs.com/plan9/ | title=Plan 9 from Bell Labs | publisher=Lucent Technologies | accessmonthday=April 27 | accessyear=2006]
Design concepts
Plan 9's designers were interested in goals similar to those of
microkernel s, but made different architecture and design choices to achieve them. Plan 9's design goals included:
* Resources as files: all resources are represented as files within ahierarchical file system
* Namespaces: the application view of the network is a single, coherent namespace that appears as a hierarchical file system but may represent local or remote physically separated resources
* Standard communication protocol: a standard protocol, called9P , is used to access all resources, both local and remoteFilesystems, files, and names
Plan 9 extended the system beyond files to "names", that is, a unique path to any object whether it be a file, screen,
user , orcomputer . All are handled using the existing Unix standards, but extended such that any object can be named and addressed (similar in concept to the more widely known URI system of theworld wide web ). In Unix, devices such as printers are represented by names using software converters in/dev
, but these addressed only devices attached by hardware, and did not address networked devices. Under Plan 9 printers are virtualized as files, and both can be accessed over the network from any workstation.Another Plan 9 innovation was the ability for users to have different names for the same "real world" objects. Each user could create a personalized environment by collecting various objects into their namespace. Unix has a similar concept in which users gain privileges by being copied from another user, but Plan 9 extends this to all objects. Users can easily spawn "clones" of themselves, modify them, and then remove them without affecting the resources from which they were created.
Union directories
Unix allowed filesystems to be built up from disparate resources using concepts such as "links" and filesystem "mounts". These commands made the original directory disappear; if one linked a new directory called "net", any previous directory called "net", and its resources, disappeared.
Plan 9 introduced the idea of "
union directories ", directories that combine resources across different media or across a network, binding transparently to other directories. For example, another computer's/bin
(applications) directory can be bound to one's own, and then this directory will hold both local "and" remote applications and the user can access both transparently. Using the same system, under Plan 9 external devices and resources can be bound to/dev
, making all devices network without additional code./proc
The
/proc
directory, in which all running processes are listed, illustrates how these features work together to produce a greater whole. This special Plan 9 "file system" has also been adopted byLinux and other later operating systems. Processes appear as named objects (sub-directories with info and control files) under/proc
, along with other kernel resources, giving the user a dynamic I/O channel to send commands to them and read data from them. The user does not have to use a limited set and form of system calls to interact with the kernel from compiled programs; rather, he or she can use tools such as
andls cat
to search, query and manipulate processes.Users can also mount
/proc
directories (and any other special file systems) from any other machines into their namespace as well, interacting with them as if they are local. The result is a distributed computing environment assembled from separate machines — terminals that sit on users' desks, file servers that store permanent data, and other servers that provide faster CPUs, user authentication, and network gateways, all using the existing hierarchical directory/name system familiar to most computer users. A user can "build" a system by collecting up directories onfileserver s, applications running on servers, printers on the network and then bind them all together into their personal namespace running on a terminal./net
Plan 9 does not have system calls for the multitude of communication protocols or device driver interfaces. For example
/net
is the API for all TCP/IP, and it can be used even with scripts or shell tools, writing data to control files to write and read connections. Relevant sub-directories like/net/tcp
and/net/udp
are used to interface to prospective protocols. You can implement a NAT by mounting a/net
from a perimeter machine with a public IP, while connecting to it from an internal network of private IP addresses, using the Plan 9 protocol 9P in the internal network. Or you can implement a VPN by mounting a/net
directory from a remote gateway, using secured 9P over the public Internet.Here would be an example of using union (a stack) directories in
/net
: just like inheritance in OOP, you can take one (possibly remote)/special
directory and bind another local special directory on top of that, adding some new control files and hiding others. The union directory now is like a child object instance of the original parent. The functionality of the original can be partially modified. Consider the/net
file system. If you modify or hide its/net/udp
sub-directory you may control or extend the UDP interface with local filter processes, still leaving the original/net/tcp
running intact, perhaps in a remote machine. Note that name space is per process: if you give an untrusted application a limited, modified/net
union directory, you restrict its access to the net.All this makes it easy to combine "objects" or file systems written in different languages on different systems, while using standard naming, access control and security of the file system, largely transparently to the programmer.
This is similar to the facility offered by the
mount_portal
[http://www.openbsd.org/cgi-bin/man.cgi?query=mount_portal&sektion=8] command inBSD which by convention is mounted on/p
instead of/net
with only/tcp
available.Networking and distributed computing
Plan 9 is based on UNIX but was developed to demonstrate the concept of making communication the central function of the computing system. All system resources are named and accessed as if they were files and multiple views of the distributed system can be defined dynamically for each program running on a particular machine. This approach improves generality and modularity of application design by encouraging servers that hold any information to appear to users and to applications just like collections of ordinary files.
Key to supporting the
network transparency of Plan 9 was a new low-level networking protocol known as 9P. The 9P protocol and its implementation connected named network objects and presented a file-like system interface. 9P is a fastbyte-oriented (rather thanblock-oriented )distributed file system that can virtualize any object, not only those presented by an NFS server on a remote machine. The protocol is used to refer to and communicate with processes, programs, and data, including both the user interface and the network. With the release of the 4th edition, it was modified and renamed 9P2000.Unicode
Plan 9 uses
Unicode throughout the system.UTF-8 was invented by Ken Thompson to be used as the native encoding in Plan 9 and the whole system was converted to general use in 1992.cite web | last=Pike | first=Rob | year=2003 | url=http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt | title= UTF-8 History | accessmonthday=April 27 | accessyear=2006] Note that Plan 9 only supports the codes defined in theBasic Multilingual Plane of Unicode.Implementations
An installable runtime environment exists for x86, and Plan 9 has been ported to MIPS,
DEC Alpha ,SPARC ,PowerPC , ARM and other architectures. The system is written in a dialect of ISO/ANSI C. Several applications were originally written in a language called Alef, but have since been rewritten in the same C dialect. Plan 9 can importPOSIX applications and can emulate theBerkeley socket interface throughANSI/POSIX Environment APE . Recently, a new application called "linuxemu" was developed that can be used to runLinux binaries; it is, however, still a work in progress.Impact
Plan 9 demonstrated that a central concept of Unix — that every system interface could be represented as sets of files — could be implemented and made functional in a modern distributed system. Some ideas from Plan 9 have been implemented in other operating systems. Unix-like operating systems such as
Linux have implemented some of Plan 9's file system, theUTF-8 character encoding, and limited forms of rfork-like system calls. Additionally, several of Plan 9's applications and tools, including therc shell , have been ported to Unix and Linux systems and have achieved some level of popularity.However, Plan 9 itself has never surpassed Unix in popularity, and remains primarily a research tool. Plan 9 has been criticized as "seem
[ing] to function mainly as a device for generating interesting papers on operating-systems research."Eric S. Raymond in his book "The Art of Unix Programming " speculates on Plan 9's lack of acceptance:"Plan 9 failed simply because it fell short of being a compelling enough improvement on Unix to displace its ancestor. Compared to Plan 9, Unix creaks and clanks and has obvious rust spots, but it gets the job done well enough to hold its position. There is a lesson here for ambitious system architects: the most dangerous enemy of a better solution is an existing codebase that is just good enough."cite web | last=Raymond | first=Eric S. | authorlink=Eric S. Raymond | url=http://www.faqs.org/docs/artu/plan9.html | title=Plan 9: The Way the Future Was | accessmonthday=March 28 | accessyear=2006]
Other critics of Plan 9 include those critical of Unix in general, where Plan 9 is considered the epitome of the "
Worse is better " school of operating system design. Common criticisms include the relative lack of "polish" and development in Plan 9's windowing system [cite web
url=http://www.osnews.com/comment.php?news_id=2760&limit=no#71883
title=Interview with Dennis Ritchie, response #25
accessdate=2006-09-09] and Plan 9's relative lack of maturity as a commercial-grade body of software. [cite web
url=http://www.osnews.com/comment.php?news_id=2760&limit=no#71847
title=Interview with Dennis Ritchie, response #23
accessdate=2006-09-10]Plan 9 proponents and developers claim that the problems hindering its adoption have been solved, and its original goals as a distributed system, development environment, and research platform have been met, and that it enjoys moderate but growing popularity. Inferno, through its hosted capabilities, has been a vehicle to bring Plan 9 technologies to other systems as part of heterogeneous computing grids.cite web | year=2006 | url=http://cm.bell-labs.com/wiki/plan9/9grid/ | title=9grid (Plan 9 wiki) | work=Plan 9 wiki | accessmonthday=March 28 | accessyear=2006] cite web | year=2004 | url=http://www.vitanuova.com/solutions/grid/news/evotecoai.pdf | title="Press Release: Vita Nuova Supplies Inferno Grid to Evotec OAI | format=PDF | publisher=Vita Nuova Holdings Limted | accessmonthday=March 28 | accessyear=2006] cite web | year=2004 | url=http://www.vitanuova.com/solutions/grid/news/rutgers.pdf | title="Press Release: Rutgers University Libraries Install Inferno Data Grid" | format=PDF | publisher=Vita Nuova Holdings Limited | accessmonthday=March 28 | accessyear=2006] cite web | year=2004 | url=http://www.vitanuova.com/solutions/grid/news/Yorkbiology.pdf | title="Press Release: The University of York Department of Biology install Vita Nuova's Inferno Data Grid" | format=PDF | publisher=Vita Nuova Holdings Limited | accessmonthday=March 28 | accessyear=2006]
License
The [http://plan9.bell-labs.com/sources/plan9/sys/src full source code] is freely available under
Lucent Public License 1.02, and considered to beopen source by the OSI andfree software by the FSF (although incompatible with theGNU General Public License ). It passes theDebian Free Software Guidelines .Related work
Inferno
Inferno is a derivative product, originally started by the same group that created Plan 9, and now developed by a British company,
Vita Nuova Holdings . Inferno shares many of the same design concepts as Plan 9, but uses a new applicationprogramming language , Limbo, and an accompanyingvirtual machine , Dis. Inferno is marketed as anopen source embedded operating system .Plan 9 from User Space
"Plan 9 from User Space" (or plan9port or p9p) is a port of most of the notable Plan 9 libraries and applications to Unix-like operating systems.
See also
tandard Plan 9 utilities
* rc - the Plan 9 shell
* sam - a text editor
* acme - a user interface for programmers
* plumber - interprocess messaging
*mk - a tool for building software, analogous to the traditional Unix make utility
* acid - debugger
* rio - the new Plan 9 windowing system
* 8½ - the old Plan 9 windowing system [http://plan9.bell-labs.com/sys/doc/8%C2%BD.html]
* Fossil andVenti - the new archival file system and permanent data storeImplementation artifacts
*
9P (or Styx) - a filesystem protocol
* rendezvous - a basic synchronization mechanism
* Brazil - what became the Fourth Edition of Plan 9Influenced
*
Plan 9 from User Space - a port of many Plan 9 libraries and applications to Unix-like operating systems
* Inferno - distributed operating system following up Plan 9
* [http://lsub.org/ls/planb.html Plan B] - research operating system based on Plan 9
* [http://lsub.org/ls/octopus.html Octopus] - a new approach to Plan B
*9wm - an Xwindow manager that clones the Plan 9 interface
*wmii - an X window manager that uses a file system-like interface based on9P
*Filesystem in Userspace - free GPL Unix kernel module (Linux kernel >= 2.6.14) for Plan 9 like filesystemReferences
External links
Bell Labs
* [http://plan9.bell-labs.com/plan9/ Plan 9 homepage]
* [http://plan9.bell-labs.com/plan9/about.html Plan 9 Overview]
* [http://plan9.bell-labs.com/sys/doc/ The papers from 4th edition]
* [http://doc.cat-v.org/plan_9/ Other papers and documents]
* [http://doc.cat-v.org/plan_9/2nd_edition/README README for 2nd Edition] byBrian W. Kernighan
* [http://plan9.bell-labs.com/sources/plan9/sys/src/ Browsable full source code]
* [http://plan9.bell-labs.com/wiki/plan9/plan_9_wiki Plan 9 Wiki] - powered bywikifs
* [http://plan9.bell-labs.com/wiki/plan9/documentation/index.html Plan 9 documentation index]
* [http://plan9.bell-labs.com/sys/man/ Plan 9 manual pages]
* [http://plan9.bell-labs.com/plan9/download.html Plan 9 download]
* [http://plan9.bell-labs.com/wiki/plan9/installation_instructions/ Installation notes]
* [http://plan9.bell-labs.com/wiki/plan9/FAQ Plan 9 FAQ]
* [http://gsoc.cat-v.org Plan 9 projects in the GSoC]Lectures
* [http://cm.bell-labs.com/sources/contrib/uriel/slides/fosdem06/slides.pdf Slides] - [http://ftp.belnet.be/mirror/FOSDEM/2006/FOSDEM2006-plan9.avi Video] from FOSDEM 2006
* [http://www.cs.unm.edu/~fastos/05meeting/PLAN9NOTDEADYET.pdf Plan 9 is not dead] at [http://www.cs.unm.edu/~fastos/ FAST-OS 2005]Other
* [http://mail.9fans.net/listinfo/9fans 9fans] , the Plan 9
mailing list hosted by http://9fans.net
* [http://ninetimes.cat-v.org Ninetimes: News and articles about Plan 9, Inferno and related technologies]
* [irc://irc.freenode.net/plan9 #plan9] , the Plan 9 IRC channel hosted byfreenode
* [http://www.vitanuova.com/plan9/index.html Boxed version of Plan 9] byVita Nuova Holdings
* [http://www.faqs.org/docs/artu/plan9.html "Plan 9: The Way the Future Was"] fromEric S. Raymond 's bookThe Art of Unix Programming
* [http://www.oszoo.org/wiki/index.php/Category:Plan9_images Plan 9] as aQemu image
* [http://plan9.bell-labs.com/wiki/plan9/organizations_using_plan_9_and_inferno/ Incomplete list of organizations using Plan 9]
* [http://dx.doi.org/10.1108/07378830310509772 Reinventing UNIX: An introduction to the Plan 9 operating system] , by Hancock, B., Giarlo, M.J., & Triggs, J. A., published in "Library Hi Tech", 21(4), 471-476.
* [http://plan9.escet.urjc.es/who/nemo/9.intro.pdf Introduction to OS abstractions using Plan 9 from Bell Labs] , by Francisco J Ballesteros
* German book about Plan 9: Hans-Peter Bischof, Gunter Imeyer, Bernhard Wellhöfer (born as Kühl), Axel-Tobias Schreiner: "Das Netzbetriebssystem Plan 9." 1999, ISBN 3-446-18881-9. The book is out of print, but available for free at the print-on-demand service providerLulu.com .
Wikimedia Foundation. 2010.