%!PS-Adobe-2.0 %%Creator: dvips, version 5.396 (C) 1986-90 Radical Eye Software %%Title: paper.dvi %%Pages: 7 1 %%BoundingBox: 0 0 612 792 %%DocumentFonts: Times-Roman Times-Italic Times-Bold Courier %%EndComments %%BeginProcSet: tex.pro /TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{ isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale Resolution VResolution vsize neg mul TR}B /@letter{/vsize 10 N}B /@landscape{ /isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@legal{/vsize 13 N} B /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[ 1 0 0 -1 0 0]N /FBB[0 0 0 0]N /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /E{pop nn dup definefont setfont}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ctr 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{ ]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto}B /eop{ clear SI restore showpage userdict /eop-hook known{eop-hook}if}B /@start{ userdict /start-hook known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for} B /p /show load N /RMat[1 0 0 -1 0 0]N /BDot 8 string N /v{/ruley X /rulex X V }B /V{gsave TR -.1 -.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}B /a{moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{ 1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w }B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /w{0 rmoveto}B /x{0 S rmoveto} B /y{3 2 roll p a}B /bos{/SS save N}B /eos{clear SS restore}B end %%EndProcSet %%BeginProcSet: texps.pro TeXDict begin /rf{655360 div mul Resolution mul 7227 div /PixPerEm X findfont dup length 1 add dict /nn X{1 index /FID ne{nn 3 1 roll put}{pop pop}ifelse} forall 256 dict begin nn /Encoding get 0 1 255{2 copy get 3 index 2 index get 1000 mul PixPerEm div N pop}for pop pop nn /Metrics currentdict put end /fontname X /nn dup nn definefont[PixPerEm 0 0 PixPerEm neg 0 0]makefont N fontname{/foo setfont}2 array copy cvx N fontname load 0 nn put}B /ObliqueSlant{dup sin S cos div neg}B /SlantFont{/foo X[1 0 foo 1 0 0] TransFont}B /ExtendFont{/foo X 3 2 roll[S{foo div}forall]3 1 roll[foo 0 0 1 0 0]TransFont}B /TransFont{S findfont S makefont dup length dict /nn X{1 index /FID ne{nn 3 1 roll put}{pop pop}ifelse}forall dup nn definefont pop}B end %%EndProcSet TeXDict begin 1000 300 300 @start /Fa [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 11 14 17 17 28 26 11 11 11 17 22 8 11 8 9 17 17 17 17 17 17 17 17 17 17 11 11 22 22 22 17 31 20 20 22 24 20 20 24 24 11 15 22 18 28 22 24 20 24 20 17 18 24 20 28 20 18 18 13 9 13 14 17 11 17 17 15 17 15 9 17 17 9 9 15 9 24 17 17 17 17 13 13 9 17 15 22 15 15 13 13 9 13 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 17 17 6 17 17 17 17 7 18 17 11 11 17 17 0 17 17 17 8 0 17 12 11 18 18 17 30 33 0 17 0 11 11 11 11 11 11 11 11 0 11 11 0 11 11 11 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 0 9 0 0 0 0 18 24 31 10 0 0 0 0 0 22 0 0 0 9 0 0 9 17 22 17 0 0 0 0 ] /Times-Italic 1000 524288 rf /Fb [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 25 25 25 25 25 25 25 25 25 25 25 25 0 0 0 25 25 25 25 0 25 25 25 25 25 25 25 0 0 25 0 25 25 25 25 25 25 25 25 0 25 25 0 25 25 25 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 25 25 0 25 0 0 0 0 0 0 0 0 0 25 0 0 25 25 0 25 0 0 0 0 ] /Courier 1000 655360 rf /Fc 1 16 df<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7F FE7FFE3FFC1FF80FF003C010107E9115>15 D E /Fd [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 14 23 21 21 42 35 14 14 14 21 24 10 14 10 12 21 21 21 21 21 21 21 21 21 21 14 14 24 24 24 21 39 30 28 30 30 28 25 32 32 16 21 32 28 39 30 32 25 32 30 23 28 30 30 42 30 30 28 14 12 14 24 21 14 21 23 18 23 18 14 21 23 12 14 23 12 35 23 21 23 23 18 16 14 23 21 30 21 21 18 16 9 16 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 21 21 7 21 21 21 21 12 21 21 14 14 23 23 0 21 21 21 10 0 22 15 14 21 21 21 42 42 0 21 0 14 14 14 14 14 14 14 14 0 14 14 0 14 14 14 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42 0 12 0 0 0 0 28 32 42 14 0 0 0 0 0 30 0 0 0 12 0 0 12 21 30 23 0 0 0 0 ] /Times-Bold 1000 655360 rf /Fe [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 14 17 21 21 35 32 14 14 14 21 28 10 14 10 12 21 21 21 21 21 21 21 21 21 21 14 14 28 28 28 21 38 25 25 28 30 25 25 30 30 14 18 28 23 35 28 30 25 30 25 21 23 30 25 35 25 23 23 16 12 16 18 21 14 21 21 18 21 18 12 21 21 12 12 18 12 30 21 21 21 21 16 16 12 21 18 28 18 18 16 17 11 17 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 21 21 7 21 21 21 21 9 23 21 14 14 21 21 0 21 21 21 10 0 22 15 14 23 23 21 37 42 0 21 0 14 14 14 14 14 14 14 14 0 14 14 0 14 14 14 37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37 0 11 0 0 0 0 23 30 39 13 0 0 0 0 0 28 0 0 0 12 0 0 12 21 28 21 0 0 0 0 ] /Times-Italic 1000 655360 rf /Ff [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 11 14 17 17 28 26 11 11 11 17 19 8 11 8 9 17 17 17 17 17 17 17 17 17 17 9 9 19 19 19 15 31 24 22 22 24 20 18 24 24 11 13 24 20 30 24 24 18 24 22 18 20 24 24 31 24 24 20 11 9 11 16 17 11 15 17 15 17 15 11 17 17 9 9 17 9 26 17 17 17 17 11 13 9 17 17 24 17 17 15 16 7 16 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 17 17 6 17 17 17 17 6 15 17 11 11 18 18 0 17 17 17 8 0 15 12 11 15 15 17 33 33 0 15 0 11 11 11 11 11 11 11 11 0 11 11 0 11 11 11 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 0 9 0 0 0 0 20 24 30 10 0 0 0 0 0 22 0 0 0 9 0 0 9 17 24 17 0 0 0 0 ] /Times-Roman 1000 524288 rf /Fg [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 14 17 21 21 35 32 14 14 14 21 23 10 14 10 12 21 21 21 21 21 21 21 21 21 21 12 12 23 23 23 18 38 30 28 28 30 25 23 30 30 14 16 30 25 37 30 30 23 30 28 23 25 30 30 39 30 30 25 14 12 14 19 21 14 18 21 18 21 18 14 21 21 12 12 21 12 32 21 21 21 21 14 16 12 21 21 30 21 21 18 20 8 20 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 21 21 7 21 21 21 21 7 18 21 14 14 23 23 0 21 21 21 10 0 19 15 14 18 18 21 42 42 0 18 0 14 14 14 14 14 14 14 14 0 14 14 0 14 14 14 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37 0 11 0 0 0 0 25 30 37 13 0 0 0 0 0 28 0 0 0 12 0 0 12 21 30 21 0 0 0 0 ] /Times-Roman 1000 655360 rf /Fh [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 12 21 19 19 37 31 12 12 12 19 21 9 12 9 10 19 19 19 19 19 19 19 19 19 19 12 12 21 21 21 19 35 27 25 27 27 25 23 29 29 15 19 29 25 35 27 29 23 29 27 21 25 27 27 37 27 27 25 12 10 12 22 19 12 19 21 17 21 17 12 19 21 10 12 21 10 31 21 19 21 21 17 15 12 21 19 27 19 19 17 15 8 15 19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 19 19 6 19 19 19 19 10 19 19 12 12 21 21 0 19 19 19 9 0 20 13 12 19 19 19 37 37 0 19 0 12 12 12 12 12 12 12 12 0 12 12 0 12 12 12 37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37 0 11 0 0 0 0 25 29 37 12 0 0 0 0 0 27 0 0 0 10 0 0 10 19 27 21 0 0 0 0 ] /Times-Bold 1000 589824 rf /Fi [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 12 15 19 19 31 29 12 12 12 19 21 9 12 9 10 19 19 19 19 19 19 19 19 19 19 10 10 21 21 21 17 34 27 25 25 27 23 21 27 27 12 15 27 23 33 27 27 21 27 25 21 23 27 27 35 27 27 23 12 10 12 18 19 12 17 19 17 19 17 12 19 19 10 10 19 10 29 19 19 19 19 12 15 10 19 19 27 19 19 17 18 7 18 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 19 19 6 19 19 19 19 7 17 19 12 12 21 21 0 19 19 19 9 0 17 13 12 17 17 19 37 37 0 17 0 12 12 12 12 12 12 12 12 0 12 12 0 12 12 12 37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 0 10 0 0 0 0 23 27 33 12 0 0 0 0 0 25 0 0 0 10 0 0 10 19 27 19 0 0 0 0 ] /Times-Roman 1000 589824 rf /Fj [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 12 16 19 19 31 29 12 12 12 19 25 9 12 9 10 19 19 19 19 19 19 19 19 19 19 12 12 25 25 25 19 34 23 23 25 27 23 23 27 27 12 17 25 21 31 25 27 23 27 23 19 21 27 23 31 23 21 21 15 10 15 16 19 12 19 19 17 19 17 10 19 19 10 10 17 10 27 19 19 19 19 15 15 10 19 17 25 17 17 15 15 10 15 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 19 19 6 19 19 19 19 8 21 19 12 12 19 19 0 19 19 19 9 0 20 13 12 21 21 19 33 37 0 19 0 12 12 12 12 12 12 12 12 0 12 12 0 12 12 12 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 0 10 0 0 0 0 21 27 35 12 0 0 0 0 0 25 0 0 0 10 0 0 10 19 25 19 0 0 0 0 ] /Times-Italic 1000 589824 rf /Fk [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 17 20 25 25 41 39 17 17 17 25 28 12 17 12 14 25 25 25 25 25 25 25 25 25 25 14 14 28 28 28 22 46 36 33 33 36 30 28 36 36 17 19 36 30 44 36 36 28 36 33 28 30 36 36 47 36 36 30 17 14 17 23 25 17 22 25 22 25 22 17 25 25 14 14 25 14 39 25 25 25 25 17 19 14 25 25 36 25 25 22 24 10 24 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 25 25 8 25 25 25 25 9 22 25 17 17 28 28 0 25 25 25 12 0 23 17 17 22 22 25 50 50 0 22 0 17 17 17 17 17 17 17 17 0 17 17 0 17 17 17 50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 0 14 0 0 0 0 30 36 44 15 0 0 0 0 0 33 0 0 0 14 0 0 14 25 36 25 0 0 0 0 ] /Times-Roman 1000 786432 rf /Fl [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 24 29 36 36 60 56 24 24 24 36 40 18 24 18 20 36 36 36 36 36 36 36 36 36 36 20 20 40 40 40 32 66 52 48 48 52 44 40 52 52 24 28 52 44 64 52 52 40 52 48 40 44 52 52 68 52 52 44 24 20 24 34 36 24 32 36 32 36 32 24 36 36 20 20 36 20 56 36 36 36 36 24 28 20 36 36 52 36 36 32 34 14 34 39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 36 36 12 36 36 36 36 13 32 36 24 24 40 40 0 36 36 36 18 0 32 25 24 32 32 36 72 72 0 32 0 24 24 24 24 24 24 24 24 0 24 24 0 24 24 24 72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 20 0 0 0 0 44 52 64 22 0 0 0 0 0 48 0 0 0 20 0 0 20 36 52 36 0 0 0 0 ] /Times-Roman 1000 1132462 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 300 TeXDict begin @letter %%EndSetup %%Page: 1 1 bop 85 103 a Fl(Naming)17 b(Facilities)g(for)g(Operating)g(System)g (Emulation)g(in)h(Mach)f(3.0)854 223 y Fk(Daniel)12 b(P)-6 b(.)13 b(Julin)-29 386 y Fj(Abstract)7 b Fi(\261)h Fh(The)g(Mach)g(3.0)g (micr)o(o-kernel)g(pr)o(ovides)f(a)h(foundation)g(for)-71 436 y(the)j(emulation)f(of)g(various)f(operating)g(systems)g(with)i(a)f (combination)f(of)-71 486 y(libraries)e(and)h(Mach)f(servers.)k(W)n(e)d(pr)o (esent)f(a)g(general-purpose)e(naming)-71 535 y(facility)16 b(to)f(help)f(construct)g(such)f(emulation)i(systems)e(by)h(assembling)-71 585 y(many)d(independent)f(servers.)17 b(This)11 b(facility)h(de\256nes)e(a)h (set)g(of)g(standard)-71 635 y(interfaces)6 b(for)h(a)f(uniform)h(name)f (space)f(with)i(uniform)g(access)e(mediation)-71 685 y(and)15 b(a)f(set)h(of)g(practical)f(mechanisms)f(to)i(integrate)f(servers)e(into)j (this)-71 735 y(name)7 b(space,)f(thr)o(ough)h(pr)o(e\256x)f(tables)h(and)g (ancillary)f(servers)f(supporting)-71 785 y(special)h(mount)g(points.)12 b(W)n(e)6 b(then)g(discuss)g(the)g(application)g(of)g(this)g(facility)-71 834 y(to)k(UNIX)g(4.3)f(BSD)h(emulation,)g(to)g(a)f(secur)o(e)f(system)h (with)i(a)e(centralized)-71 884 y(trusted)g(name)f(server)m(,)f(and)i(to)g (larger)f(distributed)h(systems.)226 1027 y Fk(I.)50 b(INTRODUCTION)-71 1127 y Fg(One)11 b(of)g(the)f(main)h(focuses)g(of)g(research)h(within)d(the)h (Mach)i(project)e(is)-71 1176 y(the)f(use)f(of)g(a)h(\252micro-kernel\272)f (architecture)h(to)e(emulate)i(the)f(function-)-71 1226 y(ality)j(and)h (programming)e(interfaces)i(of)f(operating)g(systems)h(such)g(as)-71 1276 y(UNIX,)c(VMS,)f(MS-DOS,)g(etc.[1)q(])g(Several)g(sub-projects)f(are)i (current-)-71 1326 y(ly)13 b(underway)g(to)f(investigate)g(dif)o(ferent)g (design)h(alternatives)f(within)-71 1376 y(this)c(overall)g(architecture,)h (and)g(to)f(produce)g(working)f(emulation)h(sys-)-71 1425 y(tems)g(for)f (various)f(tar)o(get)h(operating)f(systems.)15 b(One)7 b(such)g(sub-project,) -71 1475 y(often)12 b(referred-to)g(as)h(the)f(\252Mach)h(3.0)g(multi-server) e(emulation)h(sys-)-71 1525 y(tem\272,)h(concentrates)f(on)e(identifying)f (general)i(issues)g(and)g(proposing)-71 1575 y(common)f(techniques)f(that)g (can)h(be)f(used)g(to)g(facilitate)g(the)g(design)f(and)-71 1625 y(implementation)13 b(of)h(emulation)g(systems)h(in)f(general,)i (independent)-71 1675 y(of)10 b(any)g(speci\256c)g(tar)o(get.)15 b(This)10 b(ef)o(fort)f(centers)h(on)g(the)f(speci\256cation)h(of)-71 1724 y(a)15 b(\257exible)e(common)h(framework)f(for)h(building)d(emulation)h (system-)-71 1774 y(s)i(with)e(a)i(combination)e(of)h(independent)g(servers)h (that)e(cooperate)i(to)-71 1824 y(implement)h(the)f(complete)g(emulation.)27 b(One)15 b(of)f(the)g(key)h(elements)-71 1874 y(of)d(this)f(framework)g(is)h (a)g(general-purpose)f(naming)g(facility)g(that)g(or)o(-)-71 1924 y(ganizes)i(the)f(interactions)f(between)i(the)f(emulated)h(client)e (processes)-71 1973 y(and)f(the)e(various)h(servers.)15 b(This)9 b(paper)h(discusses)f(the)g(design)g(of)f(such)-71 2023 y(a)j(naming)f (facility)m(.)230 2166 y Fk(II.)49 b(BACKGROUND)-71 2266 y Fg(The)17 b(proposed)d(general)i(architecture)g(for)f(emulation)g(contains)g (the)-71 2315 y(following)10 b(elements)i(\(many)g(of)g(which)f(are)i(shared) f(to)f(some)i(degree)-71 2365 y(by)d(other)g(Mach)h(emulation)e(designs\):)p -71 2415 420 2 v -11 2454 a Ff(Author)q(')n(s)g(address:)k(School)8 b(of)h(Computer)f(Science,)h(Carnegie)g(Mellon)f(Univer)o(-)-71 2493 y(sity)n(,)h(Pittsbur)o(gh,)f(P)m(A)h(15213)-37 2533 y(This)k(research)f (was)g(sponsored)f(in)i(part)g(by)f(The)h(Defense)f(Advanced)f(Research)-71 2572 y(Projects)j(Agency)n(,)g(Information)f(Science)g(and)g(T)n(echnology)f (Of)o(\256ce,)k(under)c(the)i(ti-)-71 2611 y(tle)h(\252Research)f(on)g (Parallel)h(Computing\272,)g(ARP)m(A)g(Order)g(No.)31 b(7330,)15 b(issued)f(by)-71 2651 y(DARP)m(A/CMO)g(under)d(Contract)h(MDS972-90-C-0035)e (and)i(in)g(part)h(by)f(the)g(Open)-71 2690 y(Software)d(Foundation)f (\(OSF\).)i(The)e(views)h(and)f(conclusions)f(contained)g(in)h(this)h(doc-) -71 2730 y(ument)i(are)h(those)f(of)g(the)h(authors)e(and)h(should)g(not)g (be)g(interpreted)g(as)g(representing)-71 2769 y(the)f(of)o(\256cial)g (policies,)g(either)g(expressed)d(or)j(implied,)g(of)f(DARP)m(A,)i(OSF)m(,)g (or)f(the)f(U.S.)-71 2809 y(government.)1050 386 y Fg(1.)21 b(the)14 b(Mach)g(3.0)g(micro-kernel,)g(that)f(provides)g(a)i(few)f(basic)g (fa-)1102 436 y(cilities)c(needed)j(for)e(the)h(execution)f(of)g(the)h(other) f(components.)1102 486 y(These)i(facilities)e(include)g Fe(task)h Fg(and)g Fe(thread)f Fg(management,)j(vir)o(-)1102 535 y(tual)c(memory)i (management)g(\(including)d(user)o(-level)i(control)e(of)1102 585 y Fe(memory)k(objects)p Fg(\),)f(an)h(inter)o(-process)e(communication)g (facility)1102 635 y(\(IPC\),)f(and)g(raw)h(device)g(I/O.)1050 730 y(2.)21 b(a)14 b(collection)e(of)i Fe(system)h(servers)h Fg(operating)c(in)h(separate)i(user)o(-)1102 779 y(level)10 b(Mach)h(tasks,)h(that)e(export)f(all)h(the)h(high-level)e(functional-)1102 829 y(ity)k(required)g(of)g(dif)o(ferent)h(operating)e(systems.)27 b(Examples)14 b(of)1102 879 y(such)c(servers)g(include)f(one)g(or)h(more)g (\256le)f(servers,)i(a)f(terminal)f(or)1102 929 y(\252TTY\272)14 b(server)n(,)f(a)g(process)f(manager)n(,)i(an)f(authentication)d(serv-)1102 979 y(er)n(,)18 b(a)e(system)g(management)g(server)n(,)i(etc.)32 b(One)16 b(of)f(the)g(major)1102 1028 y(ideas)c(of)f(the)g(design)g(is)g(to)g (structure)g(this)f(collection)g(of)h(servers)1102 1078 y(so)j(that)f(it)f (can)j(be)f(easily)f(adapted)h(to)f(support)f(dif)o(ferent)h(tar)o(get)1102 1128 y(operating)c(systems)i(or)f(variation)f(to)h(existing)f(tar)o(gets.)15 b(This)10 b(po-)1102 1178 y(tential)k(is)h(maximized)h(by)f(separating)g(as)h (much)g(possible)e(the)1102 1228 y(\252raw)j(functionality\272)c(of)j(the)g (various)f(services)h(from)g(the)g(de-)1102 1278 y(tails)9 b(of)g(interface)g(or)g(\252presentation\272)h(speci\256ed)g(for)f(each)h (tar)o(get)1102 1327 y(system.)24 b(Many)13 b(servers)h(can)g(simply)e(be)i (reused)f(for)g(dif)o(ferent)1102 1377 y(emulations.)22 b(Others)13 b(can)g(be)g(used)g(as)h(a)f(skeleton)f(that)g(can)i(be)1102 1427 y(easily)c(modi\256ed)g(to)g(suit)f(dif)o(ferent)h(requirements.)1050 1521 y(3.)21 b(a)12 b(tar)o(get-speci\256c)g Fe(emulation)f(library)g Fg(transparently)f(loaded)i(in)1102 1571 y(the)j(address)g(space)h(of)f(each) h(process)g(for)e(which)g(a)i(particular)1102 1621 y(programming)7 b(interface)i(must)f(be)h(emulated)f(\(also)g(called)h Fe(emu-)1102 1671 y(lated)h(processes)p Fg(\),)i(that)e(intercepts)g(the)g(system)h(calls) g(issued)f(by)1102 1721 y(the)h(user)h(program)f(and)g(handles)g(them)h(by)e (invoking)f(appropri-)1102 1771 y(ate)j(services)h(in)f(appropriate)f (servers.)21 b(The)12 b(emulation)f(library)1102 1820 y(acts)j(as)g(a)g (translator)f(between)h(the)f(more-or)o(-less)h(generic)g(ser)o(-)1102 1870 y(vices)i(described)f(above)h(and)f(the)g(interface)h(of)f(the)g (operating)1102 1920 y(system)e(to)f(be)h(emulated,)g(thereby)f(allowing)f (the)i(de\256nition)d(of)1102 1970 y(the)h(interfaces)h(for)f(those)g (services)h(to)f(be)g(guided)g(primarily)e(by)1102 2020 y(considerations)h (of)g(generality)m(,)g(\257exibility)f(and)h(ef)o(\256ciency)m(,)j(and)1102 2069 y(not)d(by)h(the)g(idiosyncrasies)f(of)h(any)g(particular)f(tar)o(get.) 18 b(In)11 b(addi-)1102 2119 y(tion,)i(the)h(emulation)f(library)f(often)h (maintains)g(local)h(state)g(for)1102 2169 y(each)i(emulated)f(process,)i (and)e(may)h(perform)e(some)i(complex)1102 2219 y(functions)8 b(locally)g(to)h(reduce)h(the)f(number)g(of)g(interactions)f(with)1102 2269 y(servers.)1060 2360 y(The)k(components)e(in)f(this)h(system)h (communicate)g(using)e(a)i(combi-)1019 2410 y(nation)e(of)h(the)g(shared)h (memory)g(and)g(IPC)f(facilities)f(provided)g(by)h(the)1019 2460 y(kernel.)17 b(Only)10 b(the)g(Mach)i(IPC)e(facility)g(is)h(relevant)f (for)h(the)f(purposes)1019 2510 y(of)k(this)f(paper)n(.)26 b(It)13 b(is)h(based)g(on)g(the)g(abstraction)f(of)h(uni-directional)1019 2560 y(message)i(queues)f(named)g Fe(ports)p Fg(,)g(with)f(a)h(single)e Fe(receive)19 b(right)13 b Fg(and)1019 2609 y(multiple)6 b Fe(send)h(rights)g Fg(distributed)e(among)j(various)e(Mach)i(tasks.)15 b(Port)1019 2659 y(rights)e(are)i(treated)f(as)h(secure)h(capabilities)d(for) h(the)g(ports)g(that)f(they)1019 2709 y(represent)e(and)f(can)i(be)f (transmitted)e(in)h(messages;)i(they)f(can)g(be)g(used)1019 2759 y(at)h(the)f(same)j(time)d(as)i(handles)f(for)f(communication)g (operations)g(and)1019 2809 y(as)e(protected)g(references)h(for)e(individual) f(objects)h(or)g(resources)i(in)e(the)988 2933 y(1)p eop %%Page: 2 2 bop -71 -30 a Fg(system.)15 b(The)8 b(local)g(IPC)f(facilities)g(exported)g (by)g(the)g(kernel)h(are)g(trans-)-71 20 y(parently)13 b(extended)h(in)f(the) g(network)g(environment)f(by)i(a)g(collection)-71 70 y(of)c Fe(network)h(servers)p Fg([2)q(].)-29 122 y(Every)g(high-level)e(service)j (exported)e(by)g(the)h(servers)g(in)f(the)h(emu-)-71 171 y(lation)e(system)h (is)g(de\256ned)g(following)d(an)j(object-oriented)e(paradigm,)-71 221 y(with)f(operations)f(exported)h(by)f(one)i(or)f(more)g Fe(items)p Fg(.)14 b(The)8 b(word)f Fe(item)g Fg(is)-71 271 y(used)g(here)g(to)g(avoid)g(confusion)g(wit)o(h)g(v)o(arious)g(l)o (anguage-level)g(ob)o(jects)-71 321 y(or)j(classes)g(that)f(may)h(be)g(used)g (internally)d(for)i(the)h(implementation)e(of)-71 371 y(each)14 b(service.)24 b(Examples)14 b(of)e(items)h(\(using)f(a)h(UNIX)g (terminology\))-71 421 y(are)f(\256les,)f(pipes,)g(sockets,)h(processes,)g (devices,)g(as)f(well)g(as)g(a)g(variety)-71 470 y(of)h(miscellaneous)g (services)h(such)f(as)g(time,)h(system)f(administration,)-71 520 y(monitoring,)g(etc.)24 b(Each)14 b(item)f(is)f(managed)i(by)f(a)g (particular)f(server;)-71 570 y(some)17 b(servers)f(are)h(responsible)e(for)g (only)g(one)g(item)h(\(e.g.)32 b(system)-71 620 y(administration\),)10 b(while)h(other)f(servers)i(may)g(manage)g(lar)o(ge)g(number)-71 670 y(of)c(related)g(items)g(\(e.g.)15 b(all)7 b(the)h(\256les)g(in)g(one)f (\256le)i(system\).)14 b(Some)9 b(item-)-71 719 y(s)15 b(may)f(exist)g(only)f (as)h(long)f(as)i(they)f(are)h(actively)e(being)g(used)i(\(e.g.)-71 769 y(sockets\),)f(while)d(others)h(are)h(long-lived)d(and)i(must)g(persist)g (between)-71 819 y(consecutive)f(periods)e(of)h(use.)-29 871 y(The)h(set)h(of)e(operations)g(exported)g(by)h(all)f(the)h(items)g(is)f (subdivided)-71 921 y(into)j(a)i(number)g(of)f(standard)g(interfaces)g(that)g (can)h(be)g(combined)f(or)-71 971 y(specialized)g(as)g(needed.)24 b(Examples)14 b(of)f(basic)g(interfaces)h(include)e(a)-71 1020 y(standard)e(input/output)c(interface,)11 b(a)g(network)e(control)g (interface)h(and)-71 1070 y(a)16 b(uniform)f(naming)g(interface,)i(that)e (constitutes)f(the)h(focus)g(of)g(this)-71 1120 y(paper)n(.)-62 1255 y Fk(III.)49 b(FUNCTIONALITY)13 b(AND)f(REQUIREMENTS)145 1313 y(FOR)g(THE)h(NAMING)g(SUBSYSTEM)-71 1410 y Fg(In)j(general,)h(a)g (complete)f(emulation)e(system)j(can)f(be)g(viewed)g(as)g(a)-71 1459 y(loose)c(federation)f(of)g(servers)h(that)f(together)g(export)g(and)g (manage)i(all)-71 1509 y(the)e(items)g(needed)h(for)f(a)g(speci\256c)h (emulation.)17 b(The)11 b(naming)g(subsys-)-71 1559 y(tem)16 b(provides)e(the)i(common)f(\252glue\272)h(between)g(those)f(servers,)i(and) -71 1609 y(is)12 b(the)f(mechanism)i(through)d(which)h(emulation)g(libraries) f(in)h(various)-71 1659 y(systems)f(gain)f(access)i(to)d(all)h(the)g (individual)e(items)i(needed)h(to)e(perfor)o(-)-71 1708 y(m)k(each)h (particular)d(emulation)h(function.)17 b(It)11 b(de\256nes)h(tools)f(to)f (create)-71 1758 y(a)h(single)e(uniform)f(name)j(space)g(encompassing)f(the)g (collection)e(of)i(all)-71 1808 y(items)i(managed)g(by)e(all)h(emulation)g (servers,)h(a)g(standard)f(protocol)e(to)-71 1858 y(navigate)15 b(through)e(this)h(name)i(space,)h(and)e(a)g(common)g(framework)-71 1908 y(for)d(access)j(mediation.)21 b(The)13 b(basic)g(functions)e(are)i(the) g(resolving)e(of)-71 1958 y(names)h(into)d(items)h(and)g(item)h(creation.)-29 2009 y(The)17 b(basic)f(name)h(resolving)d(operation)h(returns)g(a)i(handle)f (for)f(a)-71 2059 y(single)9 b(item)g(uniquely)f(identi\256ed)g(by)h(a)h (path)f(name.)16 b(This)9 b(handle)g(can)-71 2109 y(then)i(be)g(used)f(by)h (a)g(client)f(to)g(invoke)g(other)g(operations)f(on)i(the)f(item.)-71 2159 y(The)h(naming)e(subsystem)h(takes)g(care)h(of)f(access)i(mediation)d (for)g(those)-71 2209 y(operations,)j(and)f(garbage-collection)f(when)i(the)f (handle)g(is)g(released)-71 2259 y(by)16 b(the)g(client.)32 b(T)m(o)16 b(simplify)f(the)h(overall)f(system,)j(and)f(to)e(permit)-71 2308 y(a)h(pure)f(object-)f(or)h(item-oriented)f(model)h(that)f(does)h(not)f (force)i(the)-71 2358 y(explicit)7 b(de\256nition)f(of)i(groups)f(of)g(items) h(belonging)e(to)i(a)g(same)h(server)n(,)-71 2408 y(the)j(same)g(naming)f (protocol)f(and)h(resolving)f(operations)h(are)h(used)f(to)-71 2458 y(locate)g(individual)c(servers)j(or)g(servers)h(exporting)d(a)i(single) f(item,)h(and)-71 2508 y(to)h(navigate)h(inside)e(a)j(\252subtree\272)f(of)f (the)h(name)g(space)h(containing)d(all)-71 2557 y(the)h(items)f(managed)h(by) f(one)g(particular)g(server)n(.)-29 2609 y(The)15 b(basic)f(item)g(creation)g (operation)f(combines)i(creation)f(of)g(the)-71 2659 y(new)e(item)e(and)h (entering)f(it)g(at)h(an)h(appropriate)e(location)f(in)i(the)g(name)-71 2709 y(space.)16 b(This)9 b(approach)g(provides)f(a)h(natural)f(mechanism)i (to)e(integrate)-71 2759 y(this)14 b(operation)f(within)f(the)i(access)j (mediation)c(framework,)j(by)d(ap-)-71 2809 y(plying)c(the)i(access)i (control)d(on)g(a)i(directory)d(to)i(mediate)g(the)g(creation)1019 -30 y(of)k(items)g(to)g(be)h(entered)f(in)g(that)g(directory)m(.)30 b(In)15 b(addition,)g(it)f(helps)1019 20 y(guarantee)c(that)g(all)f(new)h (items)g(will)f(be)h(automatically)f(visible)g(in)g(the)1019 70 y(name)g(space,)i(and)d(avoids)g(the)g(problems)g(encountered)g(when)h(an) f(item)1019 120 y(managed)15 b(by)e(one)h(server)g(must)g(be)g(entered)g(in)g (the)f(name)i(space)g(of)1019 169 y(another)n(.)1060 219 y(W)n(ithin)e(the)h (context)f(of)h(this)f(model,)i(the)f(design)g(of)g(the)f(naming)1019 269 y(subsystem)h(addresses)h(the)f(following)d(high-level)i(requirements)g (or)1019 319 y(desirable)d(properties:)1019 398 y Fd(multiple)f (con\256gurations:)20 b Fg(it)15 b(should)g(be)h(easy)g(to)f(build)f(many)i (d-)1102 448 y(if)o(ferent)11 b(con\256gurations)e(by)i(assembling)g(dif)o (ferent)f(collections)1102 498 y(of)f(servers,)h(to)f(specialize)g(each)i (emulation)d(system)i(for)e(speci\256c)1102 548 y(user)i(or)g(environmental)g (requirements.)1019 629 y Fd(multiple)f(operating)h(systems:)21 b Fg(the)14 b(emulation)g(libraries)f(for)i(vari-)1102 679 y(ous)e(tar)o(get)h(operating)f(systems)h(must)f(be)h(able)g(to)f(present)h (dif-)1102 729 y(ferent)d(\252views\272)i(of)e(the)g(standard)h(name)g(space) h(for)e(each)i(of)e(the)1102 778 y(corresponding)j(tar)o(gets,)j(in)e(terms)h (of)f(name)i(space)f(structure,)1102 828 y(name)11 b(syntax)f(and)g (functional)f(interface.)1019 910 y Fd(integrating)g(new)i(servers:)23 b Fg(it)6 b(should)g(be)h(possible)f(to)g(integrate)h(new)1102 959 y(servers)15 b(into)e(the)i(system,)h(even)f(if)f(the)h(internal)e(or)o (ganization)1102 1009 y(of)i(these)h(servers)f(or)g(the)g(particular)g(type)g (of)g(items)g(that)f(they)1102 1059 y(manage)d(were)g(not)f(explicitly)e (part)i(of)g(the)g(original)f(design.)1019 1140 y Fd(security:)21 b Fg(the)15 b(protocols)g(and)g(mechanisms)i(should)d(provide)g(ade-)1102 1190 y(quate)h(security)g(to)g(control)f(access)k(to)d(items)g(by)h(a)g (variety)e(of)1102 1240 y(clients)c(in)f(a)i(variety)f(of)g(environments)f (and)h(con\256gurations.)1019 1321 y Fd(performance:)22 b Fg(the)13 b(naming)h(subsystem)g(is)g(to)f(be)h(invoked)f(for)g(al-)1102 1371 y(most)c(every)h(emulation)f(function.)14 b(It)9 b(is)g(critical)g(that) h(its)f(perfor)o(-)1102 1421 y(mance)k(be)f(very)f(good,)g(at)g(the)h(same)g (level)g(as)g(that)f(of)g(common)1102 1471 y(naming)g(functions)e(in)i(most)g (operating)e(systems)j(that)e(are)i(to)f(be)1102 1520 y(emulated.)1019 1602 y Fd(integration)e(into)h(large)g(distributed)h(systems:)20 b Fg(beyond)10 b(the)h(\(rela-)1102 1652 y(tively\))d(simple)h(needs)i(of)e (a)h(single)f(localized)g(operating)g(system)1102 1701 y(emulation,)j(the)f (overall)g(design)g(should)g(provide)f(for)h(clean)i(in-)1102 1751 y(tegration)8 b(into)f(lar)o(ger)j(naming)e(structures)h(spanning)f (more)h(than)1102 1801 y(one)17 b(node,)h(more)f(than)f(one)h(emulation,)h (and)e(possibly)g(more)1102 1851 y(than)11 b(one)g(administrative)f(domain.) 17 b(Speci\256c)12 b(concerns)g(in)f(that)1102 1901 y(area)17 b(include)e(issues)g(of)g(robustness,)i(scale,)h(dynamic)e(recon-)1102 1950 y(\256guration,)11 b(and)h(sharing)g(of)g(servers)g(between)h(several)f (\252local\272)1102 2000 y(systems.)1019 2081 y Fd(customizable)e(name)g (spaces:)22 b Fg(to)c(increase)j(the)e(\257exibility)d(avail-)1102 2131 y(able)9 b(to)g(users,)h(particularly)d(in)i(the)g(presence)h(of)f (possibly)e(lar)o(ge,)1102 2181 y(extensible)16 b(name)h(spaces)h(and)e(in)g (the)g(presence)h(of)f(dif)o(feren-)1102 2231 y(t)e(tar)o(get-speci\256c)i (naming)e(requirements,)i(the)f(system)g(should)1102 2281 y(support)6 b(the)h(de\256nition)f(of)g(dif)o(ferent)h(views)g(of)g(the)g(overall)g(name) 1102 2331 y(space)12 b(to)d(be)i(speci\256ed)g(by)f(each)h(individual)d (client)h(or)h(system.)1060 2410 y(Conversely)m(,)k(this)e(naming)h (subsystem)g(is)g(primarily)e(intended)h(as)1019 2460 y(a)j(tool)d(for)i(the) g(construction)e(of)i(emulation)f(systems)i(and)f(the)g(inte-)1019 2510 y(gration)c(of)g(many)i(dif)o(ferent)e(servers,)i(and)f(not)f(as)i(a)g (general-purpose)1019 2560 y(facility)i(for)g(distributed)f(computing.)28 b(Accordingly)m(,)16 b(a)f(number)g(of)1019 2609 y(features)d(are)g(omitted)e (for)g(the)h(sake)i(of)d(simplicity)m(,)h(adaptability)e(and)1019 2659 y(performance.)31 b(Other)15 b(than)f(the)i(fact)f(that)g(Mach)g(IPC)g (is)g(naturally)1019 2709 y(network-transparent,)c(there)h(is)f(no)g (explicit)g(support)f(for)h(traditional)1019 2759 y(high-level)6 b(functions)f(of)i(distributed)e(systems)j(such)g(as)f(replication)f(or)1019 2809 y(sophisticated)g(caching)i(strategies;)g(such)g(services)h(may)f(be)g (provided,)988 2933 y(2)p eop %%Page: 3 3 bop -71 -30 a Fg(if)12 b(desired,)i(through)c(integration)h(of)h(the)g(local) g(naming)g(system)h(into)-71 20 y(a)g(lar)o(ger)f(distributed)d(system)k (using)e(dif)o(ferent)g(protocols.)18 b(Complex)-71 70 y(queries)13 b(using)f(various)g(attributes)f(or)h(dealing)g(with)f(more)i(than)f(one)-71 120 y(item)c(at)f(a)h(time)f(can)h(be)g(implemented)f(in)g(speci\256c)h (servers)g(and)g(export-)-71 169 y(ed)h(through)e(conventions)g(in)h(the)g (name)h(space)h(and)e(special)h(items,)g(but)-71 219 y(there)k(is)f(no)g (explicit)f(de\256nition)g(or)h(support)f(for)h(any)h(such)f(facilities)-71 269 y(in)g(the)f(common)i(framework)f(beside)g(the)f(simple)h(lookup)e (described)-71 319 y(above.)22 b(Finally)m(,)12 b(complex)h(item)f (operations)f(beyond)h(name)h(resolv-)-71 369 y(ing)k(or)g(item)g(creation)h (are)g(not)e(directly)h(supported;)i(they)e(can)h(be)-71 418 y(implemented)12 b(by)e(a)i(combination)e(of)h(a)h(lookup)e(operation)g (followed)-71 468 y(by)i(operations)f(invoked)g(on)h(the)g(handle)g (representing)f(the)h(item,)h(in-)-71 518 y(dependent)d(of)g(the)g(naming)g (framework.)164 656 y Fk(IV)-6 b(.)49 b(SYSTEM)13 b(OVER)l(VIEW)-71 754 y Fg(Several)c(research)h(projects)e(have)h(investigated)e(naming)h (facilities)f(for)-71 804 y(distributed)j(systems)i(or)f(systems)i(with)d (multiple)g(servers,)j(and)f(have)-71 854 y(proposed)c(a)h(number)g(of)f (useful)g(ideas)h(and)f(mechanisms[3)q(,)h(4,)g(5,)g(6)o(,)g(7,)-71 904 y(8,)h(9,)g(10)o(,)g(11].)k(This)c(section)f(presents)g(an)h(overview)f (of)g(the)g(complete)-71 954 y(naming)17 b(facility)e(proposed)i(for)f (emulation)g(systems)h(under)g(Mach)-71 1003 y(3.0,)e(that)e(tries)f(to)h (take)h(advantage)f(of)g(the)h(experiences)g(from)f(these)-71 1053 y(earlier)e(systems.)-71 1179 y Fe(A.)43 b(Client-Server)10 b(Interactions)f(and)g(Access)k(Mediation)-71 1262 y Fg(Servers)k(give)e (clients)h(access)i(to)d(the)h(items)g(that)f(they)h(manage)h(by)-71 1311 y(handing)f(out)f Fe(send)20 b(rights)15 b Fg(for)h(Mach)h(ports)e(for)h (which)g(they)g(hold)-71 1361 y(the)e(corresponding)f Fe(receive)18 b(rights)p Fg(.)25 b(The)15 b(clients)e(can)i(request)f(op-)-71 1411 y(erations)g(on)f(each)i(item)f(by)g(sending)f(messages)i(to)f(the)f (appropriate)-71 1461 y(port.)h(The)8 b(servers)h(associate)g(each)g(such)f (port)e(with)h(a)h(combination)f(of)-71 1511 y(three)12 b(elements:)k(a)c (designation)e(of)h(a)g(particular)g(item,)g(a)h(set)f(of)g Fe(user)-71 1560 y(credentials)j Fg(and)g(a)h(set)f(of)f Fe(access)18 b(rights)p Fg(.)25 b(The)15 b(credentials)e(are)i(an)-71 1610 y(abstract)9 b(representation)f(of)h(the)g(identity)d(of)j(the)f(client)g(or) h(clients)f(that)-71 1660 y(request)f(operations)f(through)f(that)h (particular)g(port.)13 b(The)8 b(access)h(rights)-71 1710 y(perform)j(two)g (functions:)k(\256rst,)c(they)g(are)h(a)f(simple)g(speci\256cation)g(of)-71 1760 y(which)h(client)g(requests)h(should)e(be)h(accepted)i(or)e(rejected)h (when)f(re-)-71 1810 y(ceived)c(on)f(that)f(port;)g(second,)j(the)e (existence)g(of)g(an)g(outstanding)e(send)-71 1859 y(right)k(with)g (particular)g(access)j(rights)c(may)j(be)f(used)g(as)g(an)g(indication)-71 1909 y(of)j(which)f(access)j(modes)f(are)f(currently)f(active)h(for)g(that)f (item)h(\(e.g.)-71 1959 y(\252read-only\272,)i(\252read-write\272,)g(etc.\).) 28 b(The)15 b(association)e(of)h(each)i(port)-71 2009 y(with)11 b(credentials)g(and)g(access)j(rights)c(is)h(immutable,)h(established)f(by) -71 2059 y(the)j(server)h(when)f(creating)g(the)g(port)f(and)h(granting)f (access)j(to)d(each)-71 2108 y(speci\256c)e(client.)k(Since)10 b(Mach)g(ports)f(are)i(secure)g(capabilities,)e(clients)-71 2158 y(cannot)h(subvert)f(the)g(system)h(by)f(for)o(ging)f(or)h(stealing)g (dif)o(ferent)g(ports.)-29 2211 y(The)15 b(operation)f(by)g(which)g(a)h (client)f(requests)g(access)j(to)d(a)h(given)-71 2261 y(item)9 b(with)f(speci\256c)i(credentials)f(and)g(access)i(rights)d(is)h(the)f (equivalent)-71 2310 y(of)f(an)h(\252open\272)g(operation)e(in)h(UNIX)g(or)g (other)g(operating)f(systems.)15 b(The)-71 2360 y(client)e(may)g(securely)h (specify)f(the)g(desired)g(credentials)g(by)f(sending)-71 2410 y(to)17 b(the)g(server)h(an)f(authentication)f(token,)j(to)d(be)i (interpreted)e(by)h(a)-71 2460 y(mutually)9 b(trusted)g Fe(authentication)d (server)p Fg(.)17 b(The)10 b(exact)h(nature)e(of)g(this)-71 2510 y(authentication)14 b(service)h(is)g(independent)f(of)g(the)h(naming)g (protocol;)-71 2560 y(the)k(current)f(prototype)f(uses)i(a)g(simple)f(server) h(with)e(Mach)i(ports)-71 2609 y(as)c(secure)g(authentication)e(tokens.)26 b(T)m(o)14 b(provide)f(a)i(uniform)d(access)-71 2659 y(mediation)7 b(mechanism)g(and)g(interface,)h(each)f(item)g(is)g(associated)g(with)-71 2709 y(a)12 b(general-purpose)f Fe(access)i(control)e(list)f Fg(to)g(be)i(matched)g(against)f(the)-71 2759 y(user)j(credentials)f(when)g (establishing)e(the)i(valid)f(access)k(rights,)c(and)-71 2809 y(a)17 b Fe(type)g Fg(that)e(de\256nes)i(the)f(association)g(between)g (access)j(rights)14 b(and)1019 -30 y(each)c(operation)d(exported)h(by)g(the)g (item.)15 b(Servers)9 b(may)g(create)h(special)1019 20 y (\252un-authenticated\272)d(ports,)g(that)f(can)i(be)f(used)g(to)g(provide)f (clients)g(with)1019 70 y(references)k(to)d(individual)f(items)i(without)e (allowing)g(them)j(to)e(perform)1019 120 y(any)j(operations)f(directly)m(,)g (other)h(than)f(to)h(re-authenticate)f(to)h(obtain)f(a)1019 169 y(new)h(port)g(with)f(dif)o(ferent)g(access)k(attributes.)1060 219 y(There)g(is)f(no)g(corresponding)e(\252close\272)k(operation:)i(clients) c(simply)1019 269 y(deallocate)g(their)g(send)g(rights)e(to)i(release)h (their)e(access)k(to)c(the)h(corre-)1019 319 y(sponding)5 b(items.)14 b(The)8 b(Mach)f(kernel)g(sends)g(a)g Fe(no-more-senders)h Fg(noti-)1019 369 y(\256cation)h(to)h(the)f(server)i(when)f(all)f (outstanding)f(send)i(rights)e(for)i(a)g(port)1019 418 y(disappear)n(,)18 b(thereby)e(providing)e(an)i(automatic)g(garbage-collection)1019 468 y(mechanism)9 b(that)f(functions)f(even)i(in)f(the)g(presence)i(of)e (client)f(crashes.)1060 518 y(Finally)m(,)15 b(to)e(provide)g(additional)g (\257exibility)m(,)g(clients)h(do)f(not)h(nor)o(-)1019 568 y(mally)e(manipulate)g(the)g(above)g(send)h(rights)d(directly)m(.)21 b(Instead,)13 b(each)1019 618 y(send)8 b(right)e(is)i(encapsulated)g(in)g(a)g (special)g(body)f(of)h(code)g(loaded)g(in)f(the)1019 667 y(client')n(s)f (address)i(space,)h(called)f(a)f Fe(proxy)h(object)f Fg(or)g(simply)f Fe(proxy)p Fg([12].)1019 717 y(All)g(operations)g(on)h(the)g(item)f(are)i (invoked)e(by)h(the)f(client)h(as)g(local)g(oper)o(-)1019 767 y(ations)g(on)h(the)g(proxy)g(instead)g(of)f(being)h(directed)g(at)g(the)g (server)n(.)15 b(In)8 b(the)1019 817 y(simple)j(cases,)j(the)d(proxy)f (directly)h(forwards)g(all)g(client)g(invocations)1019 867 y(to)h(the)h(server)g(via)g(Mach)g(IPC,)g(but)f(in)g(other)h(cases,)i(the)e (proxy)e(may)1019 917 y(perform)g(most)g(or)h(all)f(of)g(the)g(processing)g (locally)m(,)h(thereby)f(reducing)1019 966 y(the)h(communications)f(overhead) i(and)f(the)g(load)f(on)h(the)g(server)n(.)21 b(One)1019 1016 y(typical)8 b(application)g(is)i(to)f(use)g(a)h(proxy)f(to)g(cache)i (information)c(on)i(the)1019 1066 y(client)h(side)g(of)g(a)h(client-server)f (interface;)h(another)f(is)g(to)g(use)h(a)g(proxy)1019 1116 y(to)d(transparently)f(manage)i(a)g(region)e(of)h(memory)h(shared)g(between)f (the)1019 1166 y(client)13 b(and)h(the)f(server)i(\(e.g.)26 b(an)14 b(open)f(\256le)h(in)f(a)i(\256le)f(server\).)26 b(New)1019 1215 y(proxies)9 b(are)i(speci\256ed)g(by)f(the)g(server)g(and)h (automatically)e(instantiat-)1019 1265 y(ed)i(in)f(a)h(client')n(s)f(address) h(space)h(by)e(the)h(RPC)f(run-time)g(system,)h(as)h(a)1019 1315 y(side-ef)o(fect)f(of)f(receiving)g(an)g(item)g(reference)i(in)e(a)h (message.)1019 1423 y Fe(B.)42 b(Name)10 b(Service)i(Items)1019 1501 y Fg(The)f(name)h(space)g(is)e(de\256ned)h(around)f(four)g(basic)h (abstractions,)g(each)1019 1551 y(of)g(which)g(is)g(represented)h(by)f(a)h (special)f(type)g(of)g(item)g(subject)g(to)g(the)1019 1601 y(standard)f(access)i(mediation)e(facilities:)1060 1675 y Fc(\017)21 b Fg(a)13 b Fe(directory)f Fg(is)g(a)h(container)e(for)h(a)h(collection)e(of) h(entries)g(in)f(the)1102 1725 y(name)d(space,)h(each)f(of)f(which)g (corresponds)f(to)h(an)g(item)g(managed)1102 1775 y(by)j(the)h(same)h(server) f(that)f(manages)i(the)e(directory)g(itself.)15 b(Each)1102 1825 y(entry)h(is)g(identi\256ed)f(by)h(a)h(single-level)e(alphanumeric)i (name.)1102 1875 y(Each)11 b(directory)f(exports)g(a)h(simple)f Fe(lookup)f Fg(operation)h(to)f(trans-)1102 1924 y(late)h(such)h(names)h (into)d(item)h(references)i(represented)f(by)f(proxy)1102 1974 y(objects.)1060 2053 y Fc(\017)21 b Fg(a)16 b Fe(symbolic)j(link)c Fg(or)g Fe(symlink)h Fg(is)g(essentially)f(identical)g(to)g(the)1102 2103 y(symbolic)e(links)g(found)f(in)h(traditional)f(operating)g(systems.)27 b(It)1102 2153 y(contains)17 b(a)g(path)g(name)h(used)g(to)e(redirect)h(the)g (name)i(resolu-)1102 2203 y(tion)11 b(when)i(it)f(is)g(encountered)h(during)e (a)j(path)e(name)i(traversal.)1102 2252 y(The)f(path)f(in)f(the)h(symlink)f (can)i(be)f(absolute)g(or)g(relative)g(to)f(the)1102 2302 y(directory)e (containing)g(that)g(symlink.)1060 2381 y Fc(\017)21 b Fg(a)14 b Fe(mount)g(point)e Fg(operates)i(like)e(a)i(symlink)f(to)g(redirect)g(a)h (name)1102 2431 y(resolution,)e(but)h(instead)g(of)f(containing)g(a)i(path)f (name,)i(it)d(con-)1102 2481 y(tains)7 b(a)h(direct)g(reference)h(\(proxy)e (and)g(associated)i(Mach)f(port\))f(to)1102 2530 y(another)i(point)f (\(directory\))h(in)g(the)g(name)i(space,)g(possibly)e(man-)1102 2580 y(aged)h(by)e(a)i(dif)o(ferent)e(server)n(.)16 b(This)9 b(reference)h(is)f(returned)g(to)f(the)1102 2630 y(clients)13 b(in)h(the)f(form)h(of)f(a)i(simple)f(proxy)e(object)i(representing)1102 2680 y(the)c(tar)o(get)g(of)g(the)g(mount)g(point.)1060 2759 y Fc(\017)21 b Fg(a)10 b Fe(transparent)e(symlink)h Fg(is)g(exactly)g (identical)g(to)f(a)i(normal)f(sym-)1102 2809 y(link,)k(with)f(the)i (exception)e(that)h(the)g(name)i(resolving)d(protocol)988 2933 y(3)p eop %%Page: 4 4 bop 12 -30 a Fg(allows)13 b(clients)g(to)g(specify)g(independently)f(whether) h(transpar)o(-)12 20 y(ent)c(and)g(normal)g(symlinks)f(should)g(be)h (automatically)f(followed)12 70 y(when)16 b(found)f(at)g(the)g(end)h(of)f(a)h (path.)31 b(T)o(ransparent)15 b(symlinks)12 120 y(provide)9 b(a)g(simple)g(way)h(to)f(\252graft\272)g(arbitrary)g(items)g(in)g(arbitrary) 12 169 y(directories)h(of)g(the)g(name)i(space,)g(with)d(minimal)h(impact)h (on)f(the)12 219 y(complexity)g(of)g(all)f(directories.)-71 305 y(In)f(the)g(context)f(of)h(the)g(naming)g(subsystem,)h(every)f(other)f (type)h(of)g(item)-71 355 y(is)14 b(called)g(a)g Fe(terminal)p Fg(,)g(and)g(its)f(exact)i(nature)e(is)h(irrelevant.)25 b(T)m(ermi-)-71 405 y(nals)10 b(do)f(not)f(themselves)i(export)f(any)g(name)i(service)f (operations,)e(and)-71 455 y(correspond)i(to)g(leaves)h(in)f(the)g(global)f (name)i(space.)-29 506 y(Each)e(server)f(that)f(manages)i(more)f(than)g(one)f (item)h(typically)e(imple-)-71 556 y(ments)12 b(a)h(graph)e(of)g(directories) g(and)h(subdirectories,)f(with)g(one)g(main)-71 605 y(directory)i(acting)g (as)h(the)f(\252root\272)g(for)g(this)f(server)n(,)k(through)11 b(which)i(it)-71 655 y(is)f(connected)g(to)g(the)g(rest)g(of)f(the)h(name)h (space.)21 b(All)11 b(the)h(other)f(items)-71 705 y(managed)i(by)e(that)f (server)i(are)g(naturally)e(entered)i(at)f(the)g(appropriate)-71 755 y(locations)g(in)g(the)h(graph.)20 b(There)12 b(is)g(no)f(requirement)h (that)f(this)g(graph)-71 805 y(be)e(strictly)f(hierarchical:)13 b(each)d(item)f(must)f(simply)g(appear)h(in)g(at)f(least)-71 854 y(one)j(directory)e(to)h(be)g(reachable)i(in)d(the)h(common)h(name)g (space.)-29 905 y(These)h(abstractions)d(de\256ne)i(a)g(common)g(behavior)f (so)g(that)g(similar)-71 955 y(functions)i(are)i(treated)f(uniformly)e (across)i(all)g(servers)h(participating)-71 1005 y(into)9 b(the)h(system,)g (but)f(they)h(do)f(not)g(specify)h(a)g(required)f(functionality)-71 1055 y(for)15 b(all)g(components.)31 b(Each)16 b(server)g(may)g(or)f(may)h (not)f(implement)-71 1105 y(symlinks,)d(mount)e(points)g(and)i(even)f (subdirectories)g(as)h(deemed)g(ap-)-71 1154 y(propriate.)j(More)9 b(importantly)m(,)g(the)h(directories)f(used)h(in)f(each)i(server)-71 1204 y(need)16 b(only)e(hold)g(entries)g(for)h(the)g(items)g(and)g(item)g (types)g(managed)-71 1254 y(by)d(that)f(particular)h(server;)g(there)g(is)g (no)g(requirement)f(to)h(implement)-71 1304 y(a)k(\252universal)e (directory\272)g(that)g(can)h(hold)f(arbitrary)g(items)g(from)h(the)-71 1354 y(global)10 b(name)h(space.)-29 1404 y(In)i(addition)e(to)h(their)g (function)f(for)i(name)h(lookup,)e(directories)g(in)-71 1454 y(each)i(server)g(normally)e(also)g(export)h(one)f(or)h(more)g(specialized)h Fe(cre-)-71 1504 y(ate)i Fg(operations)f(to)g(instantiate)f(new)i(items.)31 b(The)16 b(details)f(of)h(those)-71 1554 y(operations,)c(including)e(the)i (type)f(of)h(items)g(that)f(can)i(be)f(created,)i(are)-71 1604 y(irrelevant)e(from)h(the)f(perspective)h(of)f(the)g(naming)h(subsystem.)22 b(The)-71 1654 y(only)14 b(condition)e(is)i(that)f(the)i(newly)e(created)j (item)e(be)g(visible)f(as)i(an)-71 1703 y(entry)e(in)g(the)g(directory)g(to)f (which)h(the)h(\252create\272)h(operation)d(was)i(ap-)-71 1753 y(plied,)g(and)f(that)f(this)g(creation)h(be)g(mediated)g(by)g(the)g(access)i (control)-71 1803 y(mechanisms)d(in)e(ef)o(fect)h(for)f(that)f(directory)m(.) -29 1854 y(Finally)m(,)g(each)j(directory)d(may)h(also)g(export)g(a)g Fe(list)f Fg(operation)g(to)h(list)-71 1904 y(all)e(the)g(entries)g (available)g(for)f(lookup.)13 b(T)m(o)8 b(facilitate)g(integration)e(with)-71 1953 y(lar)o(ge)13 b(foreign)e(name)j(spaces,)g(and)e(in)g(accordance)i(with) d(the)h(general)-71 2003 y(principle)e(outlined)g(above,)i(this)e(operation)g (is)h(only)f(optional)f(for)i(the)-71 2053 y(various)d(specialized)h (versions)f(of)g(directories)f(implemented)h(by)g(each)-71 2103 y(particular)i(server)n(.)-71 2219 y Fe(C.)42 b(Name)10 b(Resolving)g(Protocol)-71 2299 y Fg(Name)j(resolving)e(is)g(obviously)f(the) i(primary)f(function)f(of)i(the)g(name)-71 2349 y(service)f(protocol.)j(It)c (proceeds)h(by)f(iteration)e(through)h(the)h(following)-71 2398 y(steps:)-39 2485 y(1.)20 b(the)d(client)f(acquires)h(access)i(\(a)e (proxy\))e(for)i(a)g(root)f(directory)12 2534 y(from)11 b(which)e(to)h(start) g(resolving)f(pathnames.)-39 2622 y(2.)20 b(the)9 b(client)g(ships)g(the)g (entire)f(path)h(name)h(to)f(the)g(initial)e(directory)m(.)-39 2709 y(3.)20 b(this)7 b(directory)m(,)h(or)g(the)g(server)g(managing)g(it,)g (consumes)h(as)f(much)12 2759 y(of)e(the)g(path)g(name)g(as)g(possible)g (before)g(returning)g(to)g(the)g(client.)13 b(If)12 2809 y(the)d(desired)f (item)g(is)g(found,)g(an)g(appropriate)g(proxy)f(is)h(returned.)1102 -30 y(If)18 b(a)g(symlink)g(or)f(mount)h(point)e(is)i(encountered,)j(the)d (server)1102 20 y(returns)8 b(to)g(the)h(client)e(the)i(information)e (contained)h(in)g(that)g(entry)m(,)1102 70 y(as)i(well)e(as)i(an)f (indication)e(of)i(how)g(much)g(of)g(the)g(path)f(name)i(was)1102 120 y(traversed)g(before)h(encountering)e(it.)1050 201 y(4.)21 b(if)14 b(necessary)m(,)k(the)c(client)g(applies)h(the)f(necessary)i (transforma-)1102 251 y(tions)11 b(implied)h(by)g(the)h(symlink)e(or)i(mount) e(point,)h(and)h(restarts)1102 300 y(the)d(resolving)g(loop)f(at)i(step)g(2)f (with)g(the)g(remainder)i(of)e(the)g(path)1102 350 y(name)h(and)g(a)f(new)h (initial)d(directory)m(.)1060 430 y(This)14 b(scheme)i(provides)d(great)h (\257exibility)d(for)j(the)f(interpretation)1019 479 y(of)j(many)h(details)f (of)g(structure)f(and)i(semantics)g(of)f(path)g(names)i(in)1019 529 y(dif)o(ferent)8 b(operating)g(system)i(emulations.)k(Since)9 b(whole)g(path)g(names)1019 579 y(are)14 b(shipped)f(\252as-is\272)h(to)f (servers)h(and)g(since)g(the)f(length)f(of)h(the)g(path)1019 629 y(traversed)7 b(is)g(always)g(returned,)g(it)g(is)g(often)g(possibl)o(e)g (to)f(completely)h(i)o(g-)1019 679 y(nore)f(the)g(actual)g(structure)g(of)g (path)g(names)g(used)g(by)g(particular)g(servers,)1019 729 y(including)11 b(the)h(component)g(separator)h(\(\252)p Fb(/)p Fg(\272,)h(\252)p Fb(\\)p Fg(\272,)h(\252)p Fb([...])p Fg(\272,)f(etc.\).) 1019 778 y(On)7 b(the)g(other)g(hand,)h(special)f(syntactic)g(constructs)g (such)g(as)h(the)f(UNIX)1019 828 y(\252.\272)21 b(and)13 b(\252..\272)22 b(are)12 b(handled)g(by)g(scanning)f(path)h(names)h(on)f(the)g(client)1019 878 y(side,)f(and)g(do)f(not)f(require)i(any)f(knowledge)g(on)g(the)h(server) n(.)16 b(Symbol-)1019 928 y(ic)e(links)f(may)h(easily)g(be)g(interpreted)f (in)g(a)i(client-speci\256c)f(way)m(,)i(for)1019 978 y(example)10 b(to)e(allow)h(embedded)g(variables)h(or)e(to)h(support)e(dif)o(ferent)i(re-) 1019 1027 y(lationships)g(with)g(the)i(UNIX)f(\252..\272)18 b(construct.)d(Finally)m(,)c(there)f(is)h(little)1019 1077 y(dependency)f(between)h(individual)d(servers:)15 b(a)10 b(server)h(does)f (not)g(need)1019 1127 y(to)d(know)h(where)h(is)e(it)h(\252mounted\272)g(in)g (the)g(global)f(name)i(space,)h(and)e(the)1019 1177 y(clients)i(can)i (naturally)d(apply)i(various)f(re-authentication)f(operations)1019 1227 y(whenever)i(the)f(resolving)e(loop)h(moves)i(from)f(one)g(server)h(to)e (another)n(.)1060 1276 y(This)k(scheme)h(also)f(minimizes)g(the)f(number)h (of)g(client-server)f(in-)1019 1326 y(teractions)g(by)g(allowing)f(multiple)g (components)i(of)f(a)h(path)f(name)i(to)1019 1376 y(be)c(handled)g(at)g (once,)h(but)e(it)g(may)h(still)f(require)g(each)i(name)g(resolving)1019 1426 y(operation)i(to)g(contact)h(more)g(than)f(one)h(server)n(,)i(or)e(the)f (same)j(server)1019 1476 y(more)9 b(than)g(once.)15 b(A)9 b(special)h (caching)f(mechanism)h(described)f(below)1019 1526 y(alleviates)h(this)f(dif) o(\256culty)m(.)1019 1635 y Fe(D.)42 b(Name)10 b(Space)h(Organization)1019 1713 y Fg(The)k(naming)e(subtrees)h(managed)h(by)f(dif)o(ferent)f(servers)i (can)f(be)h(as-)1019 1763 y(sembled)d(into)e(a)i(single)f(global)f(name)j (space)g(through)d(mount)g(points)1019 1812 y(in)f(ancillary)h(servers)h (called)f Fe(root)g(name)g(servers)p Fg(.)17 b(These)11 b(servers)g(are)1019 1862 y(standard)j(components)g(of)g(all)g(emulation)f(systems.)28 b(They)14 b(support)1019 1912 y(directories,)h(mount)f(points)f(and)h (symbolic)g(links,)h(but)f(no)g(terminal)1019 1962 y(entries.)h(They)9 b(do)g(not)g(maintain)f(any)i(persistent)e(storage;)h(their)g(nam-)1019 2012 y(ing)14 b(hierarchy)g(must)h(be)g(created)h(dynamically)e(during)f(the) i(system)1019 2061 y(startup)c(and)i(con\256guration)d(process.)22 b(Using)12 b(one)g(or)g(more)h(of)f(these)1019 2111 y(servers,)k(it)d(is)h (possible)f(to)h(construct)f(a)i(variety)e(of)h(global)f(name)i(s-)1019 2161 y(paces)d(to)f(\256t)g(dif)o(ferent)f(needs.)18 b(Note)11 b(however)g(that)g(this)f(mechanism)1019 2211 y(does)h(not)f(in)h(itself)f (provide)g(any)h(guarantees)h(of)f(consistency)g(for)f(the)1019 2261 y(resulting)g(system.)18 b(In)11 b(particular)n(,)h(it)e(is)h(possible)f (to)h(create)i(cycles)f(in)1019 2310 y(the)f(name)i(space,)g(and)e(to)g (structure)g(the)g(name)i(space)f(in)f(such)h(a)g(way)1019 2360 y(that)g(symbolic)f(links)h(across)h(servers)g(are)g(meaningless.)22 b(Such)12 b(con-)1019 2410 y(cerns)h(should)e(be)i(addressed)g(manually)f(by) g(system)h(administrators,)1019 2460 y(or)8 b(through)f(automatic)i (con\256guration)e(mechanisms)j(that)e(are)h(outside)1019 2510 y(of)h(the)g(scope)h(of)f(the)g(naming)g(subsystem.)1060 2560 y(In)i(addition)d(to)i(this)f(global)h(name)h(space,)h(each)g(client)e(of)g (the)g(sys-)1019 2609 y(tem)i(may)h(maintain)f(a)h(separate)g Fe(prefix)g(table)p Fg(.)24 b(This)13 b(table)g(contains)1019 2659 y(a)i(set)g(of)f(path)h(name)g(pre\256xes,)i(and)e(corresponding)e (proxy)g(objects)1019 2709 y(representing)h(items)g(in)g(the)g(name)h(space)h (that)e(are)h(associated)g(with)1019 2759 y(those)g(pre\256xes.)31 b(Every)16 b(name)g(resolution)d(performed)j(by)f(a)h(client)1019 2809 y(starts)9 b(with)g(a)h(search)h(in)f(the)f(pre\256x)h(table)g(to)f (\256nd)g(an)h(initial)e(directory)988 2933 y(4)p eop %%Page: 5 5 bop -71 -30 a Fg(to)14 b(handle)f(the)h(path)f(name.)27 b(This)13 b(mechanism)i(is)f(used)g(for)f(several)-71 20 y(functions:)-29 108 y Fc(\017)20 b Fg(some)10 b(pre\256xes)f(established)f(at)h(bootstrap)e (time)i(represent)g(a)g(few)12 158 y(key)18 b(directories)f(in)g(the)g(name)h (space.)38 b(They)18 b(provide)e(good)12 207 y(starting)e(points)f(for)i (name)h(resolution)d(without)g(incurring)g(the)12 257 y(overhead)j(of)e (contacting)g(a)i(single)e(server)h(implementing)f(the)12 307 y("root")i(directory)m(.)33 b(In)17 b(addition,)f(these)h(pre\256xes)g(can)h (be)e(set-)12 357 y(up)e(to)f(adapt)g(the)h(client')n(s)e(view)i(of)f(the)h (common)g(name)g(space)12 407 y(to)g(match)g(the)f(expectations)h(of)f(a)h (particular)f(tar)o(get)h(operating)12 457 y(system)d(emulation.)-29 546 y Fc(\017)20 b Fg(pre\256xes)9 b(can)f(be)g(used)g(as)g(a)g(cache)h(for)e (name)i(resolving,)e(to)g(avoid)12 596 y(the)j(processing)e(of)h(mount)g (points)f(and)h(symbolic)f(links)h(on)f(each)12 646 y(lookup,)13 b(and)g(to)f(direct)h(the)f(client)g(immediately)h(to)f(the)h(server)12 696 y(containing)c(the)h(requested)h(object.)-29 785 y Fc(\017)20 b Fg(pre\256xes)11 b(that)e(can)h(be)g(rede\256ned)g(freely)g(by)f(the)h (client)f(itself)g(can)12 835 y(be)15 b(used)g(to)f(dynamically)g(modify)g (that)g(client')n(s)f(name)j(space.)12 885 y(A)g(simple)f(application)e(of)i (this)f(feature)i(is)f(for)f(the)h(emulation)12 935 y(of)10 b(the)f(UNIX)g(\252current)h(working)e(directory\272)h(or)g(VMS)h (\252logical)12 984 y(names\272.)26 b(A)14 b(more)f(complicated)h (application)d(is)i(to)g(let)g(clients)12 1034 y(customize)g(their)f(name)i (space)g(by)e(adding)f(subtrees)i(from)f(per)o(-)12 1084 y(sonal)h(servers,)h (or)e(even)g(by)g(masking)h(existing)e(path)h(names)h(to)12 1134 y(redirect)e(them)f(to)g(other)f(subtrees.)20 1266 y Fk(V)-6 b(.)50 b(DISCUSSION)11 b(AND)h(APPLICA)-6 b(TIONS)-71 1362 y Fg(The)14 b(description)e(above)h(has)g(been)h(centered)g(on)e(a)i(set)f (of)g(tools)e(and)-71 1411 y(features,)i(independently)d(of)h(how)h(these)g (tools)e(can)i(be)g(put)f(to)g(use)h(in)-71 1461 y(practice.)26 b(The)14 b(following)d(sections)j(describe)g(the)f(design)g(of)g(a)h(few)-71 1511 y(practical)9 b(applications)e(that)h(may)h(use)h(the)e(common)h(naming) f(facility)m(,)-71 1561 y(and)i(discusses)h(how)e(the)h(various)f(aspects)h (of)g(this)f(facility)f(contribute)-71 1611 y(to)i(the)g(complete)h(systems)g (under)f(consideration.)-71 1730 y Fe(A.)43 b(UNIX)10 b(4.3)g(BSD)h (Emulation)-71 1811 y Fg(The)k(main)f(application)e(of)i(the)g(naming)f (facility)g(is)g(a)i(prototype)d(U-)-71 1861 y(NIX)d(4.3)g(BSD)g(emulation)f (system)h(currently)f(under)g(development)g(at)-71 1910 y(CMU,)14 b(that)f(is)g(used)g(as)h(a)g(tool)e(for)h(the)g(evaluation)g(of)g(all)g(the) g(ideas)-71 1960 y(proposed)h(in)g(the)g(design)g(of)g(the)g(common)g (emulation)g(framework.)-71 2010 y(The)d(implementation)f(of)g(this)f(BSD)h (prototype)f(is)h(not)g(yet)g(complete,)-71 2060 y(but)h(lar)o(ge)g(portions) e(are)j(now)e(operational)g(\(starting)g(a)h(shell,)g(execut-)-71 2110 y(ing)j(simple)g(commands)h(and)f(editors,)h(compiling)e(programs,)i (etc.\).)-71 2159 y(It)d(appears)g(that)f(the)h(common)g(naming)g(scheme)h (is)f(working)e(well)h(in)-71 2209 y(this)f(context.)-29 2261 y(The)e(core)f(of)g(the)g(name)i(space)f(seen)g(by)f(UNIX)g(emulated)g (processes)-71 2310 y(in)16 b(this)f(system)h(is)g(provided)f(by)h(one)g(or)f (more)i Fe(UNIX)i(file)f(system)-71 2360 y(servers)11 b Fg(\(UFS\),)d(each)h (of)f(which)g(exports)g(all)f(the)h(\256les)h(and)f(directories)-71 2410 y(of)g(one)h(disk)f(partition)e(as)j(a)g(subtree)f(of)g(items)h (following)d(the)i(standard)-71 2460 y(naming)18 b(interface.)39 b(T)m(ypically)m(,)20 b(one)f(such)f(server)h(is)f(attached)g(to)-71 2510 y(the)f(pre\256x)h(\252/\272)f(in)g(a)h(UNIX-speci\256c)f(pre\256x)g (table)g(that)g(is)g(part)g(of)-71 2560 y(each)f(client')n(s)d(emulation)g (library)m(.)25 b(This)14 b(pre\256x)g(table)g(performs)g(all)-71 2609 y(necessary)k(translations)c(between)i(the)g(standard)g(naming)f (interface)-71 2659 y(and)c(the)f(corresponding)f(UNIX)i(interface.)16 b(Other)10 b(\256le)h(systems)g(may)-71 2709 y(be)g(directly)e (\252mounted\272)h(with)f(other)g(pre\256xes,)i(eliminating)d(the)i(need)-71 2759 y(for)h(interaction)g(with)f(a)i(mount)f(table)g(in)g(a)h(primary)f (\256le)h(server)g(or)f(in)-71 2809 y(a)g(specialized)g(server)g(for)f(each)h (UNIX)f Fb(open\(\))g Fg(operation.)1060 -30 y(Other)d(UNIX)g(objects)g(such) g(as)g Fe(tty's)p Fg(,)f(devices,)i(pipes)f(and)g(many)g(\257a-)1019 20 y(vors)i(of)h(sockets)g(are)h(all)f(implemented)f(as)i(items)f(in)f (separate)i(servers)1019 70 y(that)f(export)g(them)h(through)e(their)h(own)g (internal)g(directories)g(or)h(nam-)1019 120 y(ing)i(subtrees.)26 b(T)o(ransparent)14 b(symlinks)f(in)g(the)h(\256le)g(server)g(are)h(used)1019 169 y(whenever)c(such)f(an)h(item)f(must)h(be)f(made)i(visible)d(somewhere)i (in)f(the)1019 219 y(UNIX)h(\256le)h(system)f(space.)20 b(T)m(o)11 b(provide)g(a)g(context)g(for)g(the)g(interpre-)1019 269 y(tation)d(of)g (these)i(transparent)f(symlinks,)f(as)i(well)f(as)h(to)e(provide)g(a)i(way) 1019 319 y(for)k(emulation)g(libraries)g(to)g(manipulate)h(the)g(tar)o(get)f (items)h(directly)1019 369 y(and)g(to)g(create)h(new)g(items,)h(all)e(the)g (relevant)g(servers)h(are)g(attached)1019 418 y(to)e(mount)f(points)g(in)h(a) h(single)e(root)h(name)h(server)n(,)i(that)d(is)g(itself)f(at-)1019 468 y(tached)c(to)g(a)g(\252/servers\272)h(pre\256x.)15 b(For)9 b(example,)h(to)e(create)i(a)g(new)f(UDP)1019 518 y(socket,)16 b(the)f(UNIX)f(emulation)g(library)g(might)g(simply)f(resolve)i(the)1019 568 y(name)10 b Fb(/servers/net/udp)p Fg(,)e(and)h(invoke)f(a)h(socket)g (creation)g(op-)1019 618 y(eration)j(on)h(the)f(directory)g(returned)h(by)f (this)g(lookup.)22 b(This)12 b(scheme)1019 667 y(has)e(the)f(major)g (advantage)g(of)g(not)g(requiring)e(each)k(\256le)e(server)h(to)e(sup-)1019 717 y(port)g(complex)h(\252foreign\272)h(entries)f(in)f(its)h(name)h(space)h (beyond)d(simple)1019 767 y(transparent)14 b(symlinks)f(that)h(can)h(easily)g (be)g(implemented)f(with)f(the)1019 817 y(help)i(of)g(ordinary)f(symbolic)h (links,)h(even)g(though)d(a)j(native)f(UNIX)1019 867 y(implementation)9 b(would.)1060 918 y(Finally)m(,)16 b(the)g(pre\256x)f(table)g(also)g (maintains)g(several)h(elements)g(of)1019 967 y(UNIX)h(user)h(state)f (without)f(requiring)f(any)j(support)d(from)j(system)1019 1017 y(servers.)24 b(The)13 b(main)g(examples)h(of)e(such)h(state)g(are)h(the)f (UNIX)f(\252cur)o(-)1019 1067 y(rent)g(directory\272,)i(the)f(\252current)g (root\272)f(as)h(established)g(by)f(the)h(UNIX)1019 1117 y Fb(chroot\(\))j Fg(system)g(call,)j(and)d(the)g(\252controlling)e (terminal\272)j(\()p Fe(/de-)1019 1167 y(v/tty)p Fg(\).)1019 1283 y Fe(B.)42 b(Segregated)10 b(Name)h(Servers)1019 1363 y Fg(In)e(the)h(examples)g(discussed)g(so)g(far)n(,)h(the)e(same)i(server)g (is)e(managing)h(a)1019 1413 y(number)i(of)g(\252terminal\272)h(items)f(and)g (the)g(portion)e(of)i(the)g(name)i(space)1019 1463 y(in)e(which)f(these)i (items)f(are)h(located.)22 b(Such)12 b(an)h(or)o(ganization)e(can)i(be)1019 1512 y(referred-to)8 b(as)h(an)f Fe(integrated)f(name)h(server)p Fg(.)17 b(However)n(,)9 b(there)g(are)g(in-)1019 1562 y(stances)g(where)f(it) e(is)i(advantageous)f(to)g(separate)i(these)f(two)f(functions,)1019 1612 y(with)g(an)h(or)o(ganization)f(called)h(a)h Fe(segregated)f(name)g (server)p Fg(.)17 b(One)8 b(such)1019 1662 y(case)15 b(is)e(presented)h(by)f (a)i(secure)f(UNIX)g(implementation)e(currently)1019 1712 y(being)d (implemented)h(in)f(the)h(Mach)g(emulation)f(framework,)i(tar)o(geted)1019 1761 y(at)f(the)g(B3)g(level)f(of)h(security[13)o(].)15 b(In)10 b(this)f(system,)i(all)e(operations)g(by)1019 1811 y(which)j(clients)g(gain)g (access)j(to)c(items)i(are)g(concentrated)g(in)f(a)h(single)1019 1861 y(central)g(name)g(server)h(that)e(is)g(subject)h(to)f(very)g(careful)h (veri\256cation,)1019 1911 y(and)e(that)f(operates)h(at)g(a)h(high)e(level)g (of)h(trust.)16 b(The)c(items)e(themselves)1019 1961 y(are)16 b(managed)h(by)e(a)h(number)f(a)h(separate)h Fe(item)g(managers)e Fg(that)g(are)1019 2010 y(typically)c(not)g(as)i(trusted)f(as)h(the)f(name)h (server)n(.)22 b(In)12 b(some)h(cases,)i(the)1019 2060 y(low-level)9 b(security)g(mechanisms)i(of)f(the)f(system)i(may)f(even)g(prevent)1019 2110 y(those)j(item)g(managers)h(from)f(transferring)f(port)g(rights)g(to)g (and)h(from)1019 2160 y(their)c(clients,)h(thereby)g(making)f(it)h (impossible)f(for)g(them)h(to)g(grant)f(ac-)1019 2210 y(cess)i(to)e(services) h(directly)m(.)k(Under)c(these)g(conditions,)e(the)h(operations)1019 2260 y(exported)f(by)g(each)i(item,)f(that)f(deal)h(with)e(the)i(protection)e (of)h(that)g(item,)1019 2309 y(must)j(be)g(handled)f(by)h(the)g(name)g (server)h(and)f(not)f(the)h(item)f(manager:)1019 2359 y(get/set)15 b(access)j(control)c(list,)i(authenticate)f(user)h(credentials,)h(audit)1019 2409 y(the)10 b(granting)f(and)h(releasing)g(of)g(access)j(to)c(the)h(item,)h (etc.)1060 2460 y(The)g(common)f(naming)g(facilities)f(support)f(an)j (implementation)d(of)1019 2510 y(this)15 b(architecture,)j(based)f(on)f(a)g (few)h(special)f(mechanisms.)34 b(First,)1019 2560 y(the)16 b(name)h(resolving)e(and)h(item)g(creation)g(operations)g(are)h(handled)1019 2609 y(by)11 b(directories)g(in)g(the)g(name)i(server)n(,)g(which)e(must)h (interact)f(with)f(the)1019 2659 y(item)i(manager)i(to)e(determine)g(exactly) h(what)f(to)g(return)g(to)f(the)i(client)1019 2709 y(and)f(themselves)h (construct)f(the)h(proxy)e(and)h(send)h(rights)e(to)h(be)h(used)1019 2759 y(for)f(client)g(access.)24 b(This)13 b(interaction)e(follows)g(an)i (internal)f(protocol)1019 2809 y(independent)g(of)h(the)g(common)h(naming)f (interface.)24 b(While)13 b(such)h(an)988 2933 y(5)p eop %%Page: 6 6 bop -71 -30 a Fg(interaction)14 b(is)g(taking)g(place)h(to)f(decide)h(on)g (the)f(creation)h(of)f(a)h(new)-71 20 y(item,)i(the)f(name)g(server)g(must)f (protect)g(the)h(tentative)e(name)j(of)e(the)-71 70 y(new)f(item)f(in)f(its)g (containing)g(directory)m(.)22 b(This)13 b(can)h(be)f(achieved)h(by)-71 120 y(delaying)d(the)h(execution)f(of)h(other)f(con\257icting)g(operations)g (until)f(the)-71 169 y(creation)i(is)f(complete,)h(or)f(by)g(exporting)f(a)i (special)g(\252reserved\272)h(item)-71 219 y(as)e(a)g(place-holder)f(when)g (appropriate.)-29 270 y(Second,)j(since)g(some)g(item)f(operations)f(must)h (be)g(handled)g(by)g(the)-71 320 y(name)k(server)n(,)h(each)f(proxy)d(for)h (terminal)g(items)h(must)f(contain)g(two)-71 370 y(send)f(rights.)18 b(One)13 b(of)e(these)i(rights)d(is)i(used)g(to)f(send)h(requests)g(to)g(the) -71 419 y(name)i(server)n(,)f(and)f(the)g(other)g(is)g(used)g(to)g(send)g (requests)g(to)g(the)g(item)-71 469 y(manager)n(.)29 b(The)15 b(proxy)e(code)i(itself)f(may)h(perform)f(the)g(appropriate)-71 519 y(dispatching,)h(thanks)f(to)g(the)g(lar)o(ge)h(degree)h(of)e(separation) g(between)-71 569 y(the)d(primitives)d(in)i(the)g(name)h(service)g (interface.)-71 684 y Fe(C.)42 b(Extension)10 b(to)g(Large)g(Distributed)f (Systems)-71 764 y Fg(A)15 b(third)e(area)i(of)f(interest,)h(which)f(is)g (still)f(mostly)g(of)h(a)h(speculative)-71 813 y(nature)7 b(in)g(the)f (context)h(of)f(the)h(present)g(system,)h(is)f(the)g(extension)f(of)h(the)-71 863 y(name)i(space)g(available)f(in)f(a)h(single)f(emulation)g(system)h(to)f (encompass)-71 913 y(much)k(lar)o(ger)g(domains.)k(The)c(common)g(naming)f (facilities)g(of)o(fer)g(two)-71 963 y(main)h(approaches)g(to)f(address)g (this)g(issue:)-29 1013 y(First,)h(the)h(same)h(\257exibility)c(and)i (simplicity)f(of)h(the)g(service)h(inter)o(-)-71 1063 y(faces)h(that)e(make)i (them)e(suitable)g(for)g(use)h(in)f(a)h(variety)f(of)g(emulation)-71 1113 y(systems)e(also)f(facilitate)g(the)f(integration)g(in)g(such)h(a)h (system)f(of)g(special)-71 1163 y(servers)h(that)e(act)i(as)f(gateways)h (into)d(other)h(names)i(spaces)h(or)d(distribut-)-71 1213 y(ed)j(systems.)15 b(One)9 b(very)g(simple)g(example)h(of)f(this)f(approach)h(is)g(a)h Fe(NFS)-71 1263 y(server)k Fg(used)d(in)g(the)g(BSD)g(emulation)g(prototype,) f(that)h(translates)g(lo-)-71 1312 y(cal)k(naming)f(requests)h(and)f (forwards)g(them)h(over)f(a)h(network)e(using)-71 1362 y(the)c(NFS)h (protocol[14)n(];)f(other)f(systems)i(that)f(may)g(be)h(considered)f(for)-71 1412 y(integration)e(along)i(the)f(same)j(principle)c(range)j(from)f (straightforward)-71 1462 y(distributed)g(\256le)h(systems)i(to)e(less)h (conventional)e(distributed)f(naming)-71 1512 y(services.)28 b(When)15 b(necessary)m(,)i(the)d(gateways)h(may)g(extend)f(to)g(func-)-71 1561 y(tionality)h(of)h(the)h(basic)g(naming)g(system,)i(either)e(by)f (adding)g(more)-71 1611 y(structure)e(to)g(the)h(lar)o(gely)f(structure-free) g(pathnames,)j(or)d(by)g(build-)-71 1661 y(ing)9 b(upon)g(the)h (object-oriented)e(nature)h(of)h(the)f(interfaces)h(to)g(add)f(new)-71 1711 y(primitive)g(operations.)-29 1762 y(Second,)15 b(since)f(Mach)g(IPC)f (is)g(the)g(primary)g(mode)h(of)f(communi-)-71 1811 y(cation)g(between)g (components,)g(it)f(is)g(possible)g(for)g(clients)g(to)g(access)-71 1861 y(servers)g(on)f(other)f(nodes)h(or)g(other)g(systems)g(directly)m(.)17 b(Since)12 b(there)f(is)-71 1911 y(no)f(requirement)g(that)f(the)h(global)f (name)h(space)i(formed)e(by)f(all)h(acces-)-71 1961 y(sible)h(servers)g(be)g (strictly)e(hierarchical,)i(and)g(since)g(servers)g(need)g(not)-71 2011 y(be)e(aware)g(of)f(their)f(own)h(location)e(in)i(that)f(name)i(space,)i (any)d(combina-)-71 2060 y(tion)h(of)g(root)f(name)j(servers,)f(mount)f (points)f(and)h(pre\256xes)h(is)g(allowed.)-71 2110 y(Individual)c(servers)j (or)e(groups)g(of)h(servers)g(may)h(be)f(made)h(available)e(at)-71 2160 y(arbitrary)j(locations)f(in)h(the)g(name)i(space)f(of)f(remote)h (clients,)g(without)-71 2210 y(af)o(fecting)g(in)f(any)g(way)h(the)g (operation)e(of)h(the)h(local)f(system)h(to)f(which)-71 2260 y(these)j(servers)g(participate.)21 b(The)13 b(pre\256x)g(table,)g(by)f (generalizing)g(the)-71 2310 y(notion)g(of)h(\252root\272,)h(allows)f(such)g (extensions)g(of)f(the)h(name)i(space)f(to)-71 2359 y(be)h(gracefully)e (integrated)h(in)f(an)i(existing)e(system,)j(and)e(eliminates)-71 2409 y(most)f(of)g(the)g(performance)h(issues)f(associated)h(with)e(scale)i (on)f(more)-71 2459 y(centralized)e(systems.)-29 2510 y(The)d Fe(netname)e(service)j Fg(provided)c(by)i(the)g(basic)g(Mach)h(network)e(IPC) -71 2560 y(facility)g(constitutes)g(a)i(convenient)f(mechanism)h(for)f (bootstrapping)e(of)-71 2609 y(such)k(inter)o(-node)e(relationships.)13 b(This)c(service)g(implements)f(a)h(simple)-71 2659 y(unprotected)15 b(remote)i(lookup)d(for)h(selected)i(send)f(rights)f(identi\256ed)-71 2709 y(by)f(the)g(combination)e(of)i(an)g(IP)g(address)h(and)f(a)g (single-level)f(name.)-71 2759 y(The)d(initial)c(access)11 b(to)d(a)h(foreign)e(name)j(space)g(is)e(established)g(through)-71 2809 y(the)j(lookup)e(of)i(an)g(\252un-authenticated\272)f(send)h(right)f (for)g(an)h(appropri-)1019 -30 y(ate)j(base)h(directory)e(in)h(a)g(remote)h (server)n(,)h(with)d(which)g(a)i(client)e(can)1019 20 y(construct)g(a)h (simple)f(proxy)g(and)h(re-authenticate)f(to)g(obtain)f(a)j(more)1019 70 y(complete)10 b(proxy)g(under)g(the)g(standard)g(access)i(mediation)e (facilities.)1060 120 y(The)i(netname)g(identi\256cations)d(of)i(such)g (remote)g(initial)e(ports)h(may)1019 169 y(simply)c(be)i(transmitted)e (outside)g(the)h(realm)h(of)f(the)g(distributed)e(system)1019 219 y(altogether)n(,)11 b(or)f(they)g(may)h(be)g(stored)g(as)g(strings)e(in)h (other)g(established)1019 269 y(name)i(services)f(such)g(as)h(the)e(Internet) g(BIND)g(facility[15)n(].)17 b(W)n(ith)10 b(the)1019 319 y(latter)d(scheme,)i (it)e(is)g(conceivable)g(to)g(provide)f(each)i(local)f(system)h(with)1019 369 y(a)14 b(special)g(gateway)g(server)h(that)e(gives)g(it)g(access)j(to)d (a)h(\252super)o(-root\272)1019 418 y(grouping)8 b(all)i(the)g(Mach)h(3.0)f (systems)h(on)f(a)h(network.)1138 540 y Fk(VI.)49 b(SUMMAR)m(Y)13 b(AND)g(OPEN)f(ISSUES)1019 633 y Fg(A)7 b(\257exible)g(naming)g(facility)g (is)g(a)h(powerful)e(tool)g(to)h(construct)f(systems)1019 683 y(by)i(assembling)h(a)g(collection)f(of)g(independent)g(servers)h(with)f (minimal)1019 733 y(per)o(-system)g(ef)o(fort.)14 b(The)9 b(facility)d (described)i(here)h(ful\256lls)d(this)h(role)g(by)1019 782 y(providing)h(a)k(uniform)d(mechanism)j(to)f(connect)g(clients)f(and)h (servers,)1019 832 y(to)g(handle)h(access)i(mediation,)e(to)f(locate)h (objects)g(in)f(complex)h(name)1019 882 y(spaces,)i(and)e(to)f(integrate)g (arbitrary)g(servers)h(in)f(the)h(overall)f(system.)1019 932 y(It)i(supports)f(the)i(general)g(requirements)f(of)g(a)i(variety)e(of)g (emulation)1019 982 y(systems)d(and)g(is)f(a)i(good)e(starting)f(point)g(for) h(use)h(in)f(lar)o(ger)h(distributed)1019 1031 y(systems.)1060 1081 y(W)m(e)k(continue)e(to)g(experiment)h(with)f(our)g(BSD)h(prototype,)g (and)g(to)1019 1131 y(re\256ne)d(the)e(design)h(of)g(the)f(common)i (emulation)e(framework)h(to)f(match)1019 1181 y(our)15 b(experiences)h(and)f (meet)i(new)e(requirements)g(as)h(we)g(encounter)1019 1231 y(them.)f(A)10 b(few)f(of)h(this)e(issues)i(under)f(consideration)f(in)h(the) h(context)e(of)1019 1280 y(the)i(naming)g(subsystem)g(are:)1060 1358 y Fc(\017)21 b Fg(The)8 b(name)h(service)g(protocol)d(may)j(have)f(to)f (be)h(extended)g(to)f(sup-)1102 1407 y(port)i(an)i(integrated)f(facility)f (for)h(mandatory)g(locking)f(of)h(access)1102 1457 y(to)15 b(items.)31 b(Currently)m(,)16 b(such)g(functions)e(are)i(implemented)f(by) 1102 1507 y(specialized)c(item)f(operations)f(outside)h(the)g(naming)g (facility)m(.)1060 1587 y Fc(\017)21 b Fg(The)9 b(naming)e(facility)g (exports)h(only)f(simple)h(items)g(and)g(general-)1102 1637 y(ly)h(avoids)g(manipulating)f(servers)i(as)g(a)g(whole.)15 b(There)10 b(is)f(a)i(need)1102 1687 y(for)k(an)g(abstraction)g(representing) g(a)g(server)h(itself)f(for)g(system)1102 1737 y(management.)1060 1817 y Fc(\017)21 b Fg(Symbolic)9 b(links)g(are)i(insuf)o(\256ciently)d (speci\256ed.)16 b(Their)10 b(interpre-)1102 1866 y(tation)c(depends)i(on)f (each)i(client')n(s)e(pre\256x)h(table,)g(and)g(can)g(only)f(be)1102 1916 y(kept)13 b(consistent)h(through)e(strong)g(conventions)h(regarding)g (the)1102 1966 y(contents)h(of)g(such)g(pre\256x)h(tables.)27 b(In)14 b(addition,)g(we)h(may)g(also)1102 2016 y(wish)f(to)h(de\256ne)g (symbolic)f(links)g(that)g(are)i(relative)e(to)h(special)1102 2066 y(points)7 b(in)i(the)f(name)i(space,)h(beside)e(the)g(directory)e(that) i(contains)1102 2116 y(the)h(link)f(itself.)1060 2196 y Fc(\017)21 b Fg(The)9 b(pre\256x)g(table)f(considerably)g(complicates)h(the)f (transmission)1102 2245 y(of)15 b(a)h(client')n(s)f(context)g(for)g(remote)h (execution.)30 b(Mechanisms)1102 2295 y(must)13 b(be)h(designed)f(to)g (simplify)f(this)g(operation.)23 b(In)13 b(addition,)1102 2345 y(more)i(facilities)f(are)h(needed)h(to)e(manage)i(pre\256x)f(table)f (entries)1102 2395 y(that)c(are)h(shared)f(between)h(multiple)e(clients.)1280 2517 y Fk(ACKNOWLEDGMENTS)1019 2609 y Fg(The)f(work)f(discussed)h(here)g (incorporates)f(contributions)e(from)i(a)h(great)1019 2659 y(number)j(of)f(people)g(at)h(Carnegie)g(Mellon,)f(at)g(the)h(Research)h (Institute)1019 2709 y(of)j(the)f(Open)h(Software)g(Foundation)e(and)i(at)g (T)o(rusted)g(Information)1019 2759 y(Systems.)35 b(The)18 b(list)d(of)i(names)h(has)f(now)f(grown)g(too)g(lar)o(ge)i(to)e(be)1019 2809 y(printed,)9 b(but)h(the)g(ef)o(forts)g(of)g(everyone)g(are)h(greatly)f (appreciated.)988 2933 y(6)p eop %%Page: 7 7 bop 297 -30 a Fk(REFERENCES)-40 52 y Ff([1])20 b(R.)9 b(Rashid,)e(R.)i (Baron,)e(A.)i(Forin,)f(D.)g(Golub,)g(M.)g(Jones,)f(D.)h(Julin,)g(D.)g(Orr)o (,)g(and)19 92 y(R.)13 b(Sanzi,)f(\252Mach:)18 b(A)12 b(foundation)e(for)h (open)f(systems,\272)i(in)g Fa(Proceedings)g(of)19 131 y(the)d(Second)f (Workshop)f(on)i(Workstation)f(Operating)g(Systems)p Ff(,)g(pp.)h (109\261113,)19 171 y(IEEE)h(Computer)d(Society)n(,)h(September)f(1989.)-40 243 y([2])20 b(R.)13 b(D.)g(Sansom,)g(D.)g(P)l(.)h(Julin,)f(and)f(R.)h(F)m(.) g(Rashid,)g(\252Extending)e(a)h(capability)19 283 y(based)c(system)h(into)g (a)g(network)f(environment,\272)g(in)h Fa(Proceedings)f(of)i(the)f(ACM)19 322 y(SIGCOMM)j(86)f(Symposium)g(on)g(Communication)f(Architectures)i(and)f (Pro-)19 362 y(tocols)p Ff(,)h(pp.)f(265\261274,)e(ACM,)i(August)f(1986.)19 b(Also)11 b(available)f(as)h(T)n(echnical)19 401 y(Report)d(CMU-CS-86-115.) -40 474 y([3])20 b(L.-F)m(.)12 b(Cabrera)d(and)g(J.)h(W)n(yllie,)h (\252QuickSilver)e(distributed)f(\256les)j(services:)j(An)19 513 y(architecture)8 b(for)h(horizontal)f(growth,\272)g(T)n(ech.)h(Rep.)g(RJ) g(5578,)f(IBM)h(Almaden)19 553 y(Research)e(Center)o(,)h(Apr)n(.)h(1987.)-40 625 y([4])20 b(D.)13 b(Cheriton)f(and)f(T)n(.)i(P)l(.)g(Mann,)f (\252Decentralizing)f(a)h(global)f(naming)g(service)19 665 y(for)g(improved)f(performance)f(and)h(fault)h(tolerance,\272)g Fa(ACM)i(Transactions)e(on)19 704 y(Computer)c(Systems)p Ff(,)h(vol.)g(7,)g (pp.)g(147\261183,)e(May)h(1989.)-40 777 y([5])20 b(D.)10 b(Comer)e(and)h(T)n (.)g(P)l(.)h(Murtaugh,)e(\252The)h(Tilde)g(\256le)h(naming)d(scheme,\272)i (in)g Fa(Pro-)19 816 y(ceedings)f(of)h(the)f(6th)h(International)e (Conference)g(on)h(Distributed)h(Computing)19 856 y(Systems)p Ff(,)f(pp.)g(509\261514,)e(IEEE,)j(May)e(1986.)-40 928 y([6])20 b(M.)11 b(Guillemont)e(and)h(J.)g(L.)h(Martins,)g(\252UNIX)f(into)g(the)g (distribution)f(age:)16 b(the)19 968 y(CHORUS)8 b(operating)e(system.\272)h (Internal)f(document,)g(INRIA,)i(number)e(EXP)i(4)19 1007 y(540.6,)g(1987.) -40 1080 y([7])20 b(B.)6 b(W)m(.)h(Lampson,)e(\252Designing)t(a)g(global)g (name)t(service,\272)g(in)h Fa(Proceedings)s(of)g(the)19 1119 y(Fifth)k(Annual)e(ACM)i(Symposium)d(on)h(Principles)h(of)g(Distributed)g (Computing)p Ff(,)19 1159 y(pp.)f(1\26110,)f(ACM,)h(Aug.)g(1986.)-40 1231 y([8])20 b(K.)11 b(Lantz,)h(J.)f(Edighof)o(fer)o(,)g(and)e(B.)j(Hitson,) f(\252T)n(owards)e(a)i(universal)f(directory)19 1271 y(service,\272)k(in)f Fa(Proceedings)h(of)i(the)g(Fourth)f(Annual)g(ACM)h(Symposium)e(on)19 1310 y(Principles)8 b(of)g(Distributed)g(Computing)p Ff(,)f(pp.)h (250\261260,)e(ACM,)i(Aug.)g(1985.)-40 1383 y([9])20 b(S.)15 b(J.)e(Mullender)o(,)g(G.)h(van)e(Rossum,)j(A.)e(S.)h(T)n(anenbaum,)f(R.)h (van)e(Renesse,)19 1422 y(and)d(H.)h(van)f(Staveren,)g(\252Amoeba)f(\261)i(a) f(distributed)g(operating)f(system)h(for)h(the)19 1462 y(1990s,\272)d Fa(IEEE)i(Computer)e(Magazine)p Ff(,)g(vol.)h(23,)g(May)f(1990.)-57 1534 y([10])20 b(D.)11 b(B.)f(T)n(erry)n(,)g(\252Structure-free)f(name)g (management)f(for)h(evolving)f(distributed)19 1574 y(environments,\272)h(in)i Fa(Proceedings)e(of)j(the)f(6th)g(International)f(Conference)g(on)19 1613 y(Distributed)e(Computing)f(Systems)p Ff(,)h(pp.)f(502\261508,)f(IEEE,)k (May)d(1986.)-57 1686 y([11])20 b(B.)13 b(W)m(elch)g(and)f(J.)g(Ousterhout,)h (\252Pre\256x)g(tables:)20 b(A)13 b(simple)f(mechanism)f(for)19 1725 y(locating)f(\256les)h(in)f(a)h(distributed)e(system,\272)i(in)f Fa(Proceedings)g(of)h(the)h(6th)f(Inter-)19 1765 y(national)g(Conference)f (on)i(Distributed)f(Computing)g(Systems)p Ff(,)g(pp.)f(184\261189,)19 1804 y(IEEE,)g(May)d(1986.)-57 1877 y([12])20 b(M.)10 b(Shapiro,)g (\252Structure)f(and)f(encapsulation)g(in)h(distributed)g(computing)f(sys-)19 1916 y(tems:)23 b(the)14 b(Proxy)f(principle,\272)h(in)g Fa(The)i(6th)g (International)f(Conference)f(on)19 1956 y(Distributed)8 b(Computing)f (Systems)p Ff(,)h(\(Boston)f(\(USA\)\),)i(May)e(1986.)-57 2028 y([13])20 b(J.)5 b(Graham)g(and)g(W)m(.)g(Morrison,)g(\252T)o(rusted)g(Mach)g (system)g(arch)o(itecture.\272)g(Intern)o(al)19 2068 y(document,)i(T)o (rusted)h(Information)e(Systems,)j(Glenwood,)e(MD,)h(April)g(1990.)-57 2140 y([14])20 b(Sun)12 b(Microsystems,)f(Inc.,)i(Mountain)d(V)n(iew)n(,)j (CA,)f Fa(Networking)h(on)f(the)i(Sun)19 2180 y(Workstation)p Ff(,)7 b(1986.)k(Part)e(No)f(800-1324-03)o(.)-57 2252 y([15])20 b(J.)14 b(M.)f(Bloom)g(and)f(K.)i(J.)g(Dunlap,)f(\252Experiences)f (implementing)g(BIND,)i(a)19 2292 y(distributed)8 b(name)g(server)h(for)f (the)h(DARP)m(A)h(internet,\272)e(in)h Fa(Proceedings)f(of)h(the)19 2331 y(1986)e(summer)h(Usenix)p Ff(,)f(pp.)h(172\261181,)e(Usenix,)i(1986.) 988 2933 y Fg(7)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF