%!PS %%Version: 3.3 %%DocumentFonts: (atend) %%Pages: (atend) %%EndComments % % Version 3.3 prologue for troff files. % /#copies 1 store /aspectratio 1 def /formsperpage 1 def /landscape false def /linewidth .3 def /magnification 1 def /margin 0 def /orientation 0 def /resolution 720 def /rotation 1 def /xoffset 0 def /yoffset 0 def /roundpage true def /useclippath true def /pagebbox [0 0 612 792] def /R /Times-Roman def /I /Times-Italic def /B /Times-Bold def /BI /Times-BoldItalic def /H /Helvetica def /HI /Helvetica-Oblique def /HB /Helvetica-Bold def /HX /Helvetica-BoldOblique def /CW /Courier def /CO /Courier def /CI /Courier-Oblique def /CB /Courier-Bold def /CX /Courier-BoldOblique def /PA /Palatino-Roman def /PI /Palatino-Italic def /PB /Palatino-Bold def /PX /Palatino-BoldItalic def /Hr /Helvetica-Narrow def /Hi /Helvetica-Narrow-Oblique def /Hb /Helvetica-Narrow-Bold def /Hx /Helvetica-Narrow-BoldOblique def /KR /Bookman-Light def /KI /Bookman-LightItalic def /KB /Bookman-Demi def /KX /Bookman-DemiItalic def /AR /AvantGarde-Book def /AI /AvantGarde-BookOblique def /AB /AvantGarde-Demi def /AX /AvantGarde-DemiOblique def /NR /NewCenturySchlbk-Roman def /NI /NewCenturySchlbk-Italic def /NB /NewCenturySchlbk-Bold def /NX /NewCenturySchlbk-BoldItalic def /ZD /ZapfDingbats def /ZI /ZapfChancery-MediumItalic def /S /S def /S1 /S1 def /GR /Symbol def /inch {72 mul} bind def /min {2 copy gt {exch} if pop} bind def /setup { counttomark 2 idiv {def} repeat pop landscape {/orientation 90 orientation add def} if /scaling 72 resolution div def linewidth setlinewidth 1 setlinecap pagedimensions xcenter ycenter translate orientation rotation mul rotate width 2 div neg height 2 div translate xoffset inch yoffset inch neg translate margin 2 div dup neg translate magnification dup aspectratio mul scale scaling scaling scale /Symbol /S Sdefs cf /Times-Roman /S1 S1defs cf 0 0 moveto } def /pagedimensions { useclippath userdict /gotpagebbox known not and { /pagebbox [clippath pathbbox newpath] def roundpage currentdict /roundpagebbox known and {roundpagebbox} if } if pagebbox aload pop 4 -1 roll exch 4 1 roll 4 copy landscape {4 2 roll} if sub /width exch def sub /height exch def add 2 div /xcenter exch def add 2 div /ycenter exch def userdict /gotpagebbox true put } def /pagesetup { /page exch def currentdict /pagedict known currentdict page known and { page load pagedict exch get cvx exec } if } def /decodingdefs [ {counttomark 2 idiv {y moveto show} repeat} {neg /y exch def counttomark 2 idiv {y moveto show} repeat} {neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat} {neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat} {counttomark 2 idiv {y moveto show} repeat} {neg setfunnytext} ] def /setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def /w {neg moveto show} bind def /m {neg dup /y exch def moveto} bind def /done {/lastpage where {pop lastpage} if} def /f { dup /font exch def findfont exch dup /ptsize exch def scaling div dup /size exch def scalefont setfont linewidth ptsize mul scaling 10 mul div setlinewidth /spacewidth ( ) stringwidth pop def } bind def /changefont { /fontheight exch def /fontslant exch def currentfont [ 1 0 fontheight ptsize div fontslant sin mul fontslant cos div fontheight ptsize div 0 0 ] makefont setfont } bind def /sf {f} bind def /cf { dup length 2 idiv /entries exch def /chtab exch def /newfont exch def findfont dup length 1 add dict /newdict exch def {1 index /FID ne {newdict 3 1 roll put} {pop pop} ifelse} forall newdict /Metrics entries dict put newdict /Metrics get begin chtab aload pop 1 1 entries {pop def} for newfont newdict definefont pop end } bind def % % A few arrays used to adjust reference points and character widths in some % of the printer resident fonts. If square roots are too high try changing % the lines describing /radical and /radicalex to, % % /radical [0 -75 550 0] % /radicalex [-50 -75 500 0] % % Move braceleftbt a bit - default PostScript character is off a bit. % /Sdefs [ /bracketlefttp [201 500] /bracketleftbt [201 500] /bracketrighttp [-81 380] /bracketrightbt [-83 380] /braceleftbt [203 490] /bracketrightex [220 -125 500 0] /radical [0 0 550 0] /radicalex [-50 0 500 0] /parenleftex [-20 -170 0 0] /integral [100 -50 500 0] /infinity [10 -75 730 0] ] def /S1defs [ /underscore [0 80 500 0] /endash [7 90 650 0] ] def % % Tries to round clipping path dimensions, as stored in array pagebbox, so they % match one of the known sizes in the papersizes array. Lower left coordinates % are always set to 0. % /roundpagebbox { 7 dict begin /papersizes [8.5 inch 11 inch 14 inch 17 inch] def /mappapersize { /val exch def /slop .5 inch def /diff slop def /j 0 def 0 1 papersizes length 1 sub { /i exch def papersizes i get val sub abs dup diff le {/diff exch def /j i def} {pop} ifelse } for diff slop lt {papersizes j get} {val} ifelse } def pagebbox 0 0 put pagebbox 1 0 put pagebbox dup 2 get mappapersize 2 exch put pagebbox dup 3 get mappapersize 3 exch put end } bind def %%EndProlog %%BeginSetup mark /linewidth 0.5 def /landscape false def /resolution 720 def setup 2 setdecoding %%EndSetup %%Page: 1 1 /saveobj save def mark 1 pagesetup 12 B f (Plan 9 from Bell Labs)4 1122 1 2319 1230 t 10 I f (Rob Pike)1 363 1 2698 1470 t (Dave Presotto)1 574 1 2593 1590 t (Ken Thompson)1 603 1 2578 1710 t (Howard Trickey)1 652 1 2554 1830 t 10 R f (AT&T Bell Laboratories)2 993 1 2383 2010 t (Murray Hill, New Jersey 07974)4 1267 1 2246 2130 t 10 I f (ABSTRACT)2643 2510 w 10 R f ( is assembled from separate)4 1199( It)1 135( distributed computing environment.)3 1533(Plan 9 is a)3 483 4 1330 2770 t ( pieces are connected by)4 982( The)1 207(machines acting as CPU servers, file servers, and terminals.)8 2411 3 1080 2890 t ( building the system)3 836( By)1 175(a single file-oriented protocol and local name space operations.)8 2589 3 1080 3010 t ( specialised components rather than from similar general-purpose com-)8 3036(from distinct,)1 564 2 1080 3130 t ( reliability seldom)2 746(ponents, Plan 9 achieves levels of efficiency, security, simplicity, and)9 2854 2 1080 3250 t ( blocks, intercon-)2 706( paper discusses the building)4 1173( This)1 234(realised in other distributed systems.)4 1487 4 1080 3370 t (nections, and conventions of Plan 9.)5 1446 1 1080 3490 t 10 B f (Introduction.)720 3850 w 10 R f ( general-purpose, multi-user, portable distributed system implemented on a variety of computers)11 3897(Plan 9 is a)3 423 2 720 4006 t ( lacks a number of features often found in other distributed systems, including)12 3121( It)1 111(and networks.)1 560 3 720 4126 t ( uniform distributed name space,)4 1312(\(i\) A)1 322 2 1220 4246 t ( migration,)1 439(\(ii\) Process)1 555 2 1220 4366 t ( processes,)1 432(\(iii\) Lightweight)1 739 2 1220 4486 t ( file caching,)2 518(\(iv\) Distributed)1 700 2 1220 4606 t ( workstations,)1 561(\(v\) Personalised)1 755 2 1220 4726 t ( for X windows.)3 649(\(vi\) Support)1 567 2 1220 4846 t ( few years ago to design a system that could)9 1833(Unhappy with the trends in commercial systems, we began a)9 2487 2 720 5002 t ( particular, we wanted to build a system that could profit)10 2311( In)1 138( in computing hardware.)3 991(adapt well to changes)3 880 4 720 5122 t (from continuing improvements in personal machines with bitmap graphics, in medium- and high-speed net-)13 4320 1 720 5242 t ( of small per-)3 544( common approach is to connect a group)7 1650( A)1 126(works, and in high-performance microprocessors.)4 2000 4 720 5362 t ( of failings.)2 470(sonal timesharing systems\320workstations\320by a medium-speed network, but this has a number)10 3850 2 720 5482 t ( each must be administered separately; maintenance is difficult)8 2568(Because each workstation has private data,)5 1752 2 720 5602 t ( machines are replaced every couple of years to take advantage of technological improve-)13 3601( The)1 207(to centralise.)1 512 3 720 5722 t ( telling, a workstation is a)5 1073( Most)1 264(ments, rendering the hardware obsolete often before it has been paid for.)11 2983 3 720 5842 t ( particular task, too slow and I/O-bound for fast compi-)9 2231(largely self-contained system, not specialised to any)6 2089 2 720 5962 t ( our purposes, primarily software)4 1420( For)1 212(lation, too expensive to be used just to run a window system.)11 2688 3 720 6082 t ( distributed specialisation rather than compromise could)6 2278(development, it seemed that an approach based on)7 2042 2 720 6202 t ( decided)1 337( We)1 190( and security.)2 539(better address issues of cost-effectiveness, maintenance, performance, reliability,)7 3254 4 720 6322 t ( system, networking software, command)4 1664(to build a completely new system, including compiler, operating)8 2656 2 720 6442 t ( construction would also offer an)5 1382( This)1 241( terminal.)1 396(interpreter, window system, and \(on the hardware side\))7 2301 4 720 6562 t ( most of the utilities we had accumulated over the)9 2115(occasion to rethink, revisit, and perhaps even replace)7 2205 2 720 6682 t (years.)720 6802 w ( computing power into large \(not)5 1333( servers concentrate)2 795( CPU)1 247(Plan 9 is divided along lines of service function.)8 1945 4 720 6958 t ( repositories for storage; and terminals give each user of)9 2323(overloaded\) multiprocessors; file servers provide)4 1997 2 720 7078 t ( The)1 216( window system.)2 697(the system a dedicated computer with bitmap screen and mouse on which to run a)14 3407 3 720 7198 t ( services provides a sense of community for a group of programmers,)11 2805(sharing of computing and file storage)5 1515 2 720 7318 t cleartomark showpage saveobj restore %%EndPage: 1 1 %%Page: 2 2 /saveobj save def mark 2 pagesetup 10 R f (- 2 -)2 166 1 2797 480 t (amortises costs, and centralises and hence simplifies management and administration.)9 3426 1 720 840 t ( communicate by a single protocol, built above a reliable data transport layer offered by an)15 3875(The pieces)1 445 2 720 996 t ( services not usually con-)4 1039( for)1 148( Even)1 262(appropriate network, that defines each service as a rooted tree of files.)11 2871 4 720 1116 t ( has)1 159( process)1 324( Each)1 249(sidered as files, the unified design permits some noteworthy and profitable simplification.)11 3588 4 720 1236 t (a local file)2 427 1 720 1356 t 10 I f (name space)1 471 1 1175 1356 t 10 R f ( and thereby to the files)5 950(that contains attachments to all services the process is using)9 2416 2 1674 1356 t ( customised view of)3 820( of the most important jobs of a terminal is to support its user's)13 2584( One)1 221(in those services.)2 695 4 720 1476 t (the entire system as represented by the services visible in the name space.)12 2941 1 720 1596 t ( and a terminal; it is intended to pro-)8 1484(To be used effectively, the system requires a CPU server, a file server,)12 2836 2 720 1752 t ( are)1 154( CPU server and file server)5 1128( The)1 214(vide service at the level of a departmental computer centre or larger.)11 2824 4 720 1872 t ( system's)1 390( The)1 220(large machines best housed in an air conditioned machine room with conditioned power.)12 3710 3 720 1992 t ( of our goals,)3 545( One)1 222( part from economies of scale, and the scale we have in mind is large.)14 2861(strengths stem in)2 692 4 720 2112 t ( AT&T Bell Laboratories \(about)4 1374(perhaps unrealisable, is to unite the computing environment for all of)10 2946 2 720 2232 t ( spread)1 316(30,000 people\) into a single Plan 9 system comprising thousands of CPU and file servers)14 4004 2 720 2352 t ( is clearly beyond the administrative)5 1461( That)1 235( the company's various departments.)4 1475(throughout, and clustered in,)3 1149 4 720 2472 t (capacity of workstations on Ethernets.)4 1528 1 720 2592 t ( the name space and how it is used,)8 1422(The following sections describe the basic components of Plan 9, explain)10 2898 2 720 2748 t (and offer some examples of unusual services that illustrate how the ideas of Plan 9 can be applied to a)19 4320 1 720 2868 t (variety of problems.)2 807 1 720 2988 t 10 B f (CPU Servers)1 551 1 720 3228 t 10 R f ( a Silicon Graphics)3 820( production CPU server is)4 1110( The)1 223(Several computers provide CPU service for Plan 9.)7 2167 4 720 3384 t ( disk, and a 20)4 616(Power Series machine with four 25MHz MIPS processors, 128 megabytes of memory, no)12 3704 2 720 3504 t ( also has Datakit and Ethernet)5 1270( It)1 126( server.)1 308(megabyte-per-second back-to-back DMA connection to the file)6 2616 4 720 3624 t ( provides a conven-)3 793( The operating system)3 897( 2])1 99(controllers to connect to terminals and non-Plan 9 systems. [1,)9 2531 4 720 3744 t (tional view of processes, based on)5 1374 1 720 3864 t 10 CW f (fork)2121 3864 w 10 R f (and)2388 3864 w 10 CW f (exec)2559 3864 w 10 R f ( the)1 150(system calls, [3] and of files, mostly determined by)8 2064 2 2826 3864 t ( may begin typing com-)4 995( a connection to the CPU server is established, the user)10 2304( Once)1 271(remote file server.)2 750 4 720 3984 t ( 5])1 99(mands to a command interpreter in a conventional-looking environment. [4,)9 3032 2 720 4104 t ( If)1 124( is its ability to absorb load.)6 1157( most important)2 648( The)1 212(A multiprocessor CPU server has several advantages.)6 2179 5 720 4260 t ( not saturated \(which can be economically feasible for a multiprocessor\) there is usually a)14 3721(the machine is)2 599 2 720 4380 t ( notion of free disk blocks in which to store)9 1758( is similar to the)4 649( This)1 229(free processor ready to run a new process.)7 1684 4 720 4500 t ( might buy a new disk when a file)8 1402( comparison extends farther: just as one)6 1628( The)1 212(new files on a file system.)5 1078 4 720 4620 t ( busy, without needing to)4 1018(system gets full, one may add processors to a multiprocessor when the system gets)13 3302 2 720 4740 t ( and share the file)4 749( course, one may also add new CPU servers)8 1837( Of)1 166(replace or duplicate the entire system.)5 1568 4 720 4860 t (servers.)720 4980 w ( has no local storage; all)5 1003( It)1 118( text processing, and other applications.)5 1619(The CPU server performs compilation,)4 1580 4 720 5136 t ( name space, such as)4 848( parts of the)3 492( Transient)1 433(the permanent files it accesses are provided by remote servers.)9 2547 4 720 5256 t ( of active processes [6] or services provided by user processes, may reside locally but)14 3495(the collected images)2 825 2 720 5376 t ( as interchangeable for their)4 1173( 9 CPU servers are)4 812( Plan)1 244(these disappear when the CPU server is rebooted.)7 2091 4 720 5496 t (task\320computation\320 as are ordinary terminals for theirs.)6 2288 1 720 5616 t 10 B f (File Servers)1 507 1 720 5856 t 10 R f ( server is another Silicon Graphics computer)6 1834( current)1 315( The)1 213(The Plan 9 file servers hold all permanent files.)8 1958 4 720 6012 t ( megabytes of memory, 600 megabytes of magnetic disk, and a 300 gigabyte)12 3308(with two processors, 64)3 1012 2 720 6132 t ( by a MIPS 6280, a single)6 1102( machine is to be replaced)5 1089( \(This)1 271(jukebox of write-once optical disk \(WORM\).)5 1858 4 720 6252 t ( connects to Plan 9 CPU servers through 20 megabyte-per-)9 2385( It)1 115( bandwidth.\))1 509(processor with much greater I/O)4 1311 4 720 6372 t (second DMA links, and to terminals and other machines through conventional networks.)11 3543 1 720 6492 t ( The)1 209( of disks or blocks or files.)6 1087(The file server presents to its clients a file system rather than, say, an array)14 3024 3 720 6648 t ( of a tree, and may be addressed for I/O)9 1623(files are named by slash-separated components that label branches)8 2697 2 720 6768 t ( true file system resides)4 967( The)1 211( location of a file in the server is invisible to the client.)12 2256( The)1 211(at the byte level.)3 675 5 720 6888 t ( contents of)2 488( The)1 216( RAM.)1 289(on the WORM, and is accessed through a two-level cache of magnetic disk and)13 3327 4 720 7008 t ( rapidly by DMA over a high-speed link,)7 1673(recently-used files reside in RAM and are sent to the CPU server)11 2647 2 720 7128 t ( magnetic disk acts as a)5 975( The)1 212( faster than regular disk although not as fast as local memory.)11 2534(which is much)2 599 4 720 7248 t cleartomark showpage saveobj restore %%EndPage: 2 2 %%Page: 3 3 /saveobj save def mark 3 pagesetup 10 R f (- 3 -)2 166 1 2797 480 t ( the high-speed links, it)4 952( With)1 254( simultaneously as a backup medium for the RAM.)8 2072(cache for the WORM and)4 1042 4 720 840 t ( all its clients,)3 595(is unnecessary for clients to cache data; instead the file server centralises the caching for)14 3725 2 720 960 t (avoiding the problems of distributed caches.)5 1770 1 720 1080 t ( is used as the file system)6 1064( the ``main'' system,)3 853( One,)1 248(The file server actually presents several file systems.)7 2155 4 720 1236 t ( service is)2 421( One)1 227( systems provide less generally-used data for private applications.)8 2714( Other)1 288( clients.)1 322(for most)1 348 6 720 1356 t ( day, the file server freezes activity on the main file system and flushes)13 2859( a)1 70( Once)1 261(unusual: the backup system.)3 1130 4 720 1476 t ( file service continues unaffected, but changes to files are)9 2369( Normal)1 365(the data in that system to the WORM.)7 1586 3 720 1596 t ( using a copy-on-write scheme. [7] Thus, the file tree is)10 2262(applied to a fresh hierarchy, fabricated on demand,)7 2058 2 720 1716 t ( the dump, and an ordinary system)6 1397(split into two: a read-only version representing the system at the time of)12 2923 2 720 1836 t ( roots of these old file trees are available as directories in a)12 2440( The)1 213( service.)1 340(that continues to provide normal)4 1327 4 720 1956 t ( example, the file)3 795( For)1 223( any other \(read-only\) system.)4 1336(file system that may be accessed exactly as)7 1966 4 720 2076 t 10 CW f (/usr/rob/doc/plan9.ms)720 2196 w 10 R f ( on April 1, 1990, can be accessed through the backup file sys-)12 2554(as it existed)2 478 2 2008 2196 t (tem by the name)3 711 1 720 2316 t 10 CW f (/1990/0401/usr/rob/doc/plan9.ms)1472 2316 w 10 R f ( com-)1 245( scheme permits recovery or)4 1194(. This)1 269 3 3332 2316 t ( such as file copy and comparison routines rather than by spe-)11 2514(parison of lost files by traditional commands)6 1806 2 720 2436 t ( same file server and)4 845( the backup system is provided by the)7 1549( Moreover,)1 474(cial utilities in a backup subsystem.)5 1452 4 720 2556 t ( identical to those in the)5 993(the same mechanism as the original files so permissions in the backup system are)13 3327 2 720 2676 t (main system; one cannot use the backup data to subvert security.)10 2588 1 720 2796 t 10 B f (Terminals)720 3036 w 10 R f ( of which several)3 711(The standard terminal for Plan 9 is a Gnot \(with silent 'G'\), a locally-designed machine)14 3609 2 720 3192 t ( a diskless workstation: 4 or 8)6 1212( terminal's hardware is reminiscent of)5 1536( The)1 209(hundred have been manufactured.)3 1363 4 720 3312 t ( 25MHz 68020 processor, a 1024)5 1391(megabytes of memory, a)3 1020 2 720 3432 t 10 S f (\264)3131 3432 w 10 R f (1024 pixel display with two bits per pixel, a)8 1854 1 3186 3432 t ( workstation.)1 523( has no external storage and no expansion bus; it is a terminal, not a)14 2733( It)1 113(keyboard, and a mouse.)3 951 4 720 3552 t ( distribution network connects the terminals to the CPU and file)10 2654(A 2 megabit per second packet-switched)5 1666 2 720 3672 t ( for)1 147( the bandwidth is low for applications such as compilation, it is more than adequate)14 3431(servers. Although)1 742 3 720 3792 t ( to the rest of)4 551(the terminal's intended purpose: to provide a window system, that is, a multiplexed interface)13 3769 2 720 3912 t (Plan 9.)1 278 1 720 4032 t ( terminal)1 362( The)1 209(Unlike a workstation, the Gnot does not handle compilation; that is done by the CPU server.)15 3749 3 720 4188 t ( server's operating system, configured for a single, smaller processor with support)11 3280(runs a version of the CPU)5 1040 2 720 4308 t ( are)1 156( Files)1 255( uses that to run programs such as a window system and a text editor.)14 2906(for bitmap graphics, and)3 1003 4 720 4428 t (provided by the standard file server over the terminal's network connection.)10 3035 1 720 4548 t ( have no private storage either locally or)7 1659(Just like old character terminals, all Gnots are equivalent, as they)10 2661 2 720 4704 t ( inexpensive enough that every member of our research centre can have two:)12 3171( are)1 156( They)1 265(on the file server.)3 728 4 720 4824 t ( at home sees exactly the same system as at)9 1832( person working on a Gnot)5 1118( A)1 132(one at work and one at home.)6 1238 4 720 4944 t ( and computing resources remain at work where they can be shared and maintained)13 3465(work, as all the files)4 855 2 720 5064 t (effectively.)720 5184 w 10 B f (Networks)720 5424 w 10 R f ( and file servers communicate)4 1225( servers)1 313( CPU)1 251(Plan 9 has a variety of networks that connect the components.)10 2531 4 720 5580 t ( is only practical for the scale of, say, a computer centre or)12 2554( That)1 252(over back-to-back DMA controllers.)3 1514 3 720 5700 t ( distant machines are connected by traditional networks such as)9 2654( More)1 279(departmental computing resource.)2 1387 3 720 5820 t ( terminal or CPU server may use a remote file server completely transparently except)13 3406( A)1 122(Ethernet or Datakit.)2 792 3 720 5940 t ( country, Plan 9 systems could be assem-)7 1657( our Datakit network spans the)5 1228( As)1 162(for performance considerations.)2 1273 4 720 6060 t (bled on a large scale, although this has not been tried in practice. \(See Figure 1.\))15 3205 1 720 6180 t ( telephone wire and a)4 901(To keep their cost down, Gnots employ an inexpensive network that uses standard)12 3419 2 720 6336 t ( throughput is respectable, about 120 kilobytes per second.\))8 2380( \(The)1 238(single-chip interface.)1 842 3 720 6456 t ( of us have DS-1 lines at 1.54 megabits)8 1576( Some)1 279(To get even that bandwidth to home is of course problematic.)10 2465 3 720 6612 t ( the terminal)2 531( Since)1 285( equipment.)1 485(per second; others are experimenting with more modest communications)8 3019 4 720 6732 t ( does not partici-)3 680(only mediates communication\320it instructs the CPU server to connect to the file server but)13 3640 2 720 6852 t ( \320the relatively low bandwidth to the terminal does not affect the)11 2814(pate in the resulting communication)4 1506 2 720 6972 t (overall performance of the system.)4 1388 1 720 7092 t cleartomark showpage saveobj restore %%EndPage: 3 3 %%Page: 4 4 /saveobj save def mark 4 pagesetup 10 R f (- 4 -)2 166 1 2797 480 t cleartomark saveobj restore %%BeginGlobal % % Version 3.3 drawing procedures for dpost. Automatically pulled in, but only % when needed. % /inpath false def /savematrix matrix def /Dl { inpath {pop pop neg lineto} {newpath neg moveto neg lineto stroke} ifelse } bind def /De { /y1 exch 2 div def /x1 exch 2 div def /savematrix savematrix currentmatrix def neg exch x1 add exch translate x1 y1 scale 0 0 1 0 360 inpath {1 0 moveto arc savematrix setmatrix} {newpath arc savematrix setmatrix stroke} ifelse } bind def /Da { /dy2 exch def /dx2 exch def /dy1 exch def /dx1 exch def dy1 add neg exch dx1 add exch dx1 dx1 mul dy1 dy1 mul add sqrt dy1 dx1 neg atan dy2 neg dx2 atan inpath {arc} {newpath arc stroke} ifelse } bind def /DA { /dy2 exch def /dx2 exch def /dy1 exch def /dx1 exch def dy1 add neg exch dx1 add exch dx1 dx1 mul dy1 dy1 mul add sqrt dy1 dx1 neg atan dy2 neg dx2 atan inpath {arcn} {newpath arcn stroke} ifelse } bind def /Ds { /y2 exch def /x2 exch def /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 5 x1 mul add 6 div y0 5 y1 mul add -6 div x2 5 x1 mul add 6 div y2 5 y1 mul add -6 div x1 x2 add 2 div y1 y2 add -2 div inpath {curveto} {newpath x0 x1 add 2 div y0 y1 add -2 div moveto curveto stroke} ifelse } bind def %%EndGlobal /saveobj save def mark 10 R f 1821 3675 72 43 De 1821 3596 72 43 De 1893 3675 1893 3603 Dl 1821 3675 1821 3603 Dl 2311 3308 2311 3236 Dl 1958 3308 1958 3236 Dl 2383 3092 2419 3020 Dl 1893 3092 1857 3020 Dl (CPU)2322 2968 w 2304 2876 2304 3020 Dl 2520 2876 2304 2876 Dl 2520 3020 2520 2876 Dl 2304 3020 2520 3020 Dl 2138 3092 2138 3020 Dl (CPU)2041 2968 w 2023 2876 2023 3020 Dl 2239 2876 2023 2876 Dl 2239 3020 2239 2876 Dl 2023 3020 2239 3020 Dl (CPU)1760 2968 w 1742 2876 1742 3020 Dl 1958 2876 1742 2876 Dl 1958 3020 1958 2876 Dl 1742 3020 1958 3020 Dl 2174 3308 2174 3452 Dl 2490 3308 2174 3308 Dl 2491 3452 2491 3308 Dl 2175 3452 2491 3452 Dl (file)2281 3400 w 1785 3308 1785 3452 Dl 2101 3308 1785 3308 Dl 2102 3452 2102 3308 Dl 1786 3452 2102 3452 Dl (file)1892 3400 w 1684 3078 1684 3236 Dl 2555 3078 1684 3078 Dl 2556 3236 2556 3078 Dl 1685 3236 2556 3236 Dl (high speed DMA)2 688 1 1794 3184 t 2455 3020 1 1 De 2455 3675 72 43 De 2455 3596 72 43 De 2527 3675 2527 3603 Dl 2455 3675 2455 3603 Dl 2311 3675 72 43 De 2311 3596 72 43 De 2383 3675 2383 3603 Dl 2311 3675 2311 3603 Dl 2174 3675 72 43 De 2174 3596 72 43 De 2246 3675 2246 3603 Dl 2174 3675 2174 3603 Dl 2491 3552 2419 3452 Dl 2347 3552 2347 3452 Dl 2210 3552 2246 3452 Dl 2030 3552 1994 3452 Dl 1994 3675 72 43 De 1994 3596 72 43 De 2066 3675 2066 3603 Dl 1994 3675 1994 3603 Dl 1893 3453 1857 3553 Dl 2944 2559 2944 2559 2944 3091 Ds 2944 2559 2944 3091 3001 3155 Ds 2944 3091 3001 3155 3101 3155 Ds 3001 3155 3101 3155 3101 3155 Ds 2736 2559 2736 2559 2736 3055 Ds 2736 2559 2736 3055 2657 3155 Ds 2736 3055 2657 3155 2542 3155 Ds 2657 3155 2542 3155 2542 3155 Ds 3247 3675 72 43 De 3247 3596 72 43 De 3319 3675 3319 3603 Dl 3247 3675 3247 3603 Dl 3736 3308 3736 3236 Dl 3384 3308 3384 3236 Dl 3808 3092 3844 3020 Dl 3319 3092 3283 3020 Dl (CPU)3747 2968 w 3729 2876 3729 3020 Dl 3945 2876 3729 2876 Dl 3945 3020 3945 2876 Dl 3729 3020 3945 3020 Dl 3564 3092 3564 3020 Dl (CPU)3467 2968 w 3448 2876 3448 3020 Dl 3664 2876 3448 2876 Dl 3664 3020 3664 2876 Dl 3448 3020 3664 3020 Dl (CPU)3186 2968 w 3168 2876 3168 3020 Dl 3384 2876 3168 2876 Dl 3384 3020 3384 2876 Dl 3168 3020 3384 3020 Dl 3600 3308 3600 3452 Dl 3916 3308 3600 3308 Dl 3916 3452 3916 3308 Dl 3600 3452 3916 3452 Dl (file)3706 3400 w 3211 3308 3211 3452 Dl 3527 3308 3211 3308 Dl 3528 3452 3528 3308 Dl 3212 3452 3528 3452 Dl (file)3318 3400 w 3110 3078 3110 3236 Dl 3981 3078 3110 3078 Dl 3981 3236 3981 3078 Dl 3110 3236 3981 3236 Dl (high speed DMA)2 688 1 3220 3184 t 3880 3020 1 1 De 3880 3675 72 43 De 3880 3596 72 43 De 3952 3675 3952 3603 Dl 3880 3675 3880 3603 Dl 3736 3675 72 43 De 3736 3596 72 43 De 3808 3675 3808 3603 Dl 3736 3675 3736 3603 Dl 3600 3675 72 43 De 3600 3596 72 43 De 3672 3675 3672 3603 Dl 3600 3675 3600 3603 Dl 3916 3552 3844 3452 Dl 3772 3552 3772 3452 Dl 3636 3552 3672 3452 Dl 3456 3552 3420 3452 Dl 3420 3675 72 43 De 3420 3596 72 43 De 3492 3675 3492 3603 Dl 3420 3675 3420 3603 Dl 3319 3453 3283 3553 Dl 2008 2235 2008 2559 Dl 3995 2235 2008 2235 Dl 3996 2559 3996 2235 Dl 2009 2559 3996 2559 Dl 3240 1494 14 14 De 3196 1494 14 14 De 3153 1494 14 14 De 3110 1494 14 14 De 3074 1494 14 14 De 3276 1494 14 14 De 3319 1494 14 14 De 3319 1537 14 14 De 3276 1537 14 14 De 3240 1537 14 14 De 3196 1537 14 14 De 3153 1537 14 14 De 3110 1537 14 14 De 3074 1537 14 14 De 3074 1580 14 14 De 3110 1580 14 14 De 3153 1580 14 14 De 3196 1580 14 14 De 3240 1580 14 14 De 3276 1580 14 14 De 3319 1580 14 14 De 3132 1249 3132 1429 Dl 3247 1249 3132 1249 Dl 3247 1429 3247 1249 Dl 3132 1429 3247 1429 Dl 3096 1213 3096 1465 Dl 3276 1213 3096 1213 Dl 3276 1465 3276 1213 Dl 3096 1465 3276 1465 Dl 3038 1480 3038 1609 Dl 3369 1479 3038 1479 Dl 3369 1608 3369 1479 Dl 3038 1609 3369 1609 Dl 3542 1508 14 14 De 3506 1530 14 14 De 3470 1508 14 14 De 3470 1479 86 86 De 3038 1537 3038 1537 2995 1537 Ds 3038 1537 2995 1537 2995 1422 Ds 2995 1537 2995 1422 3095 1422 Ds 2995 1422 3095 1422 3095 1422 Ds 3513 1436 3513 1436 3513 1386 Ds 3513 1436 3513 1386 3427 1400 Ds 3513 1386 3427 1400 3370 1372 Ds 3427 1400 3370 1372 3298 1415 Ds 3370 1372 3298 1415 3298 1415 Ds 3650 1242 14 14 De 3607 1242 14 14 De 3564 1242 14 14 De 3520 1242 14 14 De 3484 1242 14 14 De 3686 1242 14 14 De 3729 1242 14 14 De 3729 1285 14 14 De 3686 1285 14 14 De 3650 1285 14 14 De 3607 1285 14 14 De 3564 1285 14 14 De 3520 1285 14 14 De 3484 1285 14 14 De 3484 1328 14 14 De 3520 1328 14 14 De 3564 1328 14 14 De 3607 1328 14 14 De 3650 1328 14 14 De 3686 1328 14 14 De 3729 1328 14 14 De 3542 997 3542 1177 Dl 3657 997 3542 997 Dl 3657 1177 3657 997 Dl 3542 1177 3657 1177 Dl 3506 961 3506 1213 Dl 3686 961 3506 961 Dl 3686 1213 3686 961 Dl 3506 1213 3686 1213 Dl 3448 1228 3448 1357 Dl 3779 1227 3448 1227 Dl 3780 1356 3780 1227 Dl 3449 1357 3780 1357 Dl 3952 1256 14 14 De 3916 1278 14 14 De 3880 1256 14 14 De 3880 1227 86 86 De 3448 1285 3448 1285 3405 1285 Ds 3448 1285 3405 1285 3405 1170 Ds 3405 1285 3405 1170 3505 1170 Ds 3405 1170 3505 1170 3505 1170 Ds 3924 1184 3924 1184 3924 1134 Ds 3924 1184 3924 1134 3838 1148 Ds 3924 1134 3838 1148 3781 1120 Ds 3838 1148 3781 1120 3709 1163 Ds 3781 1120 3709 1163 3709 1163 Ds 4183 1530 14 14 De 4140 1530 14 14 De 4096 1530 14 14 De 4053 1530 14 14 De 4017 1530 14 14 De 4219 1530 14 14 De 4262 1530 14 14 De 4262 1573 14 14 De 4219 1573 14 14 De 4183 1573 14 14 De 4140 1573 14 14 De 4096 1573 14 14 De 4053 1573 14 14 De 4017 1573 14 14 De 4017 1616 14 14 De 4053 1616 14 14 De 4096 1616 14 14 De 4140 1616 14 14 De 4183 1616 14 14 De 4219 1616 14 14 De 4262 1616 14 14 De 4075 1285 4075 1465 Dl 4190 1285 4075 1285 Dl 4190 1465 4190 1285 Dl 4075 1465 4190 1465 Dl 4039 1249 4039 1501 Dl 4219 1249 4039 1249 Dl 4219 1501 4219 1249 Dl 4039 1501 4219 1501 Dl 3981 1516 3981 1645 Dl 4312 1515 3981 1515 Dl 4312 1644 4312 1515 Dl 3981 1645 4312 1645 Dl 4485 1544 14 14 De 4449 1566 14 14 De 4413 1544 14 14 De 4413 1515 86 86 De 3981 1573 3981 1573 3938 1573 Ds 3981 1573 3938 1573 3938 1458 Ds 3938 1573 3938 1458 4038 1458 Ds 3938 1458 4038 1458 4038 1458 Ds 4456 1472 4456 1472 4456 1422 Ds 4456 1472 4456 1422 4370 1436 Ds 4456 1422 4370 1436 4313 1408 Ds 4370 1436 4313 1408 4241 1451 Ds 4313 1408 4241 1451 4241 1451 Ds 3484 1817 3196 1616 Dl 3729 1695 3607 1364 Dl 4061 1817 4140 1652 Dl (distribution)3541 1802 w 3484 1696 3484 1940 Dl 4060 1695 3484 1695 Dl 4060 1939 4060 1695 Dl 3484 1940 4060 1940 Dl (network)3609 1881 w 1504 1414 14 14 De 1461 1414 14 14 De 1418 1414 14 14 De 1375 1414 14 14 De 1339 1414 14 14 De 1540 1414 14 14 De 1584 1414 14 14 De 1584 1458 14 14 De 1540 1458 14 14 De 1504 1458 14 14 De 1461 1458 14 14 De 1418 1458 14 14 De 1375 1458 14 14 De 1339 1458 14 14 De 1339 1501 14 14 De 1375 1501 14 14 De 1418 1501 14 14 De 1461 1501 14 14 De 1504 1501 14 14 De 1540 1501 14 14 De 1584 1501 14 14 De 1396 1170 1396 1350 Dl 1511 1170 1396 1170 Dl 1512 1350 1512 1170 Dl 1397 1350 1512 1350 Dl 1360 1134 1360 1386 Dl 1540 1134 1360 1134 Dl 1540 1386 1540 1134 Dl 1360 1386 1540 1386 Dl 1303 1401 1303 1530 Dl 1634 1400 1303 1400 Dl 1634 1529 1634 1400 Dl 1303 1530 1634 1530 Dl 1807 1429 14 14 De 1771 1450 14 14 De 1735 1429 14 14 De 1735 1400 86 86 De 1303 1458 1303 1458 1260 1458 Ds 1303 1458 1260 1458 1260 1343 Ds 1260 1458 1260 1343 1360 1343 Ds 1260 1343 1360 1343 1360 1343 Ds 1778 1357 1778 1357 1778 1307 Ds 1778 1357 1778 1307 1692 1321 Ds 1778 1307 1692 1321 1635 1293 Ds 1692 1321 1635 1293 1563 1336 Ds 1635 1293 1563 1336 1563 1336 Ds 1915 1162 14 14 De 1872 1162 14 14 De 1828 1162 14 14 De 1785 1162 14 14 De 1749 1162 14 14 De 1951 1162 14 14 De 1994 1162 14 14 De 1994 1206 14 14 De 1951 1206 14 14 De 1915 1206 14 14 De 1872 1206 14 14 De 1828 1206 14 14 De 1785 1206 14 14 De 1749 1206 14 14 De 1749 1249 14 14 De 1785 1249 14 14 De 1828 1249 14 14 De 1872 1249 14 14 De 1915 1249 14 14 De 1951 1249 14 14 De 1994 1249 14 14 De 1807 918 1807 1098 Dl 1922 918 1807 918 Dl 1922 1098 1922 918 Dl 1807 1098 1922 1098 Dl 1771 882 1771 1134 Dl 1951 882 1771 882 Dl 1951 1134 1951 882 Dl 1771 1134 1951 1134 Dl 1713 1149 1713 1278 Dl 2044 1148 1713 1148 Dl 2044 1277 2044 1148 Dl 1713 1278 2044 1278 Dl 2217 1177 14 14 De 2181 1198 14 14 De 2145 1177 14 14 De 2145 1148 86 86 De 1713 1206 1713 1206 1670 1206 Ds 1713 1206 1670 1206 1670 1091 Ds 1670 1206 1670 1091 1770 1091 Ds 1670 1091 1770 1091 1770 1091 Ds 2188 1105 2188 1105 2188 1055 Ds 2188 1105 2188 1055 2102 1069 Ds 2188 1055 2102 1069 2045 1041 Ds 2102 1069 2045 1041 1973 1084 Ds 2045 1041 1973 1084 1973 1084 Ds 2448 1450 14 14 De 2404 1450 14 14 De 2361 1450 14 14 De 2318 1450 14 14 De 2282 1450 14 14 De 2484 1450 14 14 De 2527 1450 14 14 De 2527 1494 14 14 De 2484 1494 14 14 De 2448 1494 14 14 De 2404 1494 14 14 De 2361 1494 14 14 De 2318 1494 14 14 De 2282 1494 14 14 De 2282 1537 14 14 De 2318 1537 14 14 De 2361 1537 14 14 De 2404 1537 14 14 De 2448 1537 14 14 De 2484 1537 14 14 De 2527 1537 14 14 De 2340 1206 2340 1386 Dl 2455 1206 2340 1206 Dl 2455 1386 2455 1206 Dl 2340 1386 2455 1386 Dl 2304 1170 2304 1422 Dl 2484 1170 2304 1170 Dl 2484 1422 2484 1170 Dl 2304 1422 2484 1422 Dl 2246 1437 2246 1566 Dl 2577 1436 2246 1436 Dl 2577 1565 2577 1436 Dl 2246 1566 2577 1566 Dl 2750 1465 14 14 De 2714 1486 14 14 De 2678 1465 14 14 De 2678 1436 86 86 De 2246 1494 2246 1494 2203 1494 Ds 2246 1494 2203 1494 2203 1379 Ds 2203 1494 2203 1379 2303 1379 Ds 2203 1379 2303 1379 2303 1379 Ds 2721 1393 2721 1393 2721 1343 Ds 2721 1393 2721 1343 2635 1357 Ds 2721 1343 2635 1357 2578 1329 Ds 2635 1357 2578 1329 2506 1372 Ds 2578 1329 2506 1372 2506 1372 Ds 1749 1738 1461 1537 Dl 1994 1616 1872 1285 Dl 2325 1738 2404 1573 Dl (distribution)1806 1722 w 1749 1617 1749 1861 Dl 2325 1616 1749 1616 Dl 2325 1860 2325 1616 Dl 1749 1861 2325 1861 Dl (network)1874 1802 w 2016 1882 2016 1882 2016 1954 Ds 2016 1882 2016 1954 2052 2026 Ds 2016 1954 2052 2026 2088 2026 Ds 2052 2026 2088 2026 2124 2098 Ds 2088 2026 2124 2098 2124 2234 Ds 2124 2098 2124 2234 2124 2234 Ds 3794 1954 3794 1954 3794 2062 Ds 3794 1954 3794 2062 3866 2098 Ds 3794 2062 3866 2098 3866 2234 Ds 3866 2098 3866 2234 3866 2234 Ds (Nationwide Long Haul)2 921 1 2448 2435 t 10 B f (Figure 1 - Plan 9 Topology)5 1137 1 2311 4144 t (Name Spaces)1 563 1 720 4384 t 10 R f ( of name space in Plan 9: the global space of the names of the various servers on the)18 3504(There are two kinds)3 816 2 720 4540 t ( of machines and services con-)5 1242( Names)1 330( a process.)2 424(network and the local space of files and servers visible to)10 2324 4 720 4660 t (nected to Datakit are hierarchical, for example)6 1858 1 720 4780 t 10 CW f (nj/mh/astro/helix)2604 4780 w 10 R f (, defining \(roughly\) the area, build-)5 1416 1 3624 4780 t ( naming for its machines,)4 1033(ing, department, and machine in a department. [1] Because the network provides)11 3287 2 720 4900 t ( opera-)1 283( one of Plan 9's fundamental)5 1166( However)1 418(global naming issues need not be handled directly by Plan 9.)10 2453 4 720 5020 t ( fine-grained control)2 824( This)1 230( network services to the local name space on a per-process basis.)11 2604(tions is to attach)3 662 4 720 5140 t (of the local name space is used to address issues of customisability, transparency, and heterogeneity.)14 4018 1 720 5260 t ( implement a file)3 719(The protocol for communicating with Plan 9 services is file-oriented; all services must)12 3601 2 720 5416 t ( collected into a)3 671( is, each service, local or remote, is arranged into a set of file-like objects)14 3100(system. That)1 549 3 720 5536 t ( services)1 349( Other)1 280( trivial requirement.)2 802( a file server, this is a)6 863( For)1 191(hierarchy called the name space of the server.)7 1835 6 720 5656 t ( instance, a printing service might be implemented as a directory)10 2602( For)1 191(must sometimes be more imaginative.)4 1527 3 720 5776 t ( examples are described in the following sections; for)8 2207( Other)1 286( to be printed.)3 582(in which processes create files)4 1245 4 720 5896 t (the moment, consider just a set of ordinary file servers distributed around the network.)13 3453 1 720 6016 t ( Plan 9 itself\))3 542(When a program calls a Plan 9 service \(using mechanisms inherent in the network and outside)15 3778 2 720 6172 t ( the protocol, usually as medi-)5 1220( Using)1 291( service.)1 334(the program is connected to the root of the name space of the)12 2475 4 720 6292 t ( the local operating system into a set of file-oriented system calls, the program accesses the service)16 4025(ated by)1 295 2 720 6412 t (by opening, creating, removing, reading, and writing files in the name space.)11 3067 1 720 6532 t ( on the network, a user of Plan 9 selects those desired: a file server where)15 2971(From the set of services available)5 1349 2 720 6688 t ( a departmental file server where the)6 1498(personal files reside, perhaps other file servers where data is kept, or)11 2822 2 720 6808 t ( name spaces of these various services are collected and)9 2283( The)1 211( a group project is being written.)6 1337(software for)1 489 4 720 6928 t ( private name space by a fundamental Plan 9 operator, called)10 2520(joined to the user's own)4 1000 2 720 7048 t 10 I f (attach,)4274 7048 w 10 R f (that joins a)2 457 1 4583 7048 t ( the spaces of the ser-)5 906( user's name space is formed by the union of)9 1860( The)1 213(service's name space to a user's.)5 1341 4 720 7168 t ( space is assembled by the local operating system for each user, typically)12 2950( local name)2 468( The)1 209(vices being used.)2 693 4 720 7288 t cleartomark showpage saveobj restore %%EndPage: 4 4 %%Page: 5 5 /saveobj save def mark 5 pagesetup 10 R f (- 5 -)2 166 1 2797 480 t ( although in practice the name space)6 1482( name space is modifiable on a per-process level,)8 1991( The)1 209(by the terminal.)2 638 4 720 840 t (is assembled at log-in time and shared by all that user's processes.)11 2646 1 720 960 t ( termi-)1 273( The)1 209( a user sits at a terminal and instructs it which file server to connect to.)15 2878(To log in to the system,)5 960 4 720 1116 t ( It)1 118( and loads the operating system from the server.)8 1972(nal calls the server, authenticates the user \(see below\),)8 2230 3 720 1236 t (then reads a file, called the)5 1119 1 720 1356 t 10 I f (profile,)1874 1356 w 10 R f ( that)1 186( profile contains commands)3 1137( The)1 215(in the user's personal directory.)4 1301 4 2201 1356 t ( to be used by default and where in the local name space they are to be attached.)17 3333(define what services are)3 987 2 720 1476 t ( the root of the local name space,)7 1347(For example, the main file server to be used is attached to)11 2340 2 720 1596 t 10 CW f (/)4436 1596 w 10 R f (, and the pro-)3 544 1 4496 1596 t (cess file system is attached to the directory)7 1711 1 720 1716 t 10 CW f (/proc)2456 1716 w 10 R f ( profile then typically starts the window system.)7 1921(. The)1 230 2 2756 1716 t (Within each window in the window system runs a command interpreter that may be used to execute com-)17 4320 1 720 1872 t ( computation-)1 563( For)1 194( profile.)1 321(mands locally, using file names interpreted in the name space assembled by the)12 3242 4 720 1992 t (intensive applications such as compilation, the user runs a command)9 2781 1 720 2112 t 10 CW f (cpu)3531 2112 w 10 R f ( \(automatically or by)3 853(that selects)1 446 2 3741 2112 t ( typing)1 291( After)1 270( run commands.)2 661(name\) a CPU server to)4 953 4 720 2232 t 10 CW f (cpu)2930 2232 w 10 R f (, the user sees a regular prompt from the com-)9 1930 1 3110 2232 t ( running on the CPU server)5 1146( that command interpreter is)4 1162( But)1 204(mand interpreter.)1 696 4 720 2352 t 10 I f (in the same name space\320)4 1077 1 3963 2352 t ( directory\320as the)2 736(even the same current)3 911 2 720 2472 t 10 CW f (cpu)2437 2472 w 10 I f (command itself.)1 643 1 2652 2472 t 10 R f (The terminal exports a description of the)6 1685 1 3355 2472 t (name space to the CPU server, which then assembles an identical name space, so the customised view of)17 4320 1 720 2592 t ( description of the)3 754( \(A)1 166(the system assembled by the terminal is the same as that seen on the CPU server.)15 3400 3 720 2712 t ( when)1 254(name space is used rather than the name space itself so the CPU server may use high-speed links)17 4066 2 720 2832 t ( The)1 218(possible rather than requiring intervention by the terminal.\))7 2460 2 720 2952 t 10 CW f (cpu)3436 2952 w 10 R f ( perfor-)1 313(command affects only the)3 1073 2 3654 2952 t (mance of subsequent commands; it has nothing to do with the services available or how they are accessed.)17 4248 1 720 3072 t ( finds services,)2 604(Although there is a large catalogue of services available in Plan 9, including the service that)15 3716 2 720 3228 t (a few suffice to illustrate the usage and possibilities of this design.)11 2653 1 720 3348 t 10 B f (The Process File System)3 1029 1 720 3588 t 10 R f ( examination and debugging of)4 1291(An example of a local service is the `process file system', which permits)12 3029 2 720 3744 t ( system [6] but its)4 721( is related to Killian's process file)6 1360( It)1 113(executing processes through a file-oriented interface.)5 2126 4 720 3864 t (differences exemplify the way that Plan 9 services are constructed.)9 2665 1 720 3984 t ( directory)1 402(The root of the process file system is conventionally attached to the)11 2875 2 720 4140 t 10 CW f (/proc)4039 4140 w 10 R f ( is)1 109(. \(Convention)1 592 2 4339 4140 t (important in Plan 9; although the name space may be assembled willy-nilly, many programs have conven-)15 4320 1 720 4260 t ( doesn't matter which server the)5 1303( It)1 115( certain form.)2 548(tional names built in that require the name space to have a)11 2354 4 720 4380 t (program)720 4500 w 10 CW f (/bin/rc)1090 4500 w 10 R f ( name to be accessible by)5 1047(\(the command interpreter\) comes from but it must have that)9 2451 2 1542 4500 t ( attachment, the directory)3 1041( After)1 267(the commands that call on it.\))5 1223 3 720 4620 t 10 CW f (/proc)3283 4620 w 10 R f (itself contains one subdirectory for)4 1424 1 3616 4620 t ( in the system, with name equal to the numerical unique identifier of that process.)14 3551(each local process)2 769 2 720 4740 t ( also be made visible; this will be discussed below.\))9 2206(\(Processes running on the remote CPU server may)7 2114 2 720 4860 t ( example,)1 423( For)1 224( contains a set of files that implement the view of that process.)12 2914(Each subdirectory)1 759 4 720 4980 t 10 CW f (/proc/77/mem)720 5100 w 10 R f ( file is closely)3 609( That)1 250( of the virtual memory of process number 77.)8 1947(contains an image)2 753 4 1481 5100 t ( unlike Killian's, Plan 9's)4 1045(related to the files in Killian's process file system, but)9 2213 2 720 5220 t 10 CW f (/proc)4008 5220 w 10 R f (implements other)1 702 1 4338 5220 t ( is a list of)4 421( Here)1 244( applied to a single file.)5 943(functions through other files rather than through peculiar operations)8 2712 4 720 5340 t (the files provided for each process.)5 1396 1 720 5460 t 10 CW f (mem)720 5616 w 10 R f ( in the file correspond to virtual addresses in the)9 2003( Offsets)1 347(The virtual memory of the process image.)6 1720 3 970 5616 t (process.)970 5736 w 10 CW f (ctl)720 5892 w 10 R f ( sent \(by a)3 440( Messages)1 447(Control behaviour of the processes.)4 1453 3 970 5892 t 10 CW f (write)3344 5892 w 10 R f ( this file cause the)4 761(system call\) to)2 601 2 3678 5892 t (process to stop, terminate, resume execution, etc.)6 1963 1 970 6012 t 10 CW f (text)720 6168 w 10 R f ( by a debugger to examine the)6 1281( is typically used)3 711( This)1 240(The file from which the program originated.)6 1838 4 970 6168 t ( the target process, but is in all respects except name the original file; thus one may)16 3432(symbol table of)2 638 2 970 6288 t (type `)1 230 1 970 6408 t 10 CW f (/proc/77/text)1200 6408 w 10 R f (' to the command interpreter to instantiate the program afresh.)9 2484 1 1980 6408 t 10 CW f (note)720 6564 w 10 R f (Any process with suitable permissions may write the)7 2119 1 970 6564 t 10 CW f (note)3116 6564 w 10 R f (file of another process to send it an asyn-)8 1657 1 3383 6564 t ( system also uses this file to send \(poisoned\))8 1801( The)1 208(chronous message for interprocess communication.)4 2061 3 970 6684 t (messages when a process misbehaves, for example divides by zero.)9 2691 1 970 6804 t 10 CW f (status)720 6960 w 10 R f (A fixed-format)1 605 1 1134 6960 t 9 R f (ASCII)1766 6960 w 10 R f ( includes the name of the file)6 1189( It)1 116( status of the process.)4 877(representation of the)2 828 4 2030 6960 t (the process was executed from, the CPU time it has consumed, its current state, etc.)14 3339 1 970 7080 t (The)720 7236 w 10 CW f (status)910 7236 w 10 R f ( how heterogeneity and portability can be handled by a file server model for)13 3178(file illustrates)1 557 2 1305 7236 t cleartomark showpage saveobj restore %%EndPage: 5 5 %%Page: 6 6 /saveobj save def mark 6 pagesetup 10 R f (- 6 -)2 166 1 2797 480 t ( command)1 423( The)1 209(system functions.)1 704 3 720 840 t 10 CW f (cat /proc/*/status)1 1049 1 2085 840 t 10 R f ( but somewhat clumsily\) the)4 1145(presents \(readably)1 732 2 3163 840 t (status of all processes in the system; in fact the process status command)12 2989 1 720 960 t 10 CW f (ps)3744 960 w 10 R f (is just a reformatting of the)5 1140 1 3900 960 t 9 R f (ASCII)720 1080 w 10 R f ( source for)2 428( The)1 206(text so gathered.)2 659 3 981 1080 t 10 CW f (ps)2300 1080 w 10 R f ( Even)1 255( is completely portable across machines.)5 1614(is a page long and)4 725 3 2446 1080 t (when)720 1200 w 10 CW f (/proc)976 1200 w 10 R f ( several heterogeneous machines, the same implementation)6 2461(contains files for processes on)4 1263 2 1316 1200 t (works.)720 1320 w (Whether the functions provided by the)5 1574 1 720 1476 t 10 CW f (ctl)2326 1476 w 10 R f ( files\320)1 305(file should instead be accessed through further)6 1899 2 2538 1476 t 10 CW f (stop)4775 1476 w 10 R f (,)5015 1476 w 10 CW f (terminate)720 1596 w 10 R f ( chose to fold all the true control operations into the)10 2130( We)1 194( of taste.)2 353(, etc.\320is a matter)3 728 4 1260 1596 t 10 CW f (ctl)4696 1596 w 10 R f (file)4907 1596 w (and provide the more data-intensive functions through separate files.)8 2742 1 720 1716 t (It is worth noting that the services)6 1360 1 720 1872 t 10 CW f (/proc)2105 1872 w 10 R f ( notion of a process as)5 895(provides, although varied, do not strain the)6 1715 2 2430 1872 t ( example, it is not possible to terminate a process by attempting to remove its process file nor is it)19 3903( For)1 189(a file.)1 228 3 720 1992 t ( but)1 155( files give an active view of the processes,)8 1690( The)1 206(possible to start a new process by creating a process file.)10 2269 4 720 2112 t ( distinction is important when designing services as file systems.)9 2588( This)1 228(they do not literally represent them.)5 1426 3 720 2232 t 10 B f (The Window System)2 884 1 720 2472 t 10 R f ( window)1 351( The)1 209( may provide file service.)4 1033(In Plan 9, user programs, as well as specialised stand-alone servers,)10 2727 4 720 2628 t (system is an example of such a program; one of Plan 9's most unusual aspects is that the window system is)20 4320 1 720 2748 t (implemented as a user-level file server.)5 1568 1 720 2868 t ( system is a server that presents a file)8 1582(The window)1 513 2 720 3024 t 10 CW f (/dev/cons)2852 3024 w 10 R f (, similar to the)3 614 1 3392 3024 t 10 CW f (/dev/tty)4043 3024 w 10 R f (or)4560 3024 w 10 CW f (CON:)4680 3024 w 10 R f (of)4957 3024 w ( it controls all I/O activities on that)7 1432( Because)1 388(other systems, to the client processes running in its windows.)9 2500 3 720 3144 t ( group of processes sees a private)6 1377(file, it can arrange that each window's)6 1562 2 720 3264 t 10 CW f (/dev/cons)3691 3264 w 10 R f ( a new win-)3 489(. When)1 320 2 4231 3264 t ( a new)2 264(dow is made, the window system allocates)6 1719 2 720 3384 t 10 CW f (/dev/cons)2730 3384 w 10 R f (file, puts it in a new name space \(otherwise)8 1743 1 3297 3384 t ( process connects)2 708( That)1 238( process in that window.)4 994(the same as its own\) for the new client, and begins a client)12 2380 4 720 3504 t (the standard input and output channels to)6 1673 1 720 3624 t 10 CW f (/dev/cons)2423 3624 w 10 R f ( normal file opening system call and exe-)7 1678(using the)1 369 2 2993 3624 t ( the command interpreter prints a prompt, it will therefore be written to)12 2867( When)1 290( command interpreter.)2 888(cutes a)1 275 4 720 3744 t 10 CW f (/dev/cons)720 3864 w 10 R f (and appear in the appropriate window.)5 1535 1 1285 3864 t ( operating systems provide a file)5 1316( Most)1 259( to compare this structure to other operating systems.)8 2141(It is instructive)2 604 4 720 4020 t (like)720 4140 w 10 CW f (/dev/cons)900 4140 w 10 R f ( opens the special)3 719( process that)2 509( A)1 127(that is an alias for the terminal connected to a process.)10 2215 4 1470 4140 t ( the alias is)3 468( Since)1 279( knowing the terminal's precise name.)5 1560(file accesses the terminal it is running on without)8 2013 4 720 4260 t ( window system to)3 759(usually provided by special arrangement in the operating system, it can be difficult for a)14 3561 2 720 4380 t ( issue is handled easily in)5 1034( This)1 231(guarantee that its client processes can access their window through this file.)11 3055 3 720 4500 t ( and in particular)3 712( set of processes in a window shares a name space)10 2120( A)1 134(Plan 9 by inverting the problem.)5 1354 4 720 4620 t 10 CW f (/dev/cons)720 4740 w 10 R f (, so by multiplexing)3 819 1 1260 4740 t 10 CW f (/dev/cons)2110 4740 w 10 R f (and forcing all textual input and output to go through that)10 2359 1 2681 4740 t (file the window system can simulate the expected properties of the file.)11 2845 1 720 4860 t ( files, all conventionally attached to the directory of I/O devices,)10 2623(The window system serves several)4 1402 2 720 5016 t 10 CW f (/dev)4775 5016 w 10 R f (.)5015 5016 w (These include)1 572 1 720 5136 t 10 CW f (cons)1332 5136 w 10 R f (, the port for)3 544 1 1572 5136 t 9 R f (ASCII)2154 5136 w 10 R f (I/O;)2429 5136 w 10 CW f (mouse)2630 5136 w 10 R f ( mouse; and)2 511(, a file that reports the position of the)8 1599 2 2930 5136 t 10 CW f (bitblt)720 5256 w 10 R f ( as the different)3 662( Much)1 296( be written messages to execute bitmap graphics primitives.)8 2487(, which may)2 515 4 1080 5256 t 10 CW f (cons)720 5376 w 10 R f ( output in separate windows, the)5 1358(files keep separate clients')3 1097 2 999 5376 t 10 CW f (mouse)3492 5376 w 10 R f (and)3830 5376 w 10 CW f (bitblt)4012 5376 w 10 R f (files are imple-)2 630 1 4410 5376 t ( a)1 78( example, when)2 645( For)1 197(mented by the window system in a way that keeps the various clients independent.)13 3400 4 720 5496 t (client process in a window writes a message \(to the)9 2112 1 720 5616 t 10 CW f (bitblt)2864 5616 w 10 R f (file\) to clear the screen, the window system)7 1784 1 3256 5616 t ( as a bit-)3 359( graphics sent to partially or totally obscured windows is maintained)10 2781( All)1 183(clears only that window.)3 997 4 720 5736 t (map layer, in memory private to the window system. [8] The clients are oblivious of one another.)16 3886 1 720 5856 t ( implemented entirely at user level with file and name space operations, it can)13 3189(Since the window system is)4 1131 2 720 6012 t ( window system functions by opening the files)7 2038( The)1 230( itself.)1 275(be run recursively: it may be a client of)8 1777 4 720 6132 t 10 CW f (/dev/cons)720 6252 w 10 R f (,)1260 6252 w 10 CW f (/dev/bitblt)1316 6252 w 10 R f ( by the operating system, and reproduces\320multiplexes\320)6 2342(, etc., as provided)3 722 2 1976 6252 t ( the window system is run in a)7 1289( if a fresh instantiation of)5 1062( Therefore,)1 478(their functionality among its clients.)4 1491 4 720 6372 t (window, it will behave normally, multiplexing)5 1899 1 720 6492 t 10 I f (its)2651 6492 w 10 CW f (/dev/cons)2778 6492 w 10 R f (and other files for)3 736 1 3351 6492 t 10 I f (its)4120 6492 w 10 R f ( recur-)1 270(clients. This)1 522 2 4248 6492 t ( be used profitably to debug a new window system in a window or to multiplex the connection to a)19 3987(sion can)1 333 2 720 6612 t ( operations are exe-)3 789(CPU server. [9] Since the window system has no bitmap graphics code\320all its graphics)13 3531 2 720 6732 t ( be run on any machine that has)7 1344(cuted by writing standard messages to a file\320 the window system may)11 2976 2 720 6852 t 10 CW f (/dev/bitblt)720 6972 w 10 R f (in its name space, including the CPU server.)7 1773 1 1405 6972 t cleartomark showpage saveobj restore %%EndPage: 6 6 %%Page: 7 7 /saveobj save def mark 7 pagesetup 10 R f (- 7 -)2 166 1 2797 480 t 10 CW f (CPU)720 840 w 10 B f (Command)925 840 w 10 R f (The)720 996 w 10 CW f (cpu)906 996 w 10 R f ( and)1 176(command connects from a terminal to a CPU server using a full-duplex network connection)13 3747 2 1117 996 t ( terminal and CPU processes exchange information about the user and name)11 3058( The)1 206( process there.)2 575(runs a setup)2 481 4 720 1116 t ( terminal's)1 446(space, and then the terminal-resident process becomes a user-level file server that makes the)13 3874 2 720 1236 t ( CPU server builds the name space by)7 1524( the time of writing, the)5 954( \(At)1 185(private files visible from the CPU server.)6 1657 4 720 1356 t ( being designed will export the name space using a special)10 2585(re-executing the user's profile; a version)5 1735 2 720 1476 t ( CPU process makes)3 824( The)1 206(terminal-resident server that can be queried to recover the terminal's name space.\))11 3290 3 720 1596 t ( such as making the file)5 966(a few adjustments to the name space,)6 1501 2 720 1716 t 10 CW f (/dev/cons)3216 1716 w 10 R f (on the CPU server)3 747 1 3785 1716 t 10 I f (be the same)2 479 1 4561 1716 t (file as on the terminal,)4 907 1 720 1836 t 10 R f (perhaps making both the local and remote process file system visible in)11 2866 1 1653 1836 t 10 CW f (/proc)4545 1836 w 10 R f (, and)1 195 1 4845 1836 t ( then reads commands from, and prints results on,)8 2024( command interpreter)2 865( The)1 208(begins a command interpreter.)3 1223 4 720 1956 t (its file)1 273 1 720 2076 t 10 CW f (/dev/cons)1038 2076 w 10 R f ( the terminal process to the appropriate window \(for)8 2231(, which is connected through)4 1231 2 1578 2076 t ( CPU)1 233( programs such as bitmap editors also may be executed on the)11 2603( Graphics)1 422(example\) on the terminal.)3 1062 4 720 2196 t ( on I/O to files `served' by the terminal for the CPU server.)12 2485(server since their definition is entirely based)6 1835 2 720 2316 t (The connection to the CPU server and back again is utterly transparent.)11 2850 1 720 2436 t ( CPU server and the terminal may be, and in the)10 2092(This connection raises the issue of heterogeneity: the)7 2228 2 720 2592 t ( are two distinct problems: binary data and execut-)8 2064( There)1 287(current system are, different types of processors.)6 1969 3 720 2712 t ( two ways: by making it not binary or by strictly defining the format)13 2768( data can be handled)4 822( Binary)1 324(able code.)1 406 4 720 2832 t ( by the)2 278( former is exemplified)3 902( The)1 209(of the data at the byte level.)6 1130 4 720 2952 t 10 CW f (status)3267 2952 w 10 R f (file in)1 239 1 3655 2952 t 10 CW f (/proc)3922 2952 w 10 R f (, which enables pro-)3 818 1 4222 2952 t ( example is the file,)4 809( Another)1 383( of remote processes.)3 860(grams to examine, transparently and portably, the status)7 2268 4 720 3072 t ( system,)1 333(provided by the terminal's operating)4 1483 2 720 3192 t 10 CW f (/dev/time)2566 3192 w 10 R f ( is a fixed-format)3 705(. This)1 258 2 3106 3192 t 9 R f (ASCII)4097 3192 w 10 R f (representation of)1 678 1 4362 3192 t ( since the epoch that serves as a time base for)10 2022(the number of seconds)3 961 2 720 3312 t 10 CW f (make)3749 3312 w 10 R f (and other programs. [3])3 1005 1 4035 3312 t ( base from the terminal, thereby obviating problems of distri-)9 2537(Processes on the CPU server get their time)7 1783 2 720 3432 t (buted clocks.)1 527 1 720 3552 t (For files that are I/O intensive, such as)7 1556 1 720 3708 t 10 CW f (/dev/bitblt)2304 3708 w 10 R f (, the overhead of an)4 801 1 2964 3708 t 9 R f (ASCII)3791 3708 w 10 R f (interface can be prohibi-)3 986 1 4054 3708 t ( binary format in which the byte order is predefined, and pro-)11 2516( Plan 9, such files therefore accept a)7 1489(tive. In)1 315 3 720 3828 t ( Thus)1 281(grams that access the files use portable libraries that make no assumptions about the order.)14 4039 2 720 3948 t 10 CW f (/dev/bitblt)720 4068 w 10 R f ( principle is used throughout Plan)5 1372( This)1 233(is usable from any machine, not just the terminal.)8 2024 3 1411 4068 t ( that)1 176( instance, the format of the compilers' object files and libraries is similarly defined, which means)15 3880(9. For)1 264 3 720 4188 t (object files are independent of the type of the CPU that compiled them.)12 2849 1 720 4308 t ( thornier problem, and Plan 9 solves it adequately if not)10 2253(Having different formats of executable binaries is a)7 2067 2 720 4464 t ( named appropriately:)2 884( of executable binaries are)4 1066(gracefully. Directories)1 927 3 720 4584 t 10 CW f (/mips/bin)3626 4584 w 10 R f (,)4166 4584 w 10 CW f (/68020/bin)4220 4584 w 10 R f (, etc.,)1 220 1 4820 4584 t ( program, in par-)3 685( A)1 125( server, what CPU type it is running on.)8 1612(and a program may ascertain, through a special)7 1898 4 720 4704 t (ticular the)1 403 1 720 4824 t 10 CW f (cpu)1149 4824 w 10 R f (command, may therefore attach the appropriate directory to the conventional name)10 3306 1 1355 4824 t 10 CW f (/bin)4686 4824 w 10 R f (so)4951 4824 w ( say,)1 192(that when a program runs,)4 1077 2 720 4944 t 10 CW f (/bin/rc)2023 4944 w 10 R f ( this is a fairly clumsy)5 931( Although)1 437(, the appropriate file is found.)5 1229 3 2443 4944 t ( formats and naming)3 836( various object files and compilers use distinct)7 1886( The)1 210(solution, it works well in practice.)5 1388 4 720 5064 t (conventions, which makes cross-compilation painless, at least once automated by)9 3335 1 720 5184 t 10 CW f (make)4089 5184 w 10 R f (or a similar pro-)3 676 1 4364 5184 t (gram. [3])1 371 1 720 5304 t 10 B f (Security)720 5544 w 10 R f ( Breaking)1 421( directly, but some of its aspects are relevant to the topic.)11 2332(Plan 9 does not address security issues)6 1567 3 720 5700 t ( the file server is a)5 799( As)1 174( server enhances the possibilities for security.)6 1894(the file server away from the CPU)6 1453 4 720 5820 t ( and therefore can)3 749(separate machine that can only be accessed over the network by the standard protocol,)13 3571 2 720 5940 t ( security issues are resolved by the simple observation that)9 2398( Many)1 289( programs.)1 433(only serve files, it cannot run)5 1200 4 720 6060 t ( server and file server communicate using a rigorously controlled interface through which it is)14 3964(the CPU)1 356 2 720 6180 t (impossible to gain special privileges.)4 1480 1 720 6300 t ( but these are available)4 970(Of course, certain administrative functions must be performed on the file server,)11 3350 2 720 6456 t ( interface accessible only on the console and hence subject to physical)11 2956(only through a special command)4 1364 2 720 6576 t ( example, it permits making backups and)6 1670( For)1 194( that interface is for administration only.)6 1642(security. Moreover,)1 814 4 720 6696 t ( does not permit reading files or changing their permissions.)9 2403(creating and removing files, but it)5 1359 2 720 6816 t 10 I f (The contents)1 508 1 4532 6816 t ( other user,)2 476(of a file with read permission for only its owner will not be divulged by the file server to any)19 3844 2 720 6936 t (even the administrator.)2 930 1 720 7056 t 10 R f ( the moment, we use a simple)6 1221( At)1 156( how a user proves who he or she is.)9 1501(Of course, this begs the question of)6 1442 4 720 7212 t cleartomark showpage saveobj restore %%EndPage: 7 7 %%Page: 8 8 /saveobj save def mark 8 pagesetup 10 R f (- 8 -)2 166 1 2797 480 t ( the Datakit network itself, so that when a user logs in from a terminal, the net-)16 3247(authentication manager on)2 1073 2 720 840 t ( order to remove the)4 853( In)1 144(work assures the authenticity of the maker of calls from the associated terminal.)12 3323 3 720 960 t (need for trust in our local network, we plan to replace the authentication manager by a Kerberos-like sys-)17 4320 1 720 1080 t (tem. [10])1 366 1 720 1200 t 10 B f (Discussion)720 1440 w 10 R f ( development was abandoned)3 1199(A fairly complete version of Plan 9 was built in 1987 and 1988, and then its)15 3121 2 720 1596 t ( May of 1989 work was begun on a completely new sys-)11 2271( In)1 135(for a number of aesthetic and technical reasons.)7 1914 3 720 1716 t ( By)1 170( the SGI MIPS-based multiprocessors, using the first version as a bootstrap environment.)12 3594(tem, based on)2 556 3 720 1836 t ( SGI file)2 356( The)1 211( file server.)2 463(October, the CPU server could compile all its own software, using the first-draft)12 3290 4 720 1956 t ( on line in February 1990; the true operating system kernel at its core was taken from the CPU)18 3839(server came)1 481 2 720 2076 t ( CPU)1 227( The)1 212( the file server is otherwise a completely separate program \(and computer\).)11 3069(server's system, but)2 812 4 720 2196 t ( portabil-)1 371( One)1 218( hours elapsed time on November 12-13, 1989.)7 1892(server's system was ported to the 68020 in 13)8 1839 4 720 2316 t ( has just)2 344( the time of writing \(April 1990\), work)7 1617( At)1 159(ity bug was found; the fix affected two lines of code.)10 2200 4 720 2436 t ( it)1 82( \(Until)1 290( before this paper appears \(July 1990\).)6 1538(begun on the new window system; it should be running well)10 2410 4 720 2556 t (is complete, we will continue to use the terminal software from the 1987-1988 implementation.\))13 3843 1 720 2676 t ( use Plan 9 almost exclusively; only the lack of an electronic mail facility, which is being)16 3710(All the authors)2 610 2 720 2832 t ( up and running and comfortable to use,)7 1648( 9 is)2 185( Plan)1 237(addressed, prevents us from moving over permanently.)6 2250 4 720 2952 t (although it is certainly too early to pass final judgement.)9 2254 1 720 3072 t (The multiprocessor operating system for the MIPS-based CPU server has 454 lines of assembly language,)14 4320 1 720 3228 t ( kernel proper contains 3647 lines of)6 1470( The)1 206( interrupts.)1 434(more than half of which saves and restores registers on)9 2210 4 720 3348 t ( virtual memory support, trap handling,)5 1599(C plus 774 lines of header files, which includes all process control,)11 2721 2 720 3468 t ( of the functionality of the)5 1046( Much)1 283( to interface to the 29 system calls.)7 1387( are 1020 lines of code)5 911( There)1 283(and so on.)2 410 6 720 3588 t (system is contained in the `drivers' that implement built-in servers such as)11 3038 1 720 3708 t 10 CW f (/proc)3789 3708 w 10 R f ( network)1 359(; these and the)3 592 2 4089 3708 t ( of this code is identical on the 68020 version; for instance,)11 2408( Most)1 261(software add another 9511 lines of code.)6 1651 3 720 3828 t (all the code to implement processes, including the process switcher and the)11 3056 1 720 3948 t 10 CW f (fork)3806 3948 w 10 R f (and)4077 3948 w 10 CW f (exec)4252 3948 w 10 R f (system calls,)1 517 1 4523 3948 t ( are encapsulated in two five-line)5 1357(is identical in the two versions; the peculiar properties of each processor)11 2963 2 720 4068 t ( for the respective MMU's is quite different, although the page fault handler)12 3089( code)1 216( \(The)1 241(assembler routines.)1 774 4 720 4188 t ( compilers for the two machines are)6 1490( is only fair to admit, however, that the)8 1642( It)1 122(is substantially the same.\))3 1066 4 720 4308 t (closely related, and the operating system may depend on properties of the compiler in unknown ways.)15 4074 1 720 4428 t ( machine connected to the MIPS file server, the 45 source)10 2409( the four-processor)2 771( On)1 181(The system is efficient.)3 959 4 720 4584 t ( loader)1 276( \(The)1 240( system compile in about ten seconds of real time and load in another ten.)14 2966(files of the operating)3 838 4 720 4704 t ( due to the register-saving convention of the compiler, the null system call)12 3134( Partly)1 303(runs single-threaded.\))1 883 3 720 4824 t (takes only 7 microseconds on the MIPS, about half of which is attributed to relatively slow memory on the)18 4320 1 720 4944 t ( process fork takes 700 microseconds irrespective of the process's size.)10 2840(multiprocessor. A)1 741 2 720 5064 t ( are uneasy about deciding where on the)7 1674( We)1 198( processes explicitly.)2 855(Plan 9 does not implement lightweight)5 1593 4 720 5220 t ( of a process)3 525(continuum from fine-grained hardware-supported parallelism to the usual timesharing notion)9 3795 2 720 5340 t ( of threads and lightweight)4 1183( definitions)1 480( Existing)1 411(we should provide support for user multiprocessing.)6 2246 4 720 5460 t ( of)1 108(processes seem arbitrary and raise more questions than they resolve. [11] We prefer to have a single kind)17 4212 2 720 5580 t ( local)1 240( the ability to share)4 846( With)1 270(process and to permit multiple processes to share their address space.)10 2964 4 720 5700 t ( efficient process creation and switching, both of which are in Plan 9, we can match the)16 3599(memory and with)2 721 2 720 5820 t (functionality of threads without taking a stand on how users should multiprocess.)11 3248 1 720 5940 t ( Plan 9 makes it easy to instantiate)7 1478( Although)1 442( 9.)1 114(Process migration is also deliberately absent from Plan)7 2286 4 720 6096 t ( compiler,)1 408( The)1 208( they can most effectively run, it does nothing explicit to make this happen.)13 3050(processes where)1 654 4 720 6216 t ( allocation of)2 543( prefer to do coarse-grained)4 1129( We)1 195(for instance, does not arrange that it run on the CPU server.)11 2453 4 720 6336 t (computing resources simply by running each new command interpreter on a lightly-loaded CPU server.)13 4320 1 720 6456 t (Reasonable management of computing resources renders process migration unnecessary.)8 3550 1 720 6576 t ( large single-threaded chess database problem runs)6 2046( A)1 125( other efficiencies.)2 745(Other aspects of the system lead to)6 1404 4 720 6732 t ( Plan 9 as on the same machine running commercial software because the remote)13 3253(about four times as fast on)5 1067 2 720 6852 t ( general, most file I/O is done by direct DMA from the file server's)13 2767( In)1 139(cache on the file server is so large.)7 1414 3 720 6972 t (cache; the file server rarely needs to read from disk at all.)11 2293 1 720 7092 t ( individual pieces that make it up are relatively ordinary; its unusual)11 2733( The)1 206(Much of Plan 9 is straightforward.)5 1381 3 720 7248 t cleartomark showpage saveobj restore %%EndPage: 8 8 %%Page: 9 9 /saveobj save def mark 9 pagesetup 10 R f (- 9 -)2 166 1 2797 480 t ( in point, the recent interest in using X terminals)9 1986( a case)2 279( As)1 168(aspects are in how the pieces are put together.)8 1887 4 720 840 t ( be similar in spirit to how Plan 9 terminals are used, but that)13 2503(connected to timeshared hosts might seem to)6 1817 2 720 960 t ( to a typical X terminal, serves a)7 1334( Gnot, although similar in hardware power)6 1742( The)1 212(is a mistaken impression.)3 1032 4 720 1080 t ( fully programmable computer running a)5 1658( is a)2 171( It)1 116(much higher-level function in the computing environment.)6 2375 4 720 1200 t ( offloads from)2 571( It)1 111( entire Plan 9 system.)4 858(virtual memory operating system that maintains its user's view of the)10 2780 4 720 1320 t ( is not)2 253( It)1 115( perform.)1 375(the CPU server all the bookkeeping and I/O intensive chores that a window system must)14 3577 4 720 1440 t ( would rarely bother to compile on the Gnot, although one)10 2478(really a workstation either; for example one)6 1842 2 720 1560 t ( Plan 9, the Gnot's strength derives from)7 1696( the other pieces of)4 795( Like)1 242(would certainly run a text editor there.)6 1587 4 720 1680 t (careful specialisation in concert with other specialised components.)7 2695 1 720 1800 t 10 B f (Acknowledgements)720 2040 w 10 R f ( would like especially to thank Bart Locanthi, who built)9 2313( We)1 196(Many people helped build the system.)5 1561 3 970 2196 t ( us to program it; Tom Duff, who wrote the command interpreter)11 2618(the Gnot and encouraged)3 1009 2 720 2316 t 10 CW f (rc)4374 2316 w 10 R f (, Tom Killian)2 546 1 4494 2316 t ( cheerfully endured early versions of the software; and Dennis Ritchie, who fre-)12 3333(and Ted Kowalski, who)3 987 2 720 2436 t (quently provided us with much-needed wisdom.)5 1926 1 720 2556 t 10 B f (References)720 2796 w 10 R f ( G. Fraser, ``Datakit \261 A Modular Network for Synchronous and Asynchronous Traffic,'')12 3716(1. A.)1 347 2 720 3024 t 10 I f (Proc.)4821 3024 w (Int. Conf. on Commun.)3 917 1 970 3144 t 10 R f (, Boston, MA \(June 1980\).)4 1069 1 1887 3144 t ( M Metcalfe and D. R. Boggs,)6 1279(2. R.)1 342 2 720 3300 t 10 I f (The Ethernet Local Network: Three Reports,)5 1848 1 2378 3300 t 10 R f (XEROX Palo Alto)2 776 1 4264 3300 t (Research Center \(February 1980\).)3 1357 1 970 3420 t ( W. Kernighan and Rob Pike,)5 1189(3. Brian)1 472 2 720 3576 t 10 I f (The UNIX Programming Environment,)3 1566 1 2408 3576 t 10 R f (Prentice-Hall, Englewood)1 1039 1 4001 3576 t (Cliffs, NJ \(1984\).)2 705 1 970 3696 t ( Duff, ``Rc \261 A Shell for Plan 9 and UNIX,'')10 1816(4. T.)1 336 2 720 3852 t 10 I f ( Edition)1 323(UNIX Programmer's Manual, Tenth)3 1466 2 2899 3852 t 10 R f (, Murray)1 352 1 4688 3852 t (Hill, NJ, AT&T Bell Laboratories \(1990\).)5 1676 1 970 3972 t ( M. Ritchie and K. Thompson, ``The UNIX Time-Sharing System,'')9 2787(5. D.)1 347 2 720 4128 t 10 I f ( Comp. Mach.)2 580(Comm. Assoc.)1 575 2 3885 4128 t 10 B f (17)970 4248 w 10 R f (\(7\), pp. 365-375 \(July 1974\).)4 1157 1 1070 4248 t ( Killian, ``Processes as Files,'')4 1258( J.)1 96(6. T.)1 336 3 720 4404 t 10 I f (USENIX Summer Conference Proceedings)3 1729 1 2443 4404 t 10 R f (, Salt Lake City, UT,)4 868 1 4172 4404 t (USA \(June 1984\).)2 724 1 970 4524 t ( Quinlan, ``A Cached WORM File System,'')6 1798(7. S.)1 331 2 720 4680 t 10 I f (Software \261 Practice and Experience)4 1442 1 2874 4680 t 10 R f (, p. To appear.)3 576 1 4316 4680 t ( Pike, ``Graphics in Overlapping Bitmap Layers,'')6 2013(8. R.)1 342 2 720 4836 t 10 I f (Transactions on Graphics)2 1045 1 3100 4836 t 10 B f (2)4170 4836 w 10 R f (\(2\), pp. 135-160.)2 674 1 4220 4836 t ( Pike, ``A Concurrent Window System,'')5 1645(9. R.)1 342 2 720 4992 t 10 I f (Computing Systems)1 786 1 2732 4992 t 10 B f (2)3543 4992 w 10 R f (\(2\), pp. 133-153.)2 674 1 3593 4992 t ( P. Miller, B. C. Neumann, J. I. Schiller, and J. H. Saltzer,)12 2342(10. S.)1 331 2 720 5148 t 10 I f (Kerberos Authentication and Authoriza-)3 1620 1 3420 5148 t (tion System,)1 483 1 970 5268 t 10 R f (MIT \(1987\).)1 499 1 1478 5268 t ( Baron, William Bolosky, David Golub, Richard Rashid, Avadis Tevanian, and)10 3207( J. Accetta, Robert)3 749(11. M.)1 364 3 720 5424 t (Michael Young, ``Mach: A New Kernel Foundation for UNIX Development,'')9 3205 1 970 5544 t 10 I f (USENIX Conference)1 834 1 4206 5544 t (Proceedings)970 5664 w 10 R f (, Atlanta, GA \(July, 1986\).)4 1071 1 1469 5664 t cleartomark showpage saveobj restore %%EndPage: 9 9 %%Trailer done %%Pages: 9 %%DocumentFonts: Courier Times-Bold Times-Italic Times-Roman Symbol