User:MarSukiasyan

From Wikipedia, the free encyclopedia
Plan 9 from Bell Labs
Glenda, the Plan 9 Bunny
DeveloperBell Labs
Written inDialect of ANSI C
Working stateCurrent
Source modelFree and open source software
Initial release1992 (universities)
1995 (general public)
Latest releaseFourth Edition / Daily snapshots
Platformsx86, MIPS, DEC Alpha, SPARC, PowerPC, ARM
Default
user interface
rio / rc
LicenseLucent Public License Version 1.02
Official websitehttp://plan9.bell-labs.com/plan9/

Plan 9 from Bell Labs is a բաշխված օպերացիոն համակարգ է: Այն մշակվել է հիմնականում հետազոտական նպատակներով,որպես Unix-ի իրավահաջորդհաշվողական գիտությունների հետազոտությունների կենտրոն կողմից 1980-2002թվականներին: Plan 9-ը առավել ուշագրավ է բոլոր համակարգի ինտերֆեյսերում ներկայացնելու համար, ներառյալ դրա պահանջարկը ցանցային և օգտագործեղի ինտերֆեյսերում,չնայած ֆայլային համակարգը ավելին և քան մասնագիտացված ինտերֆեյսերը: Plan 9-ի նպատակն է ապահովել օգտվողներին անկախ աշխատանքային միջավայրեվ 9P արձանագրությունների (protocols) օգտագործնան միջեցեվ: Plan 9-ը շարունակում է օգտագործվել և զարգացվել օպերացիոն համակարգերի հետազոտողների կողմից:Cite error: A <ref> tag is missing the closing </ref> (see the help page).[1]

Bell Labs-ից Plan 9 անունը տեղեկանք է 1959-ի պաշտամունքային գիտություն նյութերի Z-movie Plan 9 from Outer Space.[2]

ՊԱՏՄՈւԹՅՈւՆ[edit]

Plan 9-ը փողարինեց Unix-ին Bell Labs-ում որպես կազմակերպության հիմնական հետազոտական հարթակ:Այն ուսումնասիրեց մի շարք փոփոխություններ սկզբնական Unix-ի մոդելում, որոնք նպաստում են համակարգի օգտագործմանը եւ ծրագրավորմանը,մասնաորապես բաշխված բազմա-օգտվողների միջավայրում:Սկզբում Plan 9-ը Bell Labs-ի ներքին ծրագիր էր : 1992-ին, Bell Labs-ը համալսարաններին տրամադրեց առաջին հրապարակային թողարկումը: 1995-ին, կոմերցիոներկրորդ թողարկման տարբերակը դարճավ հասանելի ամբողջ հասարակությանը: 1990ականների վերջին, Lucent Technologies-ը, ժառանգելով Bell Labs-ը, դադարեցրեց ծրագրում կոմերցիոն շահերի աջակցությունը: 2000 թվականին,ոչ կոմերցիոն երրորդ թեղարկումը բաշխվեց բաց աղբյուրի լիցենզիայով: Չորրորդ թողարկումը ազատ ծրագրային ապահովման լիցենզիայով տեղի ունեցավ 2002-ին:

A user and development community, including current and former Bell Labs members and Massachusetts Institute of Technology personnel, continues to produce minor daily releases in form of ISO images. Bell Labs still hosts the development.[3] The development source tree is accessible over the 9P and HTTP protocols and is used to update existing installations.[4] In addition to the official components of the OS included in the ISOs, Bell Labs also hosts a repository of externally developed applications and tools.

ԱԿՆԱՐԿ[edit]

Bell Labs-ի Plan 9-ը ի սկզբանե մշակվել է Bell Labs-ի հաշվողական գիտության հետազոտական կենտրոն անդամների կողմից, այն նույն խումբը,որը զարգացրեց նախնական UNIX-ը և C.[5] Plan 9-ի խումբը ի սկզբանե գլխավորում էր Ռոբ Պայքը, Ken Thompson, Դայվ Պրեստոնը և Պհիլ Վինտերբոթոմը հաշվողական տեխնիկայի հետազոտությունների վարչություն ղեկավար Դենիս Ռիտչի աջակցությամբ: Տարիներ շարունակ շատ մշակողները նպաստել են ծրագրին, ներառյալ Բրիան Կերիգանը, Թոմ Դաֆը, Բրյուս Էլիսը, Ստիվ Սիմօնը և այլոք: [6] Plan 9-ը նախագծված է ժամանակակից բաշխված միջավայրերի համար: Սկզբում նախատեսված էր լինել ցանցային օպերացիոն համակարգ:Ի տարբերություն UNIX-ի այն ունի ներկառուցված գրաֆիկա,որն ավելի ուշ այս հատկությունները ավելացրեց նախագծում: Plan 9 has yet to become as popular as Unix derivatives,բաըց այն ունի զարգացնողների լայն զանգված: [citation needed]


Plan 9 has a distributed architecture. It can be installed and used on a single self-contained system, but also has the capability to separate the functional components of the OS between separate hardware platforms. In a typical Plan 9 installation, users work at lightweight terminals running the rio GUI and connect via the network to CPU servers that handle computation-intensive processes, with permanent data storage provided by additional hosts acting as file servers and archival storage. Currently available desktop computers can also re-create this architecture internally using multiple virtual machines.

ՆԱԽԱԳԾԱՅԻՆ ՀԱՍԿԱՑՈՒԹՅՈՒՆՆԵՐ[edit]

Plan 9-ի դիզայներները հետաքրքրված էրն մի շարք նպատակներով, որոնք նաման էին միջուկի (microkernel) նպատակներին, բայց դրանց հասնելու համար ընտրեցին ուրիշ ճարտարապետության և դիզայնի մանրամասներ: Plan 9-ի մախագծային նպատակները ներառում էին.

  • Ֆայլային համակարգի վրա հիմնված սարքեր. Բոլոր ռեսուրսները հիերարխիկ ֆայլային համակարգում ներկայացված են հայնգույցներով:
  • Անվանատարածքներ: Ցանցի դիմելաճևը եզակի,կապակցված անվանատարածք է , որ հանդես է գալիս որպես հիերարխիկ ֆայլային համակարգ, բայց կարող է ներկայացնել տեղական կամ հեռավոր ֆիզիկապես առանձնացված ռեսուրսներ: Յուրաքանչյուր գործընթացի անվանատարածք կարող է ինքնուրույն կառուցվել, և օգտագործողը կարող է միաժամանակ աշխատել դիմումների հետ տարասեռ անվանատարածքներով:
  • Ստանդարտ կապի արձանագրություն: Ստանդարտ արձանագրությունը, 9P անվանումով,օգտագործվում է ինչպես տեղական, այնպես էլ հեռավոր ռեսուրսները մուտքագրելու համար:

Unified input/output model[edit]

Before Unix, most operating systems had different mechanisms for accessing different types of devices. For example, the application programming interface (API) to access a disk drive was different from the API used to send and receive data with a serial port, or from the API used to operate a printer.

Unix attempted to remove these distinctions by performing all input/output operations via disk inodes. Every device driver was required to support meaningful read and write operations as a means of control. This allowed users to send data from one device to another, with utilities like cp and dd, without being aware of the underlying implementation details. However, at the time, many key concepts (such as the control of process state) did not map uniformly onto the file system. As new features like Berkeley sockets and the X Window System were developed, they were implemented outside of 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 the ioctl system call.

The Plan 9 research project rejected these different approaches and returned to the file system-centric view of the system. Each Plan 9 program views all available resources, including networking and the user-interface resources, such as the window it is running in, as part of the hierarchical file system, rather than specialized interfaces.[3]

File systems, files and names[edit]

Plan 9 extended the system beyond files to "names", that is, a unique path to any object whether it be a file, screen, user, or computer. All are handled using the existing Unix standards, but are extended such that any object can be named and addressed uniformly. This is similar in concept to the Uniform Resource Identifier (URI) used in the World Wide Web. In Unix, devices such as printers were 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 all printers are virtualized as files, and 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,[clarification needed] 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[edit]

Unix allows file systems to be built up from disparate resources using concepts such as links and file system mounts. These features masked the original directory; if one mounts a new file system on the directory named "net", one can no longer access its previous contents until the operation is reversed.

Plan 9 introduced the idea of union directories, which transparently combine resources from multiple directory locations under a single pathname. When used with suitable naming conventions, this simplifies the programming and user environment. For example, the shell executes all commands (except those starting with /) only from /bin, instead of having to search a PATH list as in other operating systems.

Many live CDs of Linux distributions implement a limited form of this feature, based on union file systems as opposed to union directories.

/proc[edit]

The /proc directory, which contains entries for all running processes, illustrates how these features work together to produce a greater whole. This special file system first appeared in Version 8 Unix and later ported to SVR4. Plan 9 implemented a process file system, but went further than V8. V8's process file system implemented a single file per process. Plan 9 created a hierarchy of separate files to provide those functions, and made /proc a real part of the file system. This approach was also adopted by Linux and other modern Unix-like operating systems. Processes appear as named objects (sub-directories with info and control files) under /proc, and ordinary I/O is used to interrogate and control them. The user does not have to use specialized system calls to interact with processes; rather, he can use common tools such as ls. Other system resources are similarly integrated into the hierarchical namespace.

Users can also mount /proc directories (and other special file systems) from remote hosts into the namespace, 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 additional processors, 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 gathering directories on file servers, applications running on servers, and printers on the network and then bind them all together into his personal view of the namespace running on a terminal.

/net[edit]

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 respective 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 virtual private network (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 transparent to the programmer.

This is similar to the facility offered by the mount_portal[1] command in BSD which by convention is mounted on /p instead of /net with only /tcp available.

Networking and distributed computing[edit]

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 fast byte-oriented (rather than block-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[edit]

Plan 9 uses Unicode. UTF-8 was invented by Ken Thompson to be used as the native encoding in Plan 9 and the entire system was converted to general use in 1992.[7]

Implementations[edit]

GUI installation with rio

An installable runtime environment exists for the x86 architecture, and Plan 9 has been ported to MIPS, DEC Alpha, SPARC, PowerPC, ARM and other hardware platforms. The system is written in a dialect of ANSI C. Several applications were originally written in a language called Alef, but have since been rewritten in C. Plan 9 can support POSIX applications and can emulate the Berkeley socket interface through the ANSI/POSIX Environment APE. Recently,[when?] a new application called linuxemu was developed that can be used to run Linux binaries; it is, however, still a work in progress.

Plan 9 has been ported to the IBM Blue Gene/L Supercomputer.[8]

Impact[edit]

Plan 9 demonstrated that a central concept of Unix – that every system interface could be represented as sets of files – could be successfully implemented in a modern distributed system. Some features from Plan 9, like the UTF-8 character encoding of Unicode, have been implemented in other operating systems. Unix-like operating systems such as Linux have implemented 9P, Plan 9's file system and limited forms of rfork-like system calls. Additionally, in Plan 9 from User Space, several of Plan 9's applications and tools, including the rc shell, have been ported to Unix and Linux systems and have achieved some level of popularity. Glendix is a project seeking to replace the GNU operating system programs surrounding the Linux kernel with the Plan 9 operating system programs, or, alternatively, replace the Plan 9 kernel with the Linux kernel.

However, Plan 9 has never approached Unix in popularity, and was 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."[9] 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.[9]

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[10] and Plan 9's lack of maturity as a commercial-grade body of software.[11]

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 hosted part of heterogeneous computing grids.[12][13][14][15]

License[edit]

The full source code is freely available under Lucent Public License 1.02, and considered to be open source by the Open Source Initiative (OSI) and free software by the Free Software Foundation (FSF). However, it is incompatible with the GNU General Public License. It passes the Debian Free Software Guidelines.

See also[edit]

Standard Plan 9 utilities[edit]

  • 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
  • rio - the new Plan 9 windowing system
  • - the old Plan 9 windowing system
  • Fossil and Venti - the new archival file system and permanent data store

Implementation artifacts[edit]

  • 9P (or Styx) - a filesystem protocol
  • rendezvous - a basic synchronization mechanism
  • Brazil - what became the Fourth Edition of Plan 9

Influence[edit]

  • 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, working on top of another OS[16]
  • 9wm - an X window manager that clones the Plan 9 interface
  • wmii - an X window manager that uses a file system-like interface based on 9P
  • Plan B - operating system designed to work in distributed environments where the set of available resources is different at different points in time. Implemented as a set of user programs to run on top of Plan 9 from Bell Labs.

References[edit]

  1. ^ 9atom, retrieved November 11, 2011 {{citation}}: Check date values in: |accessdate= (help)
  2. ^ "The Art of UNIX Programming". Retrieved 2007-05-07. {{cite web}}: |first= missing |last= (help)
  3. ^ a b "Plan 9 from Bell Labs". Lucent Technologies. 2006. Retrieved April 27, 2006. Cite error: The named reference "Availability" was defined multiple times with different content (see the help page).
  4. ^ "Staying up to date". Plan 9 community. 2006. Retrieved April 27, 2006.
  5. ^ "From the inventors of UNIX system comes Plan 9 from Bell Labs". Lucent Technologies. 1995. Archived from the original on February 9, 2006. Retrieved April 2, 2006.
  6. ^ McIlroy, Doug (1995). "Preface to the Second (1995) Edition". Lucent Technologies. Retrieved April 2, 2006.
  7. ^ Pike, Rob (2003). "UTF-8 History". Retrieved April 27, 2006.
  8. ^ Plan9 BG Presentation
  9. ^ a b Raymond, Eric S. "Plan 9: The Way the Future Was". Retrieved March 28, 2006.
  10. ^ "Interview with Dennis Ritchie, response #25". Retrieved 2006-09-09.
  11. ^ "Interview with Dennis Ritchie, response #23". Retrieved 2006-09-10.
  12. ^ "9grid (Plan 9 wiki)". Plan 9 wiki. 2006. Retrieved March 28, 2006.
  13. ^ "Press Release: Vita Nuova Supplies Inferno Grid to Evotec OAI" (PDF). Vita Nuova Holdings Limted. 2004. Retrieved March 28, 2006.
  14. ^ "Press Release: Rutgers University Libraries Install Inferno Data Grid" (PDF). Vita Nuova Holdings Limited. 2004. Retrieved March 28, 2006.
  15. ^ "Press Release: The University of York Department of Biology install Vita Nuova's Inferno Data Grid" (PDF). Vita Nuova Holdings Limited. 2004. Retrieved March 28, 2006.
  16. ^ Inferno's Download Contents

External links[edit]

Bell Labs[edit]

Forks and community efforts[edit]

  • 9Atom daily mirror with 9Atom (augmented system with additional drivers)
  • 9Front Plan9 fork incorporating additional drivers, applications and file systems
  • LP49 A Plan9 system implemented on top of the L4 microkernel.
  • PlanB A Plan9 extension
  • Octupus A Plan9 extension

Lectures[edit]

Other native and virtual machines[edit]

native[edit]

virtual[edit]

Other resources[edit]