%!PS-Adobe-2.0 %%Title: %%Creator: FrameMaker %%CreationDate: Mon Jul 27 16:29:29 1992 %%For: dpj %%DocumentFonts: (atend) %%Pages: (atend) 1 %%BoundingBox: (atend) %%DocumentPaperSizes: Letter %%Orientation: Portrait %%EndComments %%BeginDocument: /usr/lib/NextStep/printPackage.ps %!PS-Adobe-2.0 %%Title: Printing Package %%EndComments %Version: 2.0 %Copyright: 1988, NeXT, Inc. /__NXdef{1 index where{pop pop pop}{def}ifelse}bind def /__NXbdef{1 index where{pop pop pop}{bind def}ifelse}bind def /UserObjects 10 array __NXdef /defineuserobject{ exch dup 1 add dup UserObjects length gt{ array dup 0 UserObjects putinterval /UserObjects exch def }{pop}ifelse UserObjects exch 3 -1 roll put }__NXbdef /undefineuserobject{UserObjects exch null put}__NXbdef /execuserobject{UserObjects exch get exec}__NXbdef /__NXRectPath{4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath}__NXbdef /__NXProcessRectArgs{ 1 index type /arraytype eq{ exch 0 4 2 index length 1 sub{ dup 3 add 1 exch{1 index exch get exch}for 5 1 roll 5 index exec }for pop pop }{exec}ifelse }__NXbdef /rectfill{gsave newpath {__NXRectPath fill} __NXProcessRectArgs grestore}__NXbdef /rectclip{newpath {__NXRectPath} __NXProcessRectArgs clip newpath}__NXbdef /rectstroke{ gsave newpath dup type /arraytype eq{dup length 6 eq}{false}ifelse{ {gsave __NXRectPath null concat stroke grestore} dup length array cvx copy dup 2 4 -1 roll put __NXProcessRectArgs }{{__NXRectPath stroke} __NXProcessRectArgs}ifelse grestore }__NXbdef /xyshow{ 0 1 3 index length 1 sub{ currentpoint 4 index 3 index 1 getinterval show 3 index 3 index 2 mul 1 add get add exch 3 index 3 index 2 mul get add exch moveto pop }for pop pop }__NXbdef /xshow{ 0 1 3 index length 1 sub{ currentpoint 4 index 3 index 1 getinterval show exch 3 index 3 index get add exch moveto pop }for pop pop }__NXbdef /yshow{ 0 1 3 index length 1 sub{ currentpoint 4 index 3 index 1 getinterval show 3 index 3 index get add moveto pop }for pop pop }__NXbdef /arct{arcto pop pop pop pop}__NXbdef /setbbox{pop pop pop pop}__NXbdef /ucache{}__NXbdef /ucachestatus{mark 0 0 0 0 0}__NXbdef /setucacheparams{cleartomark}__NXbdef /uappend{systemdict begin cvx exec end}__NXbdef /ueofill{gsave newpath uappend eofill grestore}__NXbdef /ufill{gsave newpath uappend fill grestore}__NXbdef /ustroke{ gsave newpath dup length 6 eq {exch uappend concat}{uappend}ifelse stroke grestore }__NXbdef /__NXustrokepathMatrix dup where {pop pop}{matrix def}ifelse /ustrokepath{ newpath dup length 6 eq{ exch uappend __NXustrokepathMatrix currentmatrix exch concat strokepath setmatrix }{uappend strokepath}ifelse } __NXbdef /upath{ [exch {/ucache cvx}if pathbbox /setbbox cvx {/moveto cvx}{/lineto cvx}{/curveto cvx}{/closepath cvx}pathforall]cvx } __NXbdef /setstrokeadjust{pop}__NXbdef /currentstrokeadjust{false}__NXbdef /selectfont{exch findfont exch dup type /arraytype eq {makefont}{scalefont}ifelse setfont}__NXbdef /_NXCombineArrays{ counttomark dup 2 add index dup length 3 -1 roll { 2 index length sub dup 4 1 roll 1 index exch 4 -1 roll putinterval exch }repeat pop pop pop }__NXbdef /setcmykcolor{ 1.0 exch sub dup dup 6 -1 roll sub dup 0 lt{pop 0}if 5 1 roll 4 -1 roll sub dup 0 lt{pop 0}if 3 1 roll exch sub dup 0 lt{pop 0}if setrgbcolor }__NXbdef /currentcmykcolor{currentrgbcolor 3{1.0 exch sub 3 1 roll}repeat 0}__NXbdef /flushgraphics{}def /setwindowtype{pop pop}def /currentwindowtype{pop 0}def /setalpha{pop}def /currentalpha{1.0}def /hidecursor{}def /obscurecursor{}def /revealcursor{}def /setcursor{4 {pop}repeat}bind def /showcursor{}def /NextStepEncoding where not{ /NextStepEncoding StandardEncoding 256 array copy def 0 [129/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/Ccedilla/Egrave /Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis /Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/Ugrave/Uacute /Ucircumflex/Udieresis/Yacute/Thorn/mu/multiply/divide/copyright 176/registered 181/brokenbar 190/logicalnot 192/onesuperior 201/twosuperior 204/threesuperior 209/plusminus/onequarter/onehalf/threequarters/agrave /aacute/acircumflex/atilde/adieresis/aring/ccedilla/egrave/eacute /ecircumflex/edieresis/igrave 226/iacute 228/icircumflex/idieresis/eth /ntilde 236/ograve/oacute/ocircumflex/otilde/odieresis 242/ugrave/uacute /ucircumflex 246/udieresis/yacute 252/thorn/ydieresis] {dup type /nametype eq {NextStepEncoding 2 index 2 index put pop 1 add}{exch pop}ifelse }forall pop /NextStepEncoding NextStepEncoding readonly def /_NXfstr 128 string dup 0 (_NX) putinterval def /findfont{ % Because we can never let NextStepEncoding get into % SharedFontDirectory, we cannot reencode a font to NextStepEncoding % if we are in shared mode. So if currentshared is true, % we call the normal findfont and return that /currentshared where {pop currentshared} {false} ifelse {//findfont exec} {dup _NXfstr 3 125 getinterval cvs length 3 add _NXfstr 0 3 -1 roll getinterval cvn exch FontDirectory 2 index known {pop FontDirectory exch get} {//findfont exec dup /Encoding get StandardEncoding eq { dup length dict exch {1 index /FID ne {2 index 3 1 roll put}{pop pop}ifelse}forall dup /Encoding NextStepEncoding put definefont }{exch pop} ifelse }ifelse }ifelse }bind def }{pop}ifelse /_NXProcArray 5 array __NXdef /_NXChannels 0 __NXdef /_NXTotalBytes 0 __NXdef /_NXDoImageOp{ 1 index{dup}{1}ifelse /_NXChannels exch store _NXChannels 2 add 2 roll _NXProcArray 0 _NXChannels getinterval astore pop 5 index 4 index mul 2 index{1 sub 8 idiv 1 add mul}{mul 1 sub 8 idiv 1 add}ifelse 4 index mul /_NXTotalBytes exch store pop exch pop gsave matrix invertmatrix concat 0.5 setgray 0 0 4 2 roll rectfill grestore { 0 1 _NXChannels 1 sub{ _NXProcArray exch get exec length _NXTotalBytes exch sub /_NXTotalBytes exch store}for _NXTotalBytes 0 le{exit}if }loop /_NXProcArray 5 array def }__NXbdef /colorimage{_NXDoImageOp}__NXbdef /alphaimage{1 add _NXDoImageOp}def %%EndDocument /FMwantcolorprinting false def %- %- FrameMaker Postscript Prolog 3.0, for use with FrameMaker 3.0 %- Copyright (c) 1986, 87, 88, 89, 90, 91 by Frame Technology, Inc. %- All rights reserved. %- %- /landscape false def/t300[0.000 0.006 0.011 0.017 0.022 0.028 0.033 0.039 0.045 0.050 0.056 0.061 0.067 0.073 0.078 0.084 0.089 0.095 0.101 0.117 0.133 0.148 0.164 0.179 0.195 0.210 0.225 0.240 0.255 0.270 0.285 0.299 0.314 0.329 0.344 0.359 0.374 0.389 0.404 0.419 0.435 0.451 0.466 0.482 0.498 0.513 0.529 0.544 0.560 0.576 0.591 0.610 0.632 0.654 0.677 0.699 0.721 0.744 0.766 0.788 0.821 0.866 0.911 0.955 1.000]def/t400[0.000 0.003 0.006 0.009 0.012 0.014 0.017 0.020 0.023 0.026 0.029 0.032 0.035 0.038 0.041 0.043 0.046 0.049 0.056 0.063 0.071 0.079 0.087 0.095 0.104 0.117 0.130 0.143 0.157 0.173 0.189 0.205 0.225 0.245 0.259 0.272 0.285 0.298 0.314 0.329 0.345 0.361 0.376 0.392 0.407 0.423 0.439 0.454 0.470 0.486 0.502 0.528 0.554 0.580 0.605 0.628 0.650 0.672 0.695 0.727 0.762 0.796 0.857 0.922 1.000]def/tlinear[0.000 0.016 0.031 0.047 0.062 0.078 0.094 0.109 0.125 0.141 0.156 0.172 0.188 0.203 0.219 0.234 0.250 0.266 0.281 0.297 0.312 0.328 0.344 0.359 0.375 0.391 0.406 0.422 0.438 0.453 0.469 0.484 0.500 0.516 0.531 0.547 0.562 0.578 0.594 0.609 0.625 0.641 0.656 0.672 0.688 0.703 0.719 0.734 0.750 0.766 0.781 0.797 0.812 0.828 0.844 0.859 0.875 0.891 0.906 0.922 0.938 0.953 0.969 0.984 1.000]def/orgmatrix matrix def /savematrix{orgmatrix currentmatrix pop}bind def/restorematrix{orgmatrix setmatrix}bind def/dmatrix matrix def/desiredpat 0 def/dpi 72 0 dmatrix defaultmatrix dtransform dup mul exch dup mul add sqrt round def/freq dpi 18.75 div 8 div round dup 0 eq{pop 1}if 8 mul dpi exch div def/sangle 1 0 dmatrix defaultmatrix dtransform exch atan def/graymode true def/pats 16 array def/mymatrix matrix def/savedgray 0 def/F/fill load def/rc/rectclip load def /GS/gsave load def/GR/grestore load def/SL/setlinewidth load def/SC /setlinecap load def/CS{closepath S}bind def/A/strokepath load def/TR /translate load def/L/lineto load def/M/moveto load def/D/curveto load def/C /closepath load def/T{moveto show}bind def/smat{mymatrix currentmatrix pop} bind def/rmat{mymatrix setmatrix}bind def/sp{P exch get exec}bind def systemdict/setshared known{300 dpi eq{/tran t300 def}{/tran t400 def}ifelse}{ /tran tlinear def}ifelse systemdict/xshow known not{/xhow{/pts exch def/str exch def 0 1 str length 1 sub{currentpoint 3 -1 roll str 1 index 1 getinterval show 3 1 roll moveto pts exch get 0 rmoveto}for}bind def}{/xhow{checkink xshow }bind def}ifelse systemdict/xyshow known not{/xyhow{/pts exch def/str exch def 0 1 str length 1 sub{currentpoint 3 -1 roll str 1 index 1 getinterval show 3 1 roll moveto 2 mul pts 1 index get pts 3 -1 roll 1 add get rmoveto}for}bind def }{/xyhow{checkink xyshow}bind def}ifelse/CR{initclip newpath 4 2 roll M dup 0 exch rlineto exch 0 rlineto 0 exch neg rlineto C clip newpath}bind def /makecontextpattern{exch pop[null 8 1/setpattern cvx]4 array copy dup 0 5 -1 roll put cvx pats 3 1 roll put}def/P[0 1 15{[/desiredpat 3 -1 roll/store cvx] cvx}for]def/patoffsetx 0 def/patoffsety 0 def/currentpat null def/FrameDict 250 dict def/FMBEGINPAGE{FrameDict begin}def/FMENDPAGE{end}def/FMLOCAL{ FrameDict begin 0 def end}def FrameDict begin/NaN 0 def/gstring 0 def/gfile 0 def/gindex 0 def/orgxfer 0 def/yscale 0 def/xscale 0 def/FMPrintInColor systemdict/colorimage known systemdict/currentcolortransfer known or FMwantcolorprinting and def FMPrintInColor{/HUE 0 def/SAT 0 def/BRIGHT 0 def /Colors[[0 0][0 0][0.00 1.0][0.37 1.0][0.60 1.0][0.50 1.0][0.83 1.0][0.16 1.0] ]def/K{Colors exch get dup 0 get/HUE exch store 1 get/BRIGHT exch store HUE 0 eq BRIGHT 0 eq and{1.0 SAT sub setgray}{HUE SAT BRIGHT sethsbcolor}ifelse}def /KT/K load def/mysetgray{/SAT exch 1.0 exch sub store HUE 0 eq BRIGHT 0 eq and {1.0 SAT sub setgray}{HUE SAT BRIGHT sethsbcolor}ifelse}bind def}{/mysetgray /setgray load def/K/pop load def/KT/pop load def}ifelse/G{/savedgray exch def savedgray mysetgray}def/setpattern{/bwidth exch def/bpside exch def/bstring exch def/onbits 0 def/offbits 0 def freq sangle landscape{90 add}if{/y exch def/x exch def/xindex x 1 add 2 div bpside mul cvi def/yindex y 1 add 2 div bpside mul cvi def bstring yindex bwidth mul xindex 8 idiv add get 1 7 xindex 8 mod sub bitshift and 0 ne{/onbits onbits 1 add def 1}{/offbits offbits 1 add def 0}ifelse}setscreen tran offbits 64 mul offbits onbits add div cvi get mysetgray}bind def/myfonts[]def/procarray 30 array def 3.86 setmiterlimit currentscreen cvlit/orgproc exch def/organgle exch def/orgfreq exch def /currentpat -1 def/checkpat{graymode currentpat desiredpat ne or{pats desiredpat get exec/graymode false store/currentpat desiredpat store}if}bind def/Z{checkpat fill}bind def/checkink{graymode not{orgfreq organgle orgproc cvx setscreen/graymode true store savedgray mysetgray}if}bind def/F{checkink fill}bind def/dorectfill{checkink rectfill}bind def/dorectstroke{checkink rectstroke}bind def/S{checkink stroke}bind def/FmEncoding[/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent /ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/hyphen/period /slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less /equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y /Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e /f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright /asciitilde/.notdef/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex /udieresis/dagger/.notdef/cent/sterling/section/bullet/paragraph/germandbls /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash/.notdef /.notdef/.notdef/.notdef/yen/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /ordfeminine/ordmasculine/.notdef/ae/oslash/questiondown/exclamdown /logicalnot/.notdef/florin/.notdef/.notdef/guillemotleft/guillemotright /ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe/endash/emdash/quotedblleft /quotedblright/quoteleft/quoteright/.notdef/.notdef/ydieresis/Ydieresis /fraction/currency/guilsinglleft/guilsinglright/fi/fl/daggerdbl /periodcentered/quotesinglbase/quotedblbase/perthousand/Acircumflex /Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex/Idieresis/Igrave /Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex/Ugrave/dotlessi /circumflex/tilde/macron/breve/dotaccent/ring/cedilla/hungarumlaut/ogonek /caron]def/FmEncode{/basefontdict exch def/newfontdict basefontdict maxlength 3 add dict def basefontdict{exch dup/FID ne{dup/Encoding eq{exch pop FmEncoding}{exch}ifelse newfontdict 3 1 roll put}{pop pop}ifelse}forall newfontdict}def/rrectpath{smat 4 2 roll TR/h exch def/w exch def/r exch def mark r 0 M w 0 w h r arcto w h 0 h r arcto 0 h 0 0 r arcto 0 0 w 0 r arcto C cleartomark rmat}def/RF{rrectpath F}bind def/RP{checkpat rrectpath fill}bind def/RS{rrectpath S}bind def/RQ{checkpat rrectpath A fill}bind def/NF{ dorectfill}bind def/NR{checkpat 4 2 roll rectfill}bind def/W{savedgray 5 1 roll 1.0 G dorectfill G}bind def/PP{newpath 3 1 roll M 1 sub{lineto}repeat} bind def/SP{3 1 roll M 3 div cvi{curveto}repeat}bind def/rectpath{M dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto C}def/N{dorectstroke}bind def/NQ{ checkpat 4 2 roll rectstroke}bind def/replbox{M dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto C currentgray .5 setgray fill setgray pop pop}def /graybox{currentgray 5 1 roll .6666666 setgray rectfill setgray}bind def /darkgraybox{currentgray 5 1 roll .333333 setgray rectfill setgray}bind def /arcpath{newpath TR/h exch def/w exch def/dth exch def/th exch def 90 th dth add sub 90 th sub dth 0 lt{exch}if 1 h w div neg scale 0 0 w 2 div 5 -2 roll arc}def/AS{smat arcpath rmat S}bind def/AP{checkpat smat arcpath rmat A fill} bind def/AF{smat arcpath 0 0 lineto rmat F}bind def/AQ{checkpat smat arcpath 0 0 lineto rmat fill}bind def/mymakefont{/size exch def/name exch def/i exch def /myfontdict name cvn findfont def myfontdict begin Encoding StandardEncoding eq/NextStepEncoding where{pop Encoding NextStepEncoding eq or}if end{ myfontdict FmEncode/gfontdict exch def/gfontdict(F )dup 1 i( )cvs putinterval cvn gfontdict definefont def}{/gfontdict myfontdict def}ifelse /myfonts[myfonts aload pop null]def myfonts i gfontdict[size 0 0 size neg 0 0 ]makefont put}def/mymakefontmetric{/BitmapWidths exch 0 eq def mymakefont}def /FF{myfonts exch get setfont}bind def/cliptowindow{initclip}def /beginprintcode{GS newpath 1 setlinewidth 0 SL 0 setlinejoin[]0 setdash 0 setgray 10 setmiterlimit/FMdicttop countdictstack 1 add def/FMoptop count 7 sub def 200 dict begin/showpage{}def TR dup neg scale 0.0 0.0 M}def /endprintcode{count -1 FMoptop{pop pop}for countdictstack -1 FMdicttop{pop end}for GR}def/beginPSInsetprintcode{/pinsetsave save def newpath 1 setlinewidth 0 setlinecap 0 setlinejoin[]0 setdash 0 setgray 10 setmiterlimit /FMdicttop countdictstack 1 add def/FMoptop count def 200 dict begin/showpage {}def/showimage{}def}def/endPSInsetprintcode{count -1 FMoptop{pop pop}for countdictstack -1 FMdicttop{pop end}for pinsetsave restore}def/cacheimage{ /flip exch def/theta exch def/bps exch def/h exch def/w exch def/destHeight exch def/destWidth exch def/destY exch def/destX exch def/rowbytes w bps mul 7 add 8 idiv def/buffer rowbytes string def GS destX destY TR theta rotate destWidth flip{neg}if destHeight scale w h bps[w 0 0 h 0 h]{currentfile buffer readhexstring pop}bind image GR}def/inch{72 mul}def/paperheight 0 def /paperwidth 0 def/pagedimen{paperheight sub abs 16 lt exch paperwidth sub abs 16 lt and{/papername exch def}{pop}ifelse}def/setpapername{/papersizedict 14 dict def papersizedict begin/papername/unknown def/Letter 8.5 inch 11.0 inch pagedimen/LetterSmall 7.68 inch 10.16 inch pagedimen/Tabloid 11.0 inch 17.0 inch pagedimen/Ledger 17.0 inch 11.0 inch pagedimen/Legal 8.5 inch 14.0 inch pagedimen/Statement 5.5 inch 8.5 inch pagedimen/Executive 7.5 inch 10.0 inch pagedimen/A3 11.69 inch 16.5 inch pagedimen/A4 8.26 inch 11.69 inch pagedimen /A4Small 7.47 inch 10.85 inch pagedimen/B4 10.125 inch 14.33 inch pagedimen /B5 7.16 inch 10.125 inch pagedimen end}def/papersize{papersizedict begin /Letter{lettertray letter}def/LetterSmall{lettertray lettersmall}def/Tabloid {11x17tray 11x17}def/Ledger{ledgertray ledger}def/Legal{legaltray legal}def /Statement{statementtray statement}def/Executive{executivetray executive}def /A3{a3tray a3}def/A4{a4tray a4}def/A4Small{a4tray a4small}def/B4{b4tray b4} def/B5{b5tray b5}def/unknown{unknown}def papersizedict dup papername known {papername}{/unknown}ifelse get end/FMdicttop countdictstack 1 add def statusdict begin stopped end countdictstack -1 FMdicttop{pop end}for}def /manualpapersize{papersizedict begin/Letter{letter}def/LetterSmall {lettersmall}def/Tabloid{11x17}def/Ledger{ledger}def/Legal{legal}def /Statement{statement}def/Executive{executive}def/A3{a3}def/A4{a4}def/A4Small {a4small}def/B4{b4}def/B5{b5}def/unknown{unknown}def papersizedict dup papername known{papername}{/unknown}ifelse get end stopped}def /desperatepapersize{statusdict/setpageparams known{paperwidth paperheight 0 1 statusdict begin{setpageparams}stopped pop end}if}def/manualfeed false def /FmHorrible{4 dict begin/execuserobject{pop}def/undefineuserobject{pop}def /termwindow{}def/currentgstate{null}def}def/FmEndHorrible{end}def end /FmConfigurePaper{FrameDict begin pop pop/paperheight exch def/paperwidth exch def setpapername manualfeed{true}{papersize}ifelse{manualpapersize}{false} ifelse{desperatepapersize}if end}def/ALDsave FMLOCAL/ALDmatrix matrix def ALDmatrix currentmatrix pop/StartALD{/ALDsave save def savematrix ALDmatrix setmatrix}bind def/InALD{restorematrix}bind def/DoneALD{ALDsave restore}bind def <0f1e3c78f0e1c387> (I2107fc) 8 makecontextpattern <0f87c3e1f0783c1e> (I2108a0) 9 makecontextpattern (I2108bc) 10 makecontextpattern (I2108d8) 11 makecontextpattern <8142241818244281> (I2108f4) 12 makecontextpattern <03060c183060c081> (I210910) 13 makecontextpattern <8040201008040201> (I21092c) 14 makecontextpattern gsave /__NXbasematrix matrix currentmatrix def grestore %%EndProlog %%BeginSetup %%PaperSize: Letter %%Feature: *ManualFeed False %%BeginPaperSize: Letter 612 792 (Letter) false FmConfigurePaper %%EndPaperSize %%EndSetup %%Page: 1 1 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 2 SL 3.86 setmiterlimit 0 G 433.01 36 M 71.42 36 L S 0.5 SL 2 SC 433.01 718.7 M 71.42 718.7 L S 0 0 612 792 CR 1 G 71.424072 107.136108 359.928009 504.432495 NF 0 G 0 (Times-Bold) 30 1 mymakefontmetric 0 FF (Mach 3 K) 71.424 127.136 T (er) 197.334 127.136 T (nel Principles) 223.524 127.136 T 1 (Times-Bold) 18 1 mymakefontmetric 1 FF (Open Softwar) 71.424 225.16 T (e F) 178.596 225.16 T (oundation and Car) 201.637 225.16 T (negie ) 347.401 225.16 T (Mellon Uni) 71.424 245.16 T (v) 157.752 245.16 T (ersity) 166.572 245.16 T (K) 71.424 442.753 T (eith Loeper) 84.978 442.753 T (e) 173.143 442.753 T 71.424072 137.136017 351 30.024002 CR 1 G 71.424072 137.136017 351 30.024002 NF 0 G 377.42 158.16 M 71.42 158.16 L S 71.424072 251.159927 348.47998 167.592606 CR 1 G 71.424072 251.159927 348.47998 167.592606 NF 71.424072 539.568604 150.120361 72 CR 71.424072 539.568604 150.120361 72 NF 0 G 139.02 573.28 M 139.02 601.56 L 114.71 601.56 L 111.24 598.03 L 111.24 573.28 L F 1 SL 0 SC 139.02 573.28 M 139.02 601.56 L 114.71 601.56 L 111.24 598.03 L 111.24 573.28 L CS 1 K 1 G 2 (Helvetica-BoldOblique) 36 1 mymakefontmetric 2 FF (S) 105.218 603.11 T 0 G 0 K 172.81 573.28 M 172.81 601.56 L 148.5 601.56 L 145.03 598.03 L 145.03 573.28 L F 172.81 573.28 M 172.81 601.56 L 148.5 601.56 L 145.03 598.03 L 145.03 573.28 L CS 1 K 1 G (F) 139.011 603.11 T 0 G 0 K 105.23 573.28 M 105.23 601.56 L 80.92 601.56 L 77.44 598.03 L 77.44 573.28 L F 105.23 573.28 M 105.23 601.56 L 80.92 601.56 L 77.44 598.03 L 77.44 573.28 L CS 1 K 1 G (O) 71.424 603.11 T 0 G 0 K 0 0 612 792 CR 1 G 71.424072 700.704712 361.584351 18 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF (NORMA-MK12: July 15, 1992) 306.898 707.371 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 2 2 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 179.136108 107.136108 361.008423 611.568604 NF 0 G 0 (Times-Roman) 10 1 mymakefontmetric 0 FF (This book is in the ) 179.136 113.803 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF (Open Softwar) 256.086 113.803 T (e F) 315.626 113.803 T (oundation Mach 3) 328.426 113.803 T 0 FF ( series.) 406.216 113.803 T (Books in the OSF Mach 3 series:) 179.136 137.803 T 1 FF (Mach 3 K) 251.136 161.803 T (er) 293.106 161.803 T (nel Principles) 301.836 161.803 T (Mach 3 K) 251.136 185.803 T (er) 293.106 185.803 T (nel Interfaces) 301.836 185.803 T (Mach 3 Ser) 251.136 209.802 T (v) 299.916 209.802 T (er Writer\325) 304.816 209.802 T (s Guide) 348.586 209.802 T (Mach 3 Ser) 251.136 233.802 T (v) 299.916 233.802 T (er Writer\325) 304.816 233.802 T (s Interfaces) 348.586 233.802 T 0 FF (Re) 179.136 281.802 T (vision History:) 189.996 281.802 T (Re) 179.136 305.802 T (vision 2) 189.996 305.802 T (MK67: January 7, 1992) 251.136 305.802 T (OSF Mach release) 395.136 305.802 T (Re) 179.136 317.802 T (vision 2.2) 189.996 317.802 T (NORMA-MK12: July 15, 1992) 251.136 317.802 T (Change bars indicate changes since MK67.) 179.136 341.802 T (Cop) 179.136 427.802 T (yright\251 1991 by the Open Softw) 195.706 427.802 T (are F) 327.366 427.802 T (oundation and Carne) 347.486 427.802 T (gie Mellon Uni) 430.656 427.802 T (v) 491.517 427.802 T (ersity) 496.367 427.802 T (.) 517.937 427.802 T (All rights reserv) 179.136 449.802 T (ed.) 243.976 449.802 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 3 3 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 423.660004 731.706665 M -2.5 0 32 (iii ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 0.25 SL 3.86 setmiterlimit 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 2 (Times-Italic) 24 1 mymakefontmetric 2 FF 72 123.999969 M -0.479736 0 (Contents) ashow 3 (Times-Roman) 12 1 mymakefontmetric 3 FF (CHAPTER 1) 72.0 164.0 T 4 (Times-Bold) 12 1 mymakefontmetric 4 FF (Intr) 153.0 164.0 T (oduction) 173.448 164.0 T 3 FF ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 219.0 164.0 T (1) 426.0 164.0 T (K) 153.0 178.0 T (ernel Abstractions) 161.364 178.0 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 252.0 178.0 T (2) 426.0 178.0 T (Structure of this Document) 153.0 192.0 T ( . . . . . . . . . . . . . . . . . . . . . . . ) 285.0 192.0 T (5) 426.0 192.0 T (CHAPTER 2) 72.0 228.0 T 4 FF (Ar) 153.0 228.0 T (chitectural Model) 166.776 228.0 T 3 FF (. . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 258.0 228.0 T (7) 426.0 228.0 T (Elements) 153.0 242.0 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 198.0 242.0 T (7) 426.0 242.0 T (Threads) 153.0 256.0 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 192.0 256.0 T (10) 420.0 256.0 T (T) 153.0 270.0 T (asks) 159.373 270.0 T ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 183.0 270.0 T (10) 420.0 270.0 T (Ports) 153.0 284.0 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 180.0 284.0 T (11) 420.0 284.0 T (Messages) 153.0 298.0 T ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 201.0 298.0 T (11) 420.0 298.0 T (Message Queues) 153.0 312.0 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 234.0 312.0 T (12) 420.0 312.0 T (Port Rights) 153.0 326.0 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 210.0 326.0 T (12) 420.0 326.0 T (Port Name Space) 153.0 340.0 T ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 237.0 340.0 T (12) 420.0 340.0 T (Port Sets) 153.0 354.0 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 198.0 354.0 T (13) 420.0 354.0 T (V) 153.0 368.0 T (irtual Address Spaces) 160.944 368.0 T ( . . . . . . . . . . . . . . . . . . . . . . . . . ) 267.0 368.0 T (13) 420.0 368.0 T (Abstract Memory Objects) 153.0 382.0 T ( . . . . . . . . . . . . . . . . . . . . . . . ) 279.0 382.0 T (14) 420.0 382.0 T (Memory Cache Objects) 153.0 396.0 T ( . . . . . . . . . . . . . . . . . . . . . . . . . ) 267.0 396.0 T (15) 420.0 396.0 T (Processors) 153.0 410.0 T ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 207.0 410.0 T (15) 420.0 410.0 T (Processor Sets) 153.0 424.0 T ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 225.0 424.0 T (15) 420.0 424.0 T (Nodes) 153.0 438.0 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 186.0 438.0 T (16) 420.0 438.0 T (Hosts) 153.0 452.0 T ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 183.0 452.0 T (16) 420.0 452.0 T (De) 153.0 466.0 T (vices) 166.692 466.0 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 192.0 466.0 T (16) 420.0 466.0 T (Ev) 153.0 480.0 T (ents) 166.152 480.0 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 186.0 480.0 T (17) 420.0 480.0 T (CHAPTER 3) 72.0 516.0 T 4 FF (Thr) 153.0 516.0 T (eads and T) 172.788 516.0 T (asks) 227.701 516.0 T 3 FF (. . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 252.0 516.0 T (19) 420.0 516.0 T (Threads) 153.0 530.0 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 192.0 530.0 T (19) 420.0 530.0 T (T) 153.0 544.0 T (asks) 159.373 544.0 T ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 183.0 544.0 T (24) 420.0 544.0 T (CHAPTER 4) 72.0 580.0 T 4 FF (P) 153.0 580.0 T (orts, Rights and Messages) 160.092 580.0 T 3 FF (. . . . . . . . . . . . . . . . . . . . . ) 294.0 580.0 T (27) 420.0 580.0 T (Ports) 153.0 594.0 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 180.0 594.0 T (27) 420.0 594.0 T (Messages) 153.0 608.0 T ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 201.0 608.0 T (29) 420.0 608.0 T (Message Queues) 153.0 622.0 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 234.0 622.0 T (30) 420.0 622.0 T (Port Rights) 153.0 636.0 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 210.0 636.0 T (30) 420.0 636.0 T (Port Name Space) 153.0 650.0 T ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 237.0 650.0 T (32) 420.0 650.0 T (Port Sets) 153.0 664.0 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 198.0 664.0 T (34) 420.0 664.0 T (Message T) 153.0 678.0 T (ransmission) 204.9 678.0 T (. . . . . . . . . . . . . . . . . . . . . . . . . . ) 264.0 678.0 T (35) 420.0 678.0 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 4 4 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (iv ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 2 (Times-Roman) 12 1 mymakefontmetric 2 FF (CHAPTER 5) 180.0 113.984 T 3 (Times-Bold) 12 1 mymakefontmetric 3 FF (V) 261.0 113.984 T (irtual Memory Management) 269.22 113.984 T 2 FF ( . . . . . . . . . . . . . . . . . . ) 417.0 113.984 T (37) 528.0 113.984 T (V) 261.0 127.984 T (irtual Address Spaces) 268.944 127.984 T ( . . . . . . . . . . . . . . . . . . . . . . . . . ) 375.0 127.984 T (37) 528.0 127.984 T (Memory Objects) 261.0 141.984 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 342.0 141.984 T (40) 528.0 141.984 T (CHAPTER 6) 180.0 177.984 T 3 FF (Ph) 261.0 177.984 T (ysical Resour) 274.824 177.984 T (ce Management) 342.936 177.984 T 2 FF (. . . . . . . . . . . . . . . . . ) 426.0 177.984 T (55) 528.0 177.984 T (Ph) 261.0 191.984 T (ysical Memory) 273.612 191.984 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 348.0 191.984 T (55) 528.0 191.984 T (Processors) 261.0 205.984 T ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 315.0 205.984 T (56) 528.0 205.984 T (Processor Sets) 261.0 219.984 T ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 333.0 219.984 T (57) 528.0 219.984 T (Nodes) 261.0 233.984 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 294.0 233.984 T (59) 528.0 233.984 T (Hosts) 261.0 247.984 T ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 291.0 247.984 T (60) 528.0 247.984 T (De) 261.0 261.984 T (vices) 274.692 261.984 T (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) 300.0 261.984 T (61) 528.0 261.984 T (Access to Pri) 261.0 275.984 T (vile) 324.024 275.984 T (ged Ports) 341.844 275.984 T ( . . . . . . . . . . . . . . . . . . . . . . . ) 387.0 275.984 T (64) 528.0 275.984 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 5 5 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 2 SL 3.86 setmiterlimit 0 G 432 45 M 72 45 L S 2 SC 432 342 M 72 342 L S 0.25 SL 432 720 M 72 720 L S 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 427 731.706665 M -2.5 0 32 (1 ) widthshow 0 0 612 792 CR 1 G 72 99 360 225 NF 0 G 2 (Times-Roman) 12 1 mymakefontmetric 2 FF 72 114.999969 M 1.19989 0 (CHAPTER 1) ashow 3 (Times-Roman) 24 1 mymakefontmetric 3 FF 180 114.999969 M -0.479736 0 (Introduction) ashow 1 G 72 360 360 344.015991 NF 0 G 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 72 366.666626 M 1.30069 0 32 (This book documents the user visible architecture of the Mach 3 k) widthshow 350.887665 366.666626 M 1.30069 0 32 (ernel. It is assumed) widthshow (that the reader is f) 72.0 378.667 T (amiliar with the basic ideas of Mach as are found in:) 144.1 378.667 T 108 402.666504 M 1.354324 0 32 (Mik) widthshow 124.570053 402.666504 M 1.354324 0 32 (e Accetta, Robert Baron, W) widthshow 240.667587 402.666504 M 1.354324 0 32 (illiam Bolosk) widthshow 296.052002 402.666504 M 1.354324 0 32 (y) widthshow 300.402344 402.666504 M 1.354324 0 32 (, Da) widthshow 318.216797 402.666504 M 1.354324 0 32 (vid Golub, Richard Rashid,) widthshow 108 414.666443 M 0.689774 0 32 (A) widthshow 114.480408 414.666443 M 0.689774 0 32 (v) widthshow 119.230545 414.666443 M 0.689774 0 32 (adis T) widthshow 143.940704 414.666443 M 0.689774 0 32 (e) widthshow 148.130844 414.666443 M 0.689774 0 32 (v) widthshow 152.880981 414.666443 M 0.689774 0 32 (anian, Michael Y) widthshow 222.311142 414.666443 M 0.689774 0 32 (oung, \322Mach: A Ne) widthshow 303.00061 414.666443 M 0.689774 0 32 (w K) widthshow 320.380524 414.666443 M 0.689774 0 32 (ernel F) widthshow 348.970398 414.666443 M 0.689774 0 32 (oundation for UNIX) widthshow 108 426.666382 M 0.385391 0 32 (De) widthshow 119.410141 426.666382 M 0.385391 0 32 (v) widthshow 124.260223 426.666382 M 0.385391 0 32 (elopment,) widthshow 163.280609 426.666382 M 0.385391 0 32 widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 181.271393 426.666382 M 0.385391 0 32 (Pr) widthshow 190.82164 426.666382 M 0.385391 0 32 (oceedings of the Summer 1986) widthshow 4 FF 315.12323 426.666382 M 0.385391 0 32 ( ) widthshow 5 FF 318.008606 426.666382 M 0.385391 0 32 (USENIX Confer) widthshow 382.744202 426.666382 M 0.385391 0 32 (ence) widthshow 4 FF 401.064209 426.666382 M 0.385391 0 32 (, Atlan-) widthshow (ta, GA.) 108.0 438.666 T 72 462.66626 M 0.733795 0 32 (The notion of operating system functionality pro) widthshow 270.682861 462.66626 M 0.733795 0 32 (vided via a Mach user space serv) widthshow 407.115723 462.66626 M 0.733795 0 32 (er can) widthshow (be found in:) 72.0 474.666 T 108 498.666138 M 1.439972 0 32 (Da) widthshow 119.460114 498.666138 M 1.439972 0 32 (vid Golub, Randall Dean, Alessandro F) widthshow 284.550049 498.666138 M 1.439972 0 32 (orin, Richard Rashid, \322UNIX as an) widthshow 108 510.666077 M 1.995468 0 32 (Application Program,) widthshow 195.955856 510.666077 M 1.995468 0 32 widthshow 5 FF 217.166794 510.666077 M 1.995468 0 32 (Pr) widthshow 226.717041 510.666077 M 1.995468 0 32 (oceedings of the Summer 1990) widthshow 4 FF 357.458923 510.666077 M 1.995468 0 32 ( ) widthshow 5 FF 361.954407 510.666077 M 1.995468 0 32 (USENIX Confer-) widthshow (ence) 108.0 522.666 T 4 FF (, Anaheim, CA.) 126.32 522.666 T 72 546.665955 M 1.163788 0 32 (Mach w) widthshow 105.553848 546.665955 M 1.163788 0 32 (as originally de) widthshow 169.291565 546.665955 M 1.163788 0 32 (v) widthshow 174.141647 546.665955 M 1.163788 0 32 (eloped as a v) widthshow 229.313156 546.665955 M 1.163788 0 32 (ariant of BSD that pro) widthshow 322.698395 546.665955 M 1.163788 0 32 (vided users with enhanced) widthshow 72 558.665894 M 2.623932 0 32 (memory management, multiple points of control \() widthshow 5 FF 287.453613 558.665894 M 2.623932 0 32 (thr) widthshow 298.753784 558.665894 M 2.623932 0 32 (eads) widthshow 4 FF 317.083801 558.665894 M 2.623932 0 32 (\) and an e) widthshow 363.955688 558.665894 M 2.623932 0 32 (xtensi) widthshow 387.595825 558.665894 M 2.623932 0 32 (v) widthshow 392.445923 558.665894 M 2.623932 0 32 (e process) widthshow (\() 72.0 570.666 T 5 FF (task) 75.33 570.666 T 4 FF (\) to process communication f) 91.44 570.666 T (acility \(IPC\). The goals of Mach include:) 207.99 570.666 T 6 (Times-Roman) 7 1 mymakefontmetric 6 FF 72.0 588.666 T 4 FF (Exploiting parallelism in both operating system and user applications.) 85.536 588.666 T 6 FF 72.0 603.666 T 4 FF (Supporting lar) 85.536 603.666 T (ge, potentially sparse address spaces with \337e) 142.856 603.666 T (xible memory sharing.) 321.286 603.666 T 6 FF 72.0 618.666 T 4 FF (Allo) 85.536 618.666 T (wing transparent netw) 103.066 618.666 T (ork resource access.) 191.836 618.666 T 6 FF 72.0 633.666 T 4 FF (Compatibility with e) 85.536 633.666 T (xisting softw) 168.176 633.666 T (are en) 220.026 633.666 T (vironments \(BSD\).) 243.776 633.666 T 6 FF 72.0 648.666 T 4 FF (Portability) 85.536 648.666 T (.) 127.116 648.666 T 72 672.665466 M 0.991287 0 32 (The Mach 3 k) widthshow 130.693924 672.665466 M 0.991287 0 32 (ernel is a k) widthshow 177.167847 672.665466 M 0.991287 0 32 (ernel that pro) widthshow 232.320511 672.665466 M 0.991287 0 32 (vides only the Mach related features, along with) widthshow 72 684.665405 M 0.867111 0 32 (an) widthshow 81.290085 684.665405 M 0.867111 0 32 (y features needed to pro) widthshow 180.688629 684.665405 M 0.867111 0 32 (vide support for higher system layers. As such, the k) widthshow 398.6427 684.665405 M 0.867111 0 32 (ernel no) widthshow 72 696.665344 M 1.219971 0 32 (longer pro) widthshow 114.450058 696.665344 M 1.219971 0 32 (vides BSD functionality; indeed, it does not pro) widthshow 313.949951 696.665344 M 1.219971 0 32 (vide the functionality of an) widthshow 426.999908 696.665344 M 1.219971 0 32 (y) widthshow grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 6 6 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (2 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Intr) 180.0 55.824 T (oduction) 195.336 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 180 112.650635 M 0.749054 0 32 (traditional operating system. Instead, it pro) widthshow 355.52536 112.650635 M 0.749054 0 32 (vides the base upon which operating systems) widthshow (can be b) 180.0 124.651 T (uilt. The Mach k) 213.12 124.651 T (ernel subscribes to the philosoph) 279.68 124.651 T (y of:) 410.73 124.651 T 4 (Times-Roman) 7 1 mymakefontmetric 4 FF 180.0 142.651 T 3 FF (A simple, e) 193.536 142.651 T (xtensible communication k) 239.216 142.651 T (ernel.) 347.446 142.651 T 4 FF 180.0 157.65 T 3 FF (An object basis with communication channels as object references.) 193.536 157.65 T 4 FF 180.0 172.65 T 3 FF 193.535995 172.650391 M 0.325348 0 32 (A client / serv) widthshow 250.742126 172.650391 M 0.325348 0 32 (er programming model, using synchronous and asynchronous inter) widthshow 520.009705 172.650391 M 0.325348 0 32 (-pro-) widthshow (cess communication.) 193.536 184.65 T 4 FF 180.0 199.65 T 3 FF 193.535995 199.650269 M 0.023956 0 32 (User mode tasks performing man) widthshow 326.791931 199.650269 M 0.023956 0 32 (y traditional operating system functions \(e.g. \336le sys-) widthshow (tem, netw) 193.536 211.65 T (ork access\).) 232.876 211.65 T 180 235.650146 M 0.26062 0 32 (The fundamental idea is that of a simple, e) widthshow 352.185059 235.650146 M 0.26062 0 32 (xtensible communication k) widthshow 460.93634 235.650146 M 0.26062 0 32 (ernel. It is a goal of) widthshow 180 247.650085 M 0.318527 0 32 (the Mach project to mo) widthshow 274.444214 247.650085 M 0.318527 0 32 (v) widthshow 279.294281 247.650085 M 0.318527 0 32 (e more and more functionality out of the k) widthshow 451.162567 247.650085 M 0.318527 0 32 (ernel, until e) widthshow 501.819763 247.650085 M 0.318527 0 32 (v) widthshow 506.669861 247.650085 M 0.318527 0 32 (erything) widthshow 180 259.650024 M 1.547272 0 32 (is done by user mode tasks communicating via the k) widthshow 402.975525 259.650024 M 1.547272 0 32 (ernel. Of course, e) widthshow 480.947479 259.650024 M 1.547272 0 32 (v) widthshow 485.797546 259.650024 M 1.547272 0 32 (en in the e) widthshow 531.669434 259.650024 M 1.547272 0 32 (x-) widthshow 180 271.649963 M 0.513794 0 32 (treme, the k) widthshow 228.417648 271.649963 M 0.513794 0 32 (ernel must pro) widthshow 287.065308 271.649963 M 0.513794 0 32 (vide other support besides task to task communication, in par-) widthshow (ticular:) 180.0 283.65 T 4 FF 180.0 301.65 T 3 FF (Management of points of control \() 193.536 301.65 T 5 (Times-Italic) 10 1 mymakefontmetric 5 FF (thr) 331.016 301.65 T (eads) 342.316 301.65 T 3 FF (\).) 360.646 301.65 T 4 FF 180.0 316.65 T 3 FF (Resource assignment \() 193.536 316.65 T 5 FF (tasks) 284.076 316.65 T 3 FF (\).) 304.076 316.65 T 4 FF 180.0 331.65 T 3 FF (Support of address spaces for tasks.) 193.536 331.65 T 4 FF 180.0 346.65 T 3 FF (Management of ph) 193.536 346.65 T (ysical resources \(ph) 269.026 346.65 T (ysical memory) 348.396 346.65 T (, processors, de) 406.906 346.65 T (vice channels\).) 468.307 346.65 T 180 370.649597 M 0.577805 0 32 (Ev) widthshow 190.960083 370.649597 M 0.577805 0 32 (en here, though, the goal is to mo) widthshow 328.454803 370.649597 M 0.577805 0 32 (v) widthshow 333.304871 370.649597 M 0.577805 0 32 (e functionality outside the k) widthshow 447.176147 370.649597 M 0.577805 0 32 (ernel. User mode tasks) widthshow 180 382.649536 M 0.327942 0 32 (implement the policies re) widthshow 282.213928 382.649536 M 0.327942 0 32 (g) widthshow 287.16394 382.649536 M 0.327942 0 32 (arding resource usage; the k) widthshow 400.565796 382.649536 M 0.327942 0 32 (ernel simply pro) widthshow 466.621765 382.649536 M 0.327942 0 32 (vides mechanisms) widthshow (to enforce those policies.) 180.0 394.649 T 180 436.982727 360 3.024002 CR 0.25 SL 2 SC 540 438.49 M 180 438.49 L S 0 0 612 792 CR 6 (Times-Bold) 14 1 mymakefontmetric 6 FF (K) 180.0 432.316 T (er) 190.542 432.316 T (nel Abstractions) 202.764 432.316 T 3 FF 180 456.67334 M 0.285294 0 32 (Although it is a goal of the Mach k) widthshow 322.172424 456.67334 M 0.285294 0 32 (ernel to minimize abstractions pro) widthshow 459.81366 456.67334 M 0.285294 0 32 (vided by the k) widthshow 517.509644 456.67334 M 0.285294 0 32 (ernel,) widthshow 180 468.673279 M 1.63063 0 32 (it is not a goal to be minimal in the semantics associated with those abstractions. As) widthshow 180 480.673218 M 0.40329 0 32 (such, each of the abstractions pro) widthshow 315.166565 480.673218 M 0.40329 0 32 (vided has a rich set of semantics associated with it, and) widthshow 180 492.673157 M 0.553009 0 32 (a comple) widthshow 216.783096 492.673157 M 0.553009 0 32 (x set of interactions with the other abstractions. Although this mak) widthshow 488.583252 492.673157 M 0.553009 0 32 (es it dif) widthshow 519.439392 492.673157 M 0.553009 0 32 widthshow (to identify k) 180.0 504.673 T (e) 228.79 504.673 T (y ideas, the main k) 233.08 504.673 T (ernel abstractions are considered to be the follo) 308.25 504.673 T (wing:) 497.12 504.673 T 4 FF 180.0 522.673 T 3 FF (T) 193.536 522.673 T (ask \321 The unit of resource allocation: lar) 198.846 522.673 T (ge address space, port rights.) 365.577 522.673 T 4 FF 180.0 537.673 T 3 FF (Thread \321 The unit of CPU utilization, lightweight \(lo) 193.536 537.673 T (w o) 410.226 537.673 T (v) 424.796 537.673 T (erhead\).) 429.646 537.673 T 4 FF 180.0 552.673 T 3 FF 193.535995 552.672913 M 3.107376 0 32 (Port \321 Communication channel, accessible only via send / recei) widthshow 479.552551 552.672913 M 3.107376 0 32 (v) widthshow 484.402618 552.672913 M 3.107376 0 32 (e capabilities) widthshow (\(rights\).) 193.536 564.673 T 4 FF 180.0 579.673 T 3 FF (Message \321 T) 193.536 579.673 T (yped collection of data objects.) 248.836 579.673 T 4 FF 180.0 594.673 T 3 FF (Memory object \321 Internal unit of memory management.) 193.536 594.673 T 180 618.672668 M 1.164505 0 32 (The k) widthshow 204.114563 618.672668 M 1.164505 0 32 (ernel pro) widthshow 240.949158 618.672668 M 1.164505 0 32 (vides some memory management, of course. Memory is associated with) widthshow 180 630.672607 M 0.591507 0 32 (tasks. Memory objects are the means by which tasks tak) widthshow 409.633636 630.672607 M 0.591507 0 32 (e control o) widthshow 453.436737 630.672607 M 0.591507 0 32 (v) widthshow 458.286804 630.672607 M 0.591507 0 32 (er memory manage-) widthshow (ment.) 180.0 642.673 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 7 7 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 427 731.706665 M -2.5 0 32 (3 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (K) 72.0 55.824 T (er) 78.777 55.824 T (nel Abstractions) 86.635 55.824 T 0.25 SL 3.86 setmiterlimit 0 SC 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Bold) 12 1 mymakefontmetric 3 FF (T) 72.0 116.0 T (asks and Thr) 78.901 116.0 T (eads) 146.041 116.0 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 72 132.66658 M 0.981934 0 32 (The Mach k) widthshow 122.183929 132.66658 M 0.981934 0 32 (ernel does not pro) widthshow 196.909821 132.66658 M 0.981934 0 32 (vide the traditional notion of the ) widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 334.461426 132.66658 M 0.981934 0 32 (pr) widthshow 342.901672 132.66658 M 0.981934 0 32 (ocess) widthshow 4 FF 364.561676 132.66658 M 0.981934 0 32 (. This is for tw) widthshow 426.999451 132.66658 M 0.981934 0 32 (o) widthshow (main reasons:) 72.0 144.667 T 6 (Times-Roman) 7 1 mymakefontmetric 6 FF 72.0 162.666 T 4 FF 85.535995 162.666458 M 0.798141 0 32 (An) widthshow 97.606079 162.666458 M 0.798141 0 32 (y gi) widthshow 113.434357 162.666458 M 0.798141 0 32 (v) widthshow 118.284439 162.666458 M 0.798141 0 32 (en operating system en) widthshow 212.209091 162.666458 M 0.798141 0 32 (vironment has considerable semantics associated with) widthshow 85.535995 174.666397 M 0.439606 0 32 (a process \(such as user ID, signal state, etc.\). It is not the purpose of the Mach k) widthshow 412.009399 174.666397 M 0.439606 0 32 (ernel) widthshow (to understand or pro) 85.536 186.666 T (vide these e) 166.206 186.666 T (xtended semantics.) 213.266 186.666 T 6 FF 72.0 201.666 T 4 FF 85.535995 201.666275 M 0.932571 0 32 (Man) widthshow 103.71608 201.666275 M 0.932571 0 32 (y systems \(BSD, for e) widthshow 195.346451 201.666275 M 0.932571 0 32 (xample\) equate a process with an e) widthshow 340.751984 201.666275 M 0.932571 0 32 (x) widthshow 345.602051 201.666275 M 0.932571 0 32 (ecution point of con-) widthshow 85.535995 213.666214 M 2.102768 0 32 (trol. Some systems \(A) widthshow 180.184601 213.666214 M 2.102768 0 32 (OS, for e) widthshow 220.620224 213.666214 M 2.102768 0 32 (xample\) do not. Mach wishes to support multiple) widthshow 85.535995 225.666153 M 0.004837 0 32 (points of control in a w) widthshow 178.510239 225.666153 M 0.004837 0 32 (ay separate from an) widthshow 256.954834 225.666153 M 0.004837 0 32 (y gi) widthshow 271.989807 225.666153 M 0.004837 0 32 (v) widthshow 276.839905 225.666153 M 0.004837 0 32 (en operating system en) widthshow 368.384644 225.666153 M 0.004837 0 32 (vironment\325) widthshow 412.274963 225.666153 M 0.004837 0 32 (s no-) widthshow (tion of process.) 85.536 237.666 T 72 261.666016 M 0.879929 0 32 (Instead, Mach pro) widthshow 146.089951 261.666016 M 0.879929 0 32 (vides tw) widthshow 180.479935 261.666016 M 0.879929 0 32 (o notions: the ) widthshow 5 FF 240.069717 261.666016 M 0.879929 0 32 (task) widthshow 4 FF 256.179718 261.666016 M 0.879929 0 32 ( and the ) widthshow 5 FF 292.979492 261.666016 M 0.879929 0 32 (thr) widthshow 304.279724 261.666016 M 0.879929 0 32 (ead) widthshow 4 FF 318.719727 261.666016 M 0.879929 0 32 (. A thread is Mach\325) widthshow 399.169739 261.666016 M 0.879929 0 32 (s notion) widthshow 72 273.665955 M 0.522644 0 32 (of the point of control. A) widthshow 5 FF 174.603226 273.665955 M 0.522644 0 32 ( ) widthshow 4 FF 177.62587 273.665955 M 0.522644 0 32 (task e) widthshow 201.048599 273.665955 M 0.522644 0 32 (xists to pro) widthshow 246.393967 273.665955 M 0.522644 0 32 (vide resources for its containing threads. This) widthshow (split is made to pro) 72.0 285.666 T (vide for parallelism and resource sharing.) 148.52 285.666 T (A thread:) 72.0 309.666 T 6 FF 72.0 327.666 T 4 FF (Is a point of control \337o) 85.536 327.666 T (w in a task.) 177.226 327.666 T 6 FF 72.0 342.666 T 4 FF (Has access to all of the elements of the containing task.) 85.536 342.666 T 6 FF 72.0 357.666 T 4 FF (Potentially e) 85.536 357.666 T (x) 135.666 357.666 T (ecutes in parallel with other threads, e) 140.516 357.666 T (v) 292.176 357.666 T (en threads within the same task.) 297.026 357.666 T 6 FF 72.0 372.666 T 4 FF (Has minimal state for lo) 85.536 372.666 T (w o) 181.946 372.666 T (v) 196.516 372.666 T (erhead.) 201.366 372.666 T (A task:) 72.0 396.666 T 6 FF 72.0 414.665 T 4 FF 85.535995 414.665466 M 0.237198 0 32 (Is a collection of system resources. These resources, with the e) widthshow 338.808105 414.665466 M 0.237198 0 32 (xception of the address) widthshow 85.535995 426.665405 M 1.808731 0 32 (space, are referenced by ports. These resources may be shared with other tasks if) widthshow (rights to the ports are so distrib) 85.536 438.665 T (uted.) 209.776 438.665 T 6 FF 72.0 453.665 T 4 FF 85.535995 453.665283 M 1.883347 0 32 (Pro) widthshow 99.276077 453.665283 M 1.883347 0 32 (vides a lar) widthshow 143.962875 453.665283 M 1.883347 0 32 (ge, potentially sparse address space, referenced by machine address.) widthshow 85.535995 465.665222 M 0.140305 0 32 (Portions of this space may be shared through inheritance or e) widthshow 331.189148 465.665222 M 0.140305 0 32 (xternal memory manage-) widthshow (ment.) 85.536 477.665 T 6 FF 72.0 492.665 T 4 FF (Contains some number of threads.) 85.536 492.665 T 72 516.665039 M 0.589981 0 32 (Note that a task has no life of its o) widthshow 213.989975 516.665039 M 0.589981 0 32 (wn; only threads e) widthshow 289.210022 516.665039 M 0.589981 0 32 (x) widthshow 294.060089 516.665039 M 0.589981 0 32 (ecute instructions. When it is said) widthshow 72.0 528.665 T 72 552.664917 M 1.509933 0 32 (A task is a f) widthshow 125.709793 552.664917 M 1.509933 0 32 (airly e) widthshow 152.339813 552.664917 M 1.509933 0 32 (xpensi) widthshow 178.199951 552.664917 M 1.509933 0 32 (v) widthshow 183.050034 552.664917 M 1.509933 0 32 (e entity) widthshow 213.630325 552.664917 M 1.509933 0 32 (. It e) widthshow 234.550278 552.664917 M 1.509933 0 32 (xists to be a collection of resources. All of the) widthshow 72 564.664856 M 1.26915 0 32 (threads in a task share e) widthshow 173.345901 564.664856 M 1.26915 0 32 (v) widthshow 178.195984 564.664856 M 1.26915 0 32 (erything. T) widthshow 223.105576 564.664856 M 1.26915 0 32 (w) widthshow 230.225632 564.664856 M 1.26915 0 32 (o tasks share nothing without e) widthshow 360.581482 564.664856 M 1.26915 0 32 (xplicit action \(al-) widthshow 72 576.664795 M 1.700745 0 32 (though the action is often simple\) and some resources cannot be shared between tw) widthshow 426.999756 576.664795 M 1.700745 0 32 (o) widthshow (tasks at all \(such as port recei) 72.0 588.665 T (v) 189.5 588.665 T (e rights\).) 194.35 588.665 T 72 612.664673 M 0.184631 0 32 (A thread is a f) widthshow 129.288589 612.664673 M 0.184631 0 32 (airly light-weight entity) widthshow 224.008209 612.664673 M 0.184631 0 32 (. It is f) widthshow 250.572159 612.664673 M 0.184631 0 32 (airly cheap to create and has lo) widthshow 375.28009 612.664673 M 0.184631 0 32 (w o) widthshow 390.034821 612.664673 M 0.184631 0 32 (v) widthshow 394.884888 612.664673 M 0.184631 0 32 (erhead to) widthshow 72 624.664612 M 0.399963 0 32 (operate. This is true because a thread has little state \(mostly its re) widthshow 337.439667 624.664612 M 0.399963 0 32 (gister state\); its o) widthshow 406.999695 624.664612 M 0.399963 0 32 (wning) widthshow 72 636.664551 M 0.038528 0 32 (task bears the b) widthshow 133.845703 636.664551 M 0.038528 0 32 (urden of resource management. On a multiprocessor it is possible for mul-) widthshow 72 648.66449 M 0.273697 0 32 (tiple threads in a task to e) widthshow 175.702271 648.66449 M 0.273697 0 32 (x) widthshow 180.552353 648.66449 M 0.273697 0 32 (ecute in parallel. Ev) widthshow 261.203552 648.66449 M 0.273697 0 32 (en when parallelism is not the goal, multi-) widthshow 72 660.664429 M 1.185333 0 32 (ple threads ha) widthshow 129.710785 660.664429 M 1.185333 0 32 (v) widthshow 134.560867 660.664429 M 1.185333 0 32 (e an adv) widthshow 170.001678 660.664429 M 1.185333 0 32 (antage in that each thread can use a synchronous programming) widthshow 72 672.664368 M 1.085968 0 32 (style, instead of attempting asynchronous programming with a single thread attempting) widthshow (to pro) 72.0 684.664 T (vide multiple services.) 95.46 684.664 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 8 8 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (4 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Intr) 180.0 55.824 T (oduction) 195.336 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Bold) 12 1 mymakefontmetric 3 FF (Memory Management) 180.0 113.984 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 180 130.650589 M 0.341644 0 32 (The Mach k) widthshow 228.903351 130.650589 M 0.341644 0 32 (ernel pro) widthshow 264.9151 130.650589 M 0.341644 0 32 (vides the mechanisms to support lar) widthshow 410.043396 130.650589 M 0.341644 0 32 (ge, potentially sparse virtual ad-) widthshow 180 142.650528 M 0.655365 0 32 (dress spaces. Each task has an associated address map \(maintained by the k) widthshow 489.084473 142.650528 M 0.655365 0 32 (ernel\) which) widthshow 180 154.650467 M 1.524582 0 32 (controls the translation of virtual address in the task\325) widthshow 402.176971 154.650467 M 1.524582 0 32 (s address space into ph) widthshow 499.875336 154.650467 M 1.524582 0 32 (ysical ad-) widthshow 180 166.650406 M 0.466644 0 32 (dresses. As is true in virtual memory systems, the contents of the entire address space of) widthshow 180 178.650345 M 1.241379 0 32 (an) widthshow 189.290085 178.650345 M 1.241379 0 32 (y gi) widthshow 205.5616 178.650345 M 1.241379 0 32 (v) widthshow 210.411682 178.650345 M 1.241379 0 32 (en task is most lik) widthshow 287.507263 178.650345 M 1.241379 0 32 (ely not completely resident in ph) widthshow 425.044189 178.650345 M 1.241379 0 32 (ysical memory at an) widthshow 509.438416 178.650345 M 1.241379 0 32 (y gi) widthshow 525.7099 178.650345 M 1.241379 0 32 (v) widthshow 530.559998 178.650345 M 1.241379 0 32 (en) widthshow 180 190.650284 M 0.942642 0 32 (time, and mechanisms must e) widthshow 301.670654 190.650284 M 0.942642 0 32 (xist to use ph) widthshow 357.508606 190.650284 M 0.942642 0 32 (ysical memory as a cache for the virtual ad-) widthshow 180 202.650223 M 1.178314 0 32 (dress spaces of tasks. Unlik) widthshow 294.873322 202.650223 M 1.178314 0 32 (e traditional virtual memory designs, the Mach k) widthshow 498.001587 202.650223 M 1.178314 0 32 (ernel does) widthshow 180 214.650162 M 0.544617 0 32 (not implement all of this caching itself; it endea) widthshow 375.25705 214.650162 M 0.544617 0 32 (v) widthshow 380.057159 214.650162 M 0.544617 0 32 (ors to allo) widthshow 420.896545 214.650162 M 0.544617 0 32 (w user mode tasks the ability) widthshow (to participate in these mechanisms.) 180.0 226.65 T 180 250.65004 M 1.978455 0 32 (Unlik) widthshow 202.680054 250.65004 M 1.978455 0 32 (e all other resources in the Mach system, virtual memory is not referenced via) widthshow 180 262.649963 M 0.064957 0 32 (ports. Memory can be referenced only by using virtual addresses as indices into a particu-) widthshow 180 274.649902 M 1.629944 0 32 (lar task\325) widthshow 213.570251 274.649902 M 1.629944 0 32 (s address space. The memory \(and the associated address map\) that de\336nes a) widthshow (task\325) 180.0 286.65 T (s address space can be partially shared with other tasks.) 198.89 286.65 T 180 310.64978 M 1.456909 0 32 (A task can allocate ne) widthshow 273.327789 310.64978 M 1.456909 0 32 (w ranges of memory within its address space, de-allocate them,) widthshow 180 322.649719 M 0.369217 0 32 (and change protections on them. It can also specify ) widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 390.502991 322.649719 M 0.369217 0 32 (inheritance) widthshow 4 FF 436.052979 322.649719 M 0.369217 0 32 ( properties for the ranges.) widthshow 180 334.649658 M 0.141708 0 32 (A ne) widthshow 199.051849 334.649658 M 0.141708 0 32 (w task is created by specifying an e) widthshow 341.803894 334.649658 M 0.141708 0 32 (xisting task as a base from which to construct the) widthshow 180 346.649597 M 0.481293 0 32 (address space for the ne) widthshow 277.195312 346.649597 M 0.481293 0 32 (w task. The inheritance attrib) widthshow 395.840637 346.649597 M 0.481293 0 32 (ute of each range of the memory of) widthshow 180 358.649536 M 0.192062 0 32 (the e) widthshow 199.202148 358.649536 M 0.192062 0 32 (xisting task determines whether the ne) widthshow 353.502625 358.649536 M 0.192062 0 32 (w task has that range de\336ned and whether that) widthshow (range is virtually copied or shared with the e) 180.0 370.649 T (xisting task.) 358.15 370.649 T 180 394.649414 M 1.652679 0 32 (W) widthshow 189.040222 394.649414 M 1.652679 0 32 (ithin Mach, most virtual cop) widthshow 309.161011 394.649414 M 1.652679 0 32 (y operations for memory are actually achie) widthshow 490.447235 394.649414 M 1.652679 0 32 (v) widthshow 495.297302 394.649414 M 1.652679 0 32 (ed through) widthshow 180 406.649353 M 1.568863 0 32 (cop) widthshow 194.340057 406.649353 M 1.568863 0 32 (y-on-write optimizations. A cop) widthshow 327.266724 406.649353 M 1.568863 0 32 (y-on-write optimization is accomplished by not di-) widthshow 180 418.649292 M 0.469238 0 32 (rectly cop) widthshow 220.0793 418.649292 M 0.469238 0 32 (ying the range, b) widthshow 288.497131 418.649292 M 0.469238 0 32 (ut by protected sharing. The tw) widthshow 415.723389 418.649292 M 0.469238 0 32 (o tasks both share the memory) widthshow 180 430.649231 M 0.294647 0 32 (to be copied, b) widthshow 239.564056 430.649231 M 0.294647 0 32 (ut with read-only access. When either task attempts to modify a portion of) widthshow 180 442.64917 M 0.276825 0 32 (the range, that portion is copied at that time. This lazy e) widthshow 405.825226 442.64917 M 0.276825 0 32 (v) widthshow 410.575378 442.64917 M 0.276825 0 32 (aluation of memory copies is an) widthshow 180 454.649109 M 0.469055 0 32 (important performance optimization performed by the Mach k) widthshow 432.303467 454.649109 M 0.469055 0 32 (ernel, and important to the) widthshow (communication / memory philosoph) 180.0 466.649 T (y of Mach.) 325.23 466.649 T 180 490.648987 M 0.047943 0 32 (An) widthshow 192.070084 490.648987 M 0.047943 0 32 (y gi) widthshow 207.148163 490.648987 M 0.047943 0 32 (v) widthshow 211.998245 490.648987 M 0.047943 0 32 (en re) widthshow 231.606277 490.648987 M 0.047943 0 32 (gion of memory is ) widthshow 5 FF 307.908051 490.648987 M 0.047943 0 32 (bac) widthshow 322.148163 490.648987 M 0.047943 0 32 (k) widthshow 326.48822 490.648987 M 0.047943 0 32 (ed) widthshow 4 FF 335.928223 490.648987 M 0.047943 0 32 ( by a ) widthshow 5 FF 358.012054 490.648987 M 0.047943 0 32 (memory object) widthshow 4 FF 417.210022 490.648987 M 0.047943 0 32 (. A ) widthshow 5 FF 432.025879 490.648987 M 0.047943 0 32 (memory mana) widthshow 488.9039 490.648987 M 0.047943 0 32 (g) widthshow 493.803955 490.648987 M 0.047943 0 32 (er) widthshow 4 FF 502.133972 490.648987 M 0.047943 0 32 ( task pro-) widthshow 180 502.648926 M 1.424973 0 32 (vides the polic) widthshow 241.030029 502.648926 M 1.424973 0 32 (y go) widthshow 259.805084 502.648926 M 1.424973 0 32 (v) widthshow 264.655151 502.648926 M 1.424973 0 32 (erning the relationship between the image of a set of pages while) widthshow 180 514.648865 M 0.455704 0 32 (cached in memory \(the ph) widthshow 286.192871 514.648865 M 0.455704 0 32 (ysical memory contents of a memory re) widthshow 447.637177 514.648865 M 0.455704 0 32 (gion\) and the image of) widthshow 180 526.648804 M 1.73996 0 32 (that set of pages when not so cached \(the abstract ) widthshow 5 FF 397.349609 526.648804 M 1.73996 0 32 (memory object) widthshow 4 FF 458.239594 526.648804 M 1.73996 0 32 (\). The Mach k) widthshow 520.009521 526.648804 M 1.73996 0 32 (ernel) widthshow 180 538.648743 M 1.467239 0 32 (comes with a def) widthshow 252.341782 538.648743 M 1.467239 0 32 (ault memory manager that pro) widthshow 379.150818 538.648743 M 1.467239 0 32 (vides basic non-persistent memory ob-) widthshow (jects that are zero \336lled initially and paged ag) 180.0 550.649 T (ainst system paging space.) 362.14 550.649 T 3 FF (T) 180.0 581.982 T (ask to T) 186.901 581.982 T (ask Communication) 227.137 581.982 T 4 FF 180 598.64856 M 2.352676 0 32 (Communication between tasks is a v) widthshow 337.993469 598.64856 M 2.352676 0 32 (ery important element of the Mach philosoph) widthshow 533.149536 598.64856 M 2.352676 0 32 (y) widthshow 537.499939 598.64856 M 2.352676 0 32 (.) widthshow 180 610.64856 M 0.060608 0 32 (Mach belie) widthshow 224.520752 610.64856 M 0.060608 0 32 (v) widthshow 229.370834 610.64856 M 0.060608 0 32 (es in a a client / serv) widthshow 311.234558 610.64856 M 0.060608 0 32 (er system structure in which tasks \(clients\) access servic-) widthshow 180 622.648438 M 0.958405 0 32 (es by making requests of other tasks \(serv) widthshow 354.028931 622.648438 M 0.958405 0 32 (ers\) via messages sent o) widthshow 453.802643 622.648438 M 0.958405 0 32 (v) widthshow 458.65271 622.648438 M 0.958405 0 32 (er a communication) widthshow 180 634.648438 M 1.328506 0 32 (channel. Since the Mach k) widthshow 291.024109 634.648438 M 1.328506 0 32 (ernel pro) widthshow 328.022705 634.648438 M 1.328506 0 32 (vides v) widthshow 357.811279 634.648438 M 1.328506 0 32 (ery fe) widthshow 381.929932 634.648438 M 1.328506 0 32 (w services of its o) widthshow 459.204102 634.648438 M 1.328506 0 32 (wn \(in particular) widthshow 528.111328 634.648438 M 1.328506 0 32 (, it) widthshow 180 646.648315 M 0.66925 0 32 (pro) widthshow 193.180084 646.648315 M 0.66925 0 32 (vides no \336le service\), a Mach task will need to communicate with a potentially great) widthshow 180 658.648315 M 0.423309 0 32 (man) widthshow 197.070084 658.648315 M 0.423309 0 32 (y other tasks that do pro) widthshow 295.416718 658.648315 M 0.423309 0 32 (vide these services. These communication channels in Mach) widthshow 180 670.648193 M 1.14566 0 32 (are called ) widthshow 5 FF 223.381332 670.648193 M 1.14566 0 32 (ports) widthshow 4 FF 243.94133 670.648193 M 1.14566 0 32 (. A port is a unidirectional channel consisting of a \(\336x) widthshow 471.058044 670.648193 M 1.14566 0 32 (ed length\) queue) widthshow 180 682.648193 M 1.195602 0 32 (that holds ) widthshow 5 FF 224.061203 682.648193 M 1.195602 0 32 (messa) widthshow 248.40126 682.648193 M 1.195602 0 32 (g) widthshow 253.301315 682.648193 M 1.195602 0 32 (es) widthshow 4 FF 261.631317 682.648193 M 1.195602 0 32 (. A message is a typed collection of data. A port is named by port) widthshow 5 FF 180 694.648071 M 1.23436 0 32 (right) widthshow 4 FF 199.449997 694.648071 M 1.23436 0 32 (s held by tasks. A task can manipulate a port only if it holds the appropriate port) widthshow grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 9 9 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 427 731.706665 M -2.5 0 32 (5 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Structur) 72.0 55.824 T (e of this Document) 104.832 55.824 T 0.25 SL 3.86 setmiterlimit 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 72 114.666626 M 0.407745 0 32 (rights. Only one task can hold the ) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 212.064224 114.666626 M 0.407745 0 32 (r) widthshow 215.584427 114.666626 M 0.407745 0 32 (eceive right) widthshow 3 FF 262.92218 114.666626 M 0.407745 0 32 ( for a port. This one task is allo) widthshow 390.644287 114.666626 M 0.407745 0 32 (wed to re-) widthshow 72 126.666565 M 1.480667 0 32 (cei) widthshow 83.410141 126.666565 M 1.480667 0 32 (v) widthshow 88.260223 126.666565 M 1.480667 0 32 (e \(read\) messages from the port queue. Multiple tasks can hold ) widthshow 4 FF 358.387573 126.666565 M 1.480667 0 32 (send rights) widthshow 3 FF 404.038269 126.666565 M 1.480667 0 32 ( to the) widthshow 72 138.666504 M 0.556412 0 32 (port that allo) widthshow 123.972961 138.666504 M 0.556412 0 32 (w them to send \(write\) messages into the queue. A task communicates with) widthshow 72 150.666443 M 0.905991 0 32 (another task by b) widthshow 143.118088 150.666443 M 0.905991 0 32 (uilding a data structure that contains a set of typed data elements, and) widthshow 72 162.666382 M 1.25354 0 32 (then performing a message-send operation on a port for which it holds send rights. At) widthshow 72 174.666321 M 0.835648 0 32 (some later time, the task with recei) widthshow 216.464035 174.666321 M 0.835648 0 32 (v) widthshow 221.314117 174.666321 M 0.835648 0 32 (e rights to that port will perform a message-recei) widthshow 422.709473 174.666321 M 0.835648 0 32 (v) widthshow 427.55954 174.666321 M 0.835648 0 32 (e) widthshow 72 186.66626 M 0.745804 0 32 (operation. Note that this message transfer is an asynchronous operation. The message is) widthshow 72 198.666199 M 0.120956 0 32 (logically copied into the recei) widthshow 191.103973 198.666199 M 0.120956 0 32 (ving task \(possibly with cop) widthshow 304.267853 198.666199 M 0.120956 0 32 (y-on-write optimizations\). Mul-) widthshow 72 210.666138 M 0.544922 0 32 (tiple threads within the recei) widthshow 187.799835 210.666138 M 0.544922 0 32 (ving task can be attempting to recei) widthshow 333.019531 210.666138 M 0.544922 0 32 (v) widthshow 337.869598 210.666138 M 0.544922 0 32 (e messages from a gi) widthshow 423.669434 210.666138 M 0.544922 0 32 (v-) widthshow (en port, b) 72.0 222.666 T (ut only one thread will recei) 109.85 222.666 T (v) 222.08 222.666 T (e an) 226.93 222.666 T (y gi) 243.16 222.666 T (v) 258.191 222.666 T (en message.) 263.041 222.666 T 72 246.666092 M 0.956879 0 32 (The Mach k) widthshow 122.13382 246.666092 M 0.956879 0 32 (ernel does not understand distrib) widthshow 256.301453 246.666092 M 0.956879 0 32 (ution at all \(unless con\336gured with the e) widthshow 423.669678 246.666092 M 0.956879 0 32 (x-) widthshow 3 FF 72 258.666077 M 1.399948 0 32 (perimental multicomputer support, which pro) widthshow 259.379883 258.666077 M 1.399948 0 32 (vides distrib) widthshow 309.749939 258.666077 M 1.399948 0 32 (uted shared memory and IPC) widthshow 72 270.666077 M 0.357925 0 32 (within a collection of Mach nodes\). Ho) widthshow 230.817703 270.666077 M 0.357925 0 32 (we) widthshow 242.227844 270.666077 M 0.357925 0 32 (v) widthshow 247.077927 270.666077 M 0.357925 0 32 (er) widthshow 254.448151 270.666077 M 0.357925 0 32 (, the Mach IPC f) widthshow 322.159912 270.666077 M 0.357925 0 32 (acility is designed so that a) widthshow 3 FF (serv) 72.0 282.666 T (er task \(the Net Message serv) 88.51 282.666 T (er\) can transparently forw) 206.38 282.666 T (ard messages o) 309.85 282.666 T (v) 370.24 282.666 T (er a netw) 375.09 282.666 T (ork.) 411.641 282.666 T 72 324.999298 360 3.024002 CR 432 326.51 M 72 326.51 L S 0 0 612 792 CR 5 (Times-Bold) 14 1 mymakefontmetric 5 FF (Structur) 72.0 320.333 T (e of this Document) 123.072 320.333 T 3 FF 72 344.689941 M 0.799973 0 32 (The ne) widthshow 100.14006 344.689941 M 0.799973 0 32 (xt chapter of this document pro) widthshow 229.250015 344.689941 M 0.799973 0 32 (vides a brief, non-formal model of the system ar-) widthshow 72 356.68988 M 0.198547 0 32 (chitecture supported by the Mach k) widthshow 214.252808 356.68988 M 0.198547 0 32 (ernel. This attempts to discuss each feature of the k) widthshow 420.899811 356.68988 M 0.198547 0 32 (er-) widthshow 72 368.689819 M 3.669083 0 32 (nel in an isolated w) widthshow 164.34639 368.689819 M 3.669083 0 32 (ay) widthshow 173.136749 368.689819 M 3.669083 0 32 (, b) widthshow 186.605942 368.689819 M 3.669083 0 32 (uilding to an understanding of the programming model) widthshow (supported, without suggesting an) 72.0 380.69 T (y particular method of use.) 204.07 380.69 T 72 404.689697 M 0.391312 0 32 (The remaining chapters of this document discuss each feature in turn, so as to allo) widthshow 405.228516 404.689697 M 0.391312 0 32 (w pro-) widthshow 72 416.689636 M 0.516129 0 32 (grammers to better understand ho) widthshow 208.234665 416.689636 M 0.516129 0 32 (w to use these features in a reasonably consistent man-) widthshow (ner) 72.0 428.69 T (.) 84.22 428.69 T 52 251.99942 2 21.999969 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 10 10 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (6 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Intr) 180.0 55.824 T (oduction) 195.336 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 11 11 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 2 SL 3.86 setmiterlimit 0 G 432 45 M 72 45 L S 2 SC 432 342 M 72 342 L S 0.25 SL 432 720 M 72 720 L S 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 427 731.706665 M -2.5 0 32 (7 ) widthshow 0 0 612 792 CR 1 G 72 99 360 225 NF 0 G 2 (Times-Roman) 12 1 mymakefontmetric 2 FF 72 114.999969 M 1.19989 0 (CHAPTER 2) ashow 3 (Times-Roman) 24 1 mymakefontmetric 3 FF 180 114.999969 M -0.479736 0 (Architectural Model) ashow 1 G 72 360 360 344.015991 NF 0 G 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 72 366.666626 M 1.736862 0 32 (Lik) widthshow 85.790054 366.666626 M 1.736862 0 32 (e all systems, the Mach system has, as its primary responsibility) widthshow 358.609039 366.666626 M 1.736862 0 32 (, the pro) widthshow 394.982849 366.666626 M 1.736862 0 32 (vision of) widthshow 72 378.666565 M 0.474121 0 32 (points of control that e) widthshow 164.29657 378.666565 M 0.474121 0 32 (x) widthshow 169.146652 378.666565 M 0.474121 0 32 (ecute instructions within some frame) widthshow 318.553284 378.666565 M 0.474121 0 32 (w) widthshow 325.67334 378.666565 M 0.474121 0 32 (ork. In Mach, these points) widthshow 72 390.666504 M 0.524521 0 32 (of control are called ) widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 156.848099 390.666504 M 0.524521 0 32 (thr) widthshow 168.1483 390.666504 M 0.524521 0 32 (eads) widthshow 4 FF 186.478302 390.666504 M 0.524521 0 32 (. Threads e) widthshow 231.527435 390.666504 M 0.524521 0 32 (x) widthshow 236.377518 390.666504 M 0.524521 0 32 (ecute in a ) widthshow 5 FF 278.771088 390.666504 M 0.524521 0 32 (virtual) widthshow 4 FF 305.441101 390.666504 M 0.524521 0 32 ( en) widthshow 317.505829 390.666504 M 0.524521 0 32 (vironment. The virtual en) widthshow 420.889618 390.666504 M 0.524521 0 32 (vi-) widthshow 72 402.666443 M 0.730743 0 32 (ronment.pro) widthshow 121.010086 402.666443 M 0.730743 0 32 (vided by the Mach k) widthshow 206.043121 402.666443 M 0.730743 0 32 (ernel consists of a ) widthshow 5 FF 283.396118 402.666443 M 0.730743 0 32 (virtual) widthshow 4 FF 310.066101 402.666443 M 0.730743 0 32 ( processor that e) widthshow 377.368408 402.666443 M 0.730743 0 32 (x) widthshow 382.218506 402.666443 M 0.730743 0 32 (ecutes all of) widthshow 72 414.666382 M 0.044968 0 32 (the user space accessible hardw) widthshow 198.699951 414.666382 M 0.044968 0 32 (are instructions, augmented by emulated instructions \(sys-) widthshow 72 426.666321 M 0.154266 0 32 (tem traps\) pro) widthshow 128.258621 426.666321 M 0.154266 0 32 (vided by the k) widthshow 185.561478 426.666321 M 0.154266 0 32 (ernel; the virtual processor accesses a set of \(virtualized\) re) widthshow 423.669983 426.666321 M 0.154266 0 32 (g-) widthshow 72 438.66626 M 0.933304 0 32 (isters and some ) widthshow 5 FF 138.959915 438.66626 M 0.933304 0 32 (virtual) widthshow 4 FF 165.629913 438.66626 M 0.933304 0 32 ( memory that otherwise responds as does the machine\325) widthshow 391.396667 438.66626 M 0.933304 0 32 (s ph) widthshow 408.669983 438.66626 M 0.933304 0 32 (ysical) widthshow 72 450.666199 M 1.658173 0 32 (memory; all other hardw) widthshow 176.024582 450.666199 M 1.658173 0 32 (are resources are accessible only via special combinations of) widthshow 72 462.666138 M 2.291794 0 32 (memory accesses and emulated instructions. Note that all resources pro) widthshow 377.976257 462.666138 M 2.291794 0 32 (vided by the) widthshow 72 474.666077 M 0.061371 0 32 (Mach k) widthshow 102.23143 474.666077 M 0.061371 0 32 (ernel are virtualized. This chapter describes, at top le) widthshow 314.082581 474.666077 M 0.061371 0 32 (v) widthshow 318.932648 474.666077 M 0.061371 0 32 (el, the elements of the virtu-) widthshow (al en) 72.0 486.666 T (vironment seen by Mach threads.) 90.76 486.666 T 72 528.999268 360 3.024002 CR 432 530.51 M 72 530.51 L S 0 0 612 792 CR 6 (Times-Bold) 14 1 mymakefontmetric 6 FF (Elements) 72.0 524.333 T 4 FF (The Mach k) 72.0 548.69 T (ernel pro) 120.22 548.69 T (vides an en) 155.89 548.69 T (vironment consisting of the follo) 200.48 548.69 T (wing elements:) 331.341 548.69 T 7 (Times-Roman) 7 1 mymakefontmetric 7 FF 72.0 566.69 T 4 FF 85.535995 566.689819 M 0.378906 0 32 (thread \321 An e) widthshow 145.672806 566.689819 M 0.378906 0 32 (x) widthshow 150.522888 566.689819 M 0.378906 0 32 (ecution point of control. A thread is a light-weight entity; most of the) widthshow (state pertinent to a thread is associated with its containing task.) 85.536 578.69 T 7 FF 72.0 593.69 T 4 FF 85.535995 593.689697 M 0.565872 0 32 (task \321 A container to hold references to resources in the form of a port name space,) widthshow (a virtual address space and a set of threads.) 85.536 605.69 T 7 FF 72.0 620.69 T 4 FF (port \321 A unidirectional communication channel between tasks.) 85.536 620.69 T 7 FF 72.0 635.69 T 4 FF 85.535995 635.689514 M 0.438538 0 32 (port set \321 A set of ports which can be treated as a single unit when recei) widthshow 384.462769 635.689514 M 0.438538 0 32 (ving a mes-) widthshow (sage.) 85.536 647.689 T 7 FF 72.0 662.689 T 4 FF (port right \321A capability allo) 85.536 662.689 T (wing particular rights to access a port.) 201.946 662.689 T 7 FF 72.0 677.689 T 4 FF 85.535995 677.689331 M 0.586243 0 32 (port name space \321 An inde) widthshow 200.237305 677.689331 M 0.586243 0 32 (x) widthshow 205.087387 677.689331 M 0.586243 0 32 (ed collection of port names each of which names a par-) widthshow (ticular port right.) 85.536 689.689 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 12 12 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (8 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Ar) 180.0 55.824 T (chitectural Model) 190.332 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 7 1 mymakefontmetric 3 FF 180.0 112.651 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF (message \321 A typed collection of data passed between tw) 193.536 112.651 T (o tasks.) 423.666 112.651 T 3 FF 180.0 127.651 T 4 FF (message queue \321 A queue of messages associated with a single port.) 193.536 127.651 T 3 FF 180.0 142.651 T 4 FF 193.535995 142.650635 M 0.546417 0 32 (virtual address space \321 A sparsely populated inde) widthshow 399.671021 142.650635 M 0.546417 0 32 (x) widthshow 404.521118 142.650635 M 0.546417 0 32 (ed set of memory pages that may) widthshow 193.535995 154.65062 M 1.346664 0 32 (be referenced by the threads within a task. Ranges of pages may ha) widthshow 478.036133 154.65062 M 1.346664 0 32 (v) widthshow 482.8862 154.65062 M 1.346664 0 32 (e arbitrary at-) widthshow 193.535995 166.650604 M 0.391235 0 32 (trib) widthshow 207.226105 166.650604 M 0.391235 0 32 (utes and semantics associated with them via mechanisms implemented by the k) widthshow 528.89978 166.650604 M 0.391235 0 32 (er-) widthshow (nel and e) 193.536 178.651 T (xternal memory managers.) 229.486 178.651 T 3 FF 180.0 193.651 T 4 FF 193.535995 193.650574 M 0.451965 0 32 (abstract memory object \321 An abstract object that represents the non-resident state of) widthshow 193.535995 205.650528 M 1.831818 0 32 (the memory ranges back) widthshow 296.961517 205.650528 M 1.831818 0 32 (ed by this object. The task that implements this object is) widthshow (called a memory manager) 193.536 217.65 T (.) 296.566 217.65 T 3 FF 180.0 232.65 T 4 FF 193.535995 232.650406 M 0.354538 0 32 (memory cache object \321 A k) widthshow 310.45874 232.650406 M 0.354538 0 32 (ernel object that contains the resident state of the memo-) widthshow (ry ranges back) 193.536 244.65 T (ed by an abstract memory object.) 251.746 244.65 T 3 FF 180.0 259.65 T 4 FF (processor \321 A ph) 193.536 259.65 T (ysical processor capable of e) 266.526 259.65 T (x) 381.336 259.65 T (ecuting threads) 386.186 259.65 T 3 FF 180.0 274.65 T 4 FF 193.535995 274.650208 M 0.237732 0 32 (processor set \321 A set of processors, each of which can be used to e) widthshow 467.474365 274.650208 M 0.237732 0 32 (x) widthshow 472.324463 274.650208 M 0.237732 0 32 (ecute the threads) widthshow (assigned to the processor set.) 193.536 286.65 T 3 FF 180.0 301.65 T 4 FF (node \321 An indi) 193.536 301.65 T (vidual multiprocessor within a multicomputer) 258.006 301.65 T (.) 440.786 301.65 T 3 FF 180.0 316.65 T 4 FF (host \321 The multiprocessor/multicomputer as a whole.) 193.536 316.65 T 3 FF 180.0 331.65 T 4 FF (de) 193.536 331.65 T (vice \321 Ph) 202.726 331.65 T (ysical de) 244.896 331.65 T (vice accessible by user mode tasks.) 279.916 331.65 T 3 FF 180.0 346.65 T 4 FF (e) 193.536 346.65 T (v) 197.726 346.65 T (ent \321 A k) 202.576 346.65 T (ernel de) 244.416 346.65 T (vice maintained signalling e) 276.096 346.65 T (v) 388.337 346.65 T (ent count.) 393.187 346.65 T 180 370.650024 M 1.308472 0 32 (Each of these notions will be discussed in detail. Ho) widthshow 400.396393 370.650024 M 1.308472 0 32 (we) widthshow 411.806519 370.650024 M 1.308472 0 32 (v) widthshow 416.656616 370.650024 M 1.308472 0 32 (er) widthshow 424.026855 370.650024 M 1.308472 0 32 (, since some of their de\336ni-) widthshow 180 382.649963 M 1.202621 0 32 (tions depend on the de\336nitions of others, some of the k) widthshow 411.636292 382.649963 M 1.202621 0 32 (e) widthshow 415.926361 382.649963 M 1.202621 0 32 (y notions will be discussed in) widthshow (simpli\336ed form so that a full discussion can be understood.) 180.0 394.65 T 180 418.649841 M 0.152435 0 32 (A ) widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 189.872437 418.649841 M 0.152435 0 32 (thr) widthshow 201.172638 418.649841 M 0.152435 0 32 (ead) widthshow 4 FF 215.61264 418.649841 M 0.152435 0 32 ( is the basic computational entity) widthshow 347.665161 418.649841 M 0.152435 0 32 (. A thread belongs to one and only one ) widthshow 5 FF 506.237122 418.649841 M 0.152435 0 32 (task) widthshow 4 FF 522.347107 418.649841 M 0.152435 0 32 ( that) widthshow 180 430.64978 M 0.687897 0 32 (de\336nes its virtual address space. T) widthshow 319.839935 430.64978 M 0.687897 0 32 (o af) widthshow 335.547974 430.64978 M 0.687897 0 32 (fect the structure of the address space, or to refer-) widthshow 180 442.649719 M 0.370636 0 32 (ence an) widthshow 210.480728 442.649719 M 0.370636 0 32 (y resource other than the address space, the thread must e) widthshow 443.697205 442.649719 M 0.370636 0 32 (x) widthshow 448.547302 442.649719 M 0.370636 0 32 (ecute a special trap in-) widthshow 180 454.649658 M 1.539993 0 32 (struction which causes the k) widthshow 298.820038 454.649658 M 1.539993 0 32 (ernel to perform operations on behalf of the thread, or to) widthshow 180 466.649597 M 0.505295 0 32 (send a message to some agent on behalf of the thread. In general, these traps manipulate) widthshow 180 478.649536 M 1.01413 0 32 (resources associated with the task containing the thread. The resources pro) widthshow 488.531433 478.649536 M 1.01413 0 32 (vided by the) widthshow (Mach k) 180.0 490.649 T (ernel that can be directly manipulated are:) 210.17 490.649 T 3 FF 180.0 508.649 T 4 FF (threads) 193.536 508.649 T 3 FF 180.0 523.649 T 4 FF (tasks \(and associated virtual address spaces and port name spaces\)) 193.536 523.649 T 3 FF 180.0 538.649 T 4 FF (processors and processor sets) 193.536 538.649 T 3 FF 180.0 553.649 T 4 FF (hosts \(and, in some cases, nodes\)) 193.536 553.649 T 3 FF 180.0 568.649 T 4 FF (de) 193.536 568.649 T (vices and e) 202.726 568.649 T (v) 246.906 568.649 T (ents) 251.756 568.649 T 180 592.649231 M 0.757828 0 32 (These entities are resources in the sense that the k) widthshow 385.840515 592.649231 M 0.757828 0 32 (ernel pro) widthshow 422.268433 592.649231 M 0.757828 0 32 (vides them, and requests can) widthshow 180 604.64917 M 0.435974 0 32 (be made of the k) widthshow 248.293961 604.64917 M 0.435974 0 32 (ernel to manipulate these entities: to create them, delete them and af) widthshow 525.009827 604.64917 M 0.435974 0 32 (fect) widthshow (their state.) 180.0 616.649 T 180 640.649048 M 0.957825 0 32 (The k) widthshow 203.907883 640.649048 M 0.957825 0 32 (ernel is just one manager that can pro) widthshow 360.152771 640.649048 M 0.957825 0 32 (vide resources \(those listed abo) widthshow 489.364136 640.649048 M 0.957825 0 32 (v) widthshow 494.214233 640.649048 M 0.957825 0 32 (e\) and pro-) widthshow 180 652.648987 M 0.926285 0 32 (vide services. T) widthshow 244.093018 652.648987 M 0.926285 0 32 (asks may also pro) widthshow 318.101959 652.648987 M 0.926285 0 32 (vide services, and implement abstract resources them-) widthshow 180 664.648926 M 1.006622 0 32 (selv) widthshow 195.960083 664.648926 M 1.006622 0 32 (es. The k) widthshow 234.253387 664.648926 M 1.006622 0 32 (ernel pro) widthshow 270.930115 664.648926 M 1.006622 0 32 (vides communications methods that allo) widthshow 435.816711 664.648926 M 1.006622 0 32 (w a client task to request) widthshow 180 676.648865 M 0.598679 0 32 (that a serv) widthshow 222.147446 676.648865 M 0.598679 0 32 (er task \(actually) widthshow 286.565186 676.648865 M 0.598679 0 32 (, a thread e) widthshow 332.081299 676.648865 M 0.598679 0 32 (x) widthshow 336.931396 676.648865 M 0.598679 0 32 (ecuting within it\) pro) widthshow 423.297485 676.648865 M 0.598679 0 32 (vide a service. In this w) widthshow 521.170959 676.648865 M 0.598679 0 32 (ay) widthshow 529.961304 676.648865 M 0.598679 0 32 (, a) widthshow 180 688.648804 M 0.686829 0 32 (task has a dual identity; one identity is that of a resource managed by the k) widthshow 488.772522 688.648804 M 0.686829 0 32 (ernel, whose) widthshow 558 294.983521 2 9.999985 NF 558 324.98349 2 9.999985 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 13 13 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 427 731.706665 M -2.5 0 32 (9 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Elements) 72.0 55.824 T 0.25 SL 3.86 setmiterlimit 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 72 114.666626 M 0.312805 0 32 (resource manager e) widthshow 150.215714 114.666626 M 0.312805 0 32 (x) widthshow 155.065796 114.666626 M 0.312805 0 32 (ecutes within the k) widthshow 231.174271 114.666626 M 0.312805 0 32 (ernel; the second is that of a supplier of resources) widthshow (for whom the resource manager is the task itself.) 72.0 126.667 T 72 150.666504 M 0.699921 0 32 (W) widthshow 81.040222 150.666504 M 0.699921 0 32 (ith the e) widthshow 114.510147 150.666504 M 0.699921 0 32 (xception of the task\325) widthshow 197.990219 150.666504 M 0.699921 0 32 (s virtual address space, all other system resources are ac-) widthshow 72 162.666443 M 0.009308 0 32 (cessed through a le) widthshow 148.148071 162.666443 M 0.009308 0 32 (v) widthshow 152.998154 162.666443 M 0.009308 0 32 (el of indirection kno) widthshow 234.156219 162.666443 M 0.009308 0 32 (wn as a ) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 266.674133 162.666443 M 0.009308 0 32 (port) widthshow 3 FF 283.344147 162.666443 M 0.009308 0 32 (. A port is a unidirectional communi-) widthshow 72 174.666382 M 1.417114 0 32 (cation channel between a client who requests a service and a serv) widthshow 348.748383 174.666382 M 1.417114 0 32 (er who pro) widthshow 394.752686 174.666382 M 1.417114 0 32 (vides the) widthshow 72 186.666321 M 1.467621 0 32 (service. \(If a reply is to be pro) widthshow 202.643448 186.666321 M 1.467621 0 32 (vided to such a service request, a second port must be) widthshow 72 198.66626 M 0.18425 0 32 (used.\) The service to be pro) widthshow 183.851349 198.66626 M 0.18425 0 32 (vided is determined by the manager that recei) widthshow 367.351257 198.66626 M 0.18425 0 32 (v) widthshow 372.201355 198.66626 M 0.18425 0 32 (es the message) widthshow 72 210.666199 M 1.062775 0 32 (sent o) widthshow 96.522858 210.666199 M 1.062775 0 32 (v) widthshow 101.37294 210.666199 M 1.062775 0 32 (er the port. It follo) widthshow 178.974182 210.666199 M 1.062775 0 32 (ws that the recei) widthshow 247.172653 210.666199 M 1.062775 0 32 (v) widthshow 252.022736 210.666199 M 1.062775 0 32 (er for ports associated with k) widthshow 373.046692 210.666199 M 1.062775 0 32 (ernel pro) widthshow 409.779541 210.666199 M 1.062775 0 32 (vided) widthshow 72 222.666138 M 1.161377 0 32 (entities is the k) widthshow 135.664185 222.666138 M 1.161377 0 32 (ernel and the recei) widthshow 212.47847 222.666138 M 1.161377 0 32 (v) widthshow 217.328552 222.666138 M 1.161377 0 32 (er for ports associated with task pro) widthshow 366.896912 222.666138 M 1.161377 0 32 (vided entities is) widthshow 72 234.666077 M 0.647278 0 32 (the task pro) widthshow 119.804642 234.666077 M 0.647278 0 32 (viding that entity) widthshow 188.789551 234.666077 M 0.647278 0 32 (. F) widthshow 199.846909 234.666077 M 0.647278 0 32 (or ports that name task pro) widthshow 309.863403 234.666077 M 0.647278 0 32 (vided entities, it is possible to) widthshow 72 246.666016 M 1.243698 0 32 (change the recei) widthshow 139.20755 246.666016 M 1.243698 0 32 (v) widthshow 144.057632 246.666016 M 1.243698 0 32 (er of messages for that port to be a dif) widthshow 306.911072 246.666016 M 1.243698 0 32 (ferent task. A single task may) widthshow 72 258.665955 M 1.17778 0 32 (ha) widthshow 81.240112 258.665955 M 1.17778 0 32 (v) widthshow 86.090195 258.665955 M 1.17778 0 32 (e multiple ports that refer to resources it supports. F) widthshow 303.740295 258.665955 M 1.17778 0 32 (or that matter) widthshow 359.576111 258.665955 M 1.17778 0 32 (, an) widthshow 375.043945 258.665955 M 1.17778 0 32 (y gi) widthshow 391.251892 258.665955 M 1.17778 0 32 (v) widthshow 396.101959 258.665955 M 1.17778 0 32 (en entity) widthshow 72 270.665894 M 0.221481 0 32 (can ha) widthshow 97.841599 270.665894 M 0.221481 0 32 (v) widthshow 102.691681 270.665894 M 0.221481 0 32 (e multiple ports that represent it, each implying dif) widthshow 307.253662 270.665894 M 0.221481 0 32 (ferent sets of permissible oper-) widthshow 72 282.665833 M 0.251343 0 32 (ations. F) widthshow 106.551422 282.665833 M 0.251343 0 32 (or e) widthshow 121.922852 282.665833 M 0.251343 0 32 (xample, man) widthshow 173.68428 282.665833 M 0.251343 0 32 (y entities ha) widthshow 222.317078 282.665833 M 0.251343 0 32 (v) widthshow 227.16716 282.665833 M 0.251343 0 32 (e a ) widthshow 4 FF 241.54985 282.665833 M 0.251343 0 32 (name) widthshow 3 FF 263.209839 282.665833 M 0.251343 0 32 ( port and a ) widthshow 4 FF 309.205231 282.665833 M 0.251343 0 32 (contr) widthshow 329.865479 282.665833 M 0.251343 0 32 (ol) widthshow 3 FF 337.645477 282.665833 M 0.251343 0 32 ( port \(sometimes called) widthshow 72 294.665771 M 1.101379 0 32 (the pri) widthshow 98.681519 294.665771 M 1.101379 0 32 (vile) widthshow 113.531601 294.665771 M 1.101379 0 32 (ged port\). Access to the control port allo) widthshow 282.631409 294.665771 M 1.101379 0 32 (ws the entity to be manipulated; ac-) widthshow (cess to the name port simply names the entity) 72.0 306.666 T (, for e) 253.56 306.666 T (xample, to return statistics.) 277.01 306.666 T 72 330.665649 M 0.355301 0 32 (There is no system-wide name space for ports. A thread can access only the ports kno) widthshow 419.779694 330.665649 M 0.355301 0 32 (wn) widthshow 72 342.665588 M 0.156631 0 32 (to its containing task. A task holds a set of ) widthshow 4 FF 245.506317 342.665588 M 0.156631 0 32 (port rights) widthshow 3 FF 288.172943 342.665588 M 0.156631 0 32 (, each of which names a \(not neces-) widthshow 72 354.665527 M 0.617096 0 32 (sarily distinct\) port and which speci\336es the rights permitted for that port. Port rights can) widthshow 72 366.665466 M 0.309372 0 32 (be transmitted in messages; this is ho) widthshow 222.496368 366.665466 M 0.309372 0 32 (w a task gets port rights. A port right is named with) widthshow 72 378.665405 M 0.591232 0 32 (a port name, which is an inte) widthshow 190.657486 378.665405 M 0.591232 0 32 (ger chosen by the k) widthshow 270.682495 378.665405 M 0.591232 0 32 (ernel that is meaningful only within the) widthshow (conte) 72.0 390.665 T (xt \(port name space\) of the task holding that right.) 93.51 390.665 T 72 414.665283 M 1.131317 0 32 (Most operations in the system consist of sending a message to a port that names some) widthshow 72 426.665222 M 1.289978 0 32 (manager for the object being manipulated. In this document, this will be sho) widthshow 392.19989 426.665222 M 1.289978 0 32 (wn in the) widthshow (form:) 72.0 438.665 T 4 FF (object ) 108.0 462.665 T 5 (Symbol) 10 1 mymakefontmetric 5 FF 134.94 462.665 T 4 FF ( ) 144.81 462.665 T 1 FF (function) 147.31 462.665 T 3 FF 72 486.665039 M 0.364609 0 32 (which means that the ) widthshow 1 FF 160.668442 486.665039 M 0.364609 0 32 (function) widthshow 3 FF 196.228439 486.665039 M 0.364609 0 32 ( is to be in) widthshow 238.957092 486.665039 M 0.364609 0 32 (v) widthshow 243.757202 486.665039 M 0.364609 0 32 (ok) widthshow 253.657257 486.665039 M 0.364609 0 32 (ed \(by sending an appropriate message\) to a) widthshow 72 498.664978 M 0.349991 0 32 (port that names the ) widthshow 4 FF 152.279968 498.664978 M 0.349991 0 32 (object) widthshow 3 FF 176.719971 498.664978 M 0.349991 0 32 (. Since a message must be sent to some port \(right\), this opera-) widthshow 72 510.664917 M 0.5233 0 32 (tion has an object basis. Ho) widthshow 184.356644 510.664917 M 0.5233 0 32 (we) widthshow 195.766785 510.664917 M 0.5233 0 32 (v) widthshow 200.616867 510.664917 M 0.5233 0 32 (er) widthshow 207.987091 510.664917 M 0.5233 0 32 (, not all entities are named by ports and so this is not a) widthshow 72 522.664917 M 1.794128 0 32 (pure object model. The tw) widthshow 184.336578 522.664917 M 1.794128 0 32 (o main non-port right named entities are port names/rights) widthshow 72 534.664856 M 0.615616 0 32 (themselv) widthshow 107.960083 534.664856 M 0.615616 0 32 (es, and ranges of memory) widthshow 212.802917 534.664856 M 0.615616 0 32 (. \() widthshow 4 FF 221.748535 534.664856 M 0.615616 0 32 (Event) widthshow 3 FF 244.518539 534.664856 M 0.615616 0 32 ( objects are also named by task local IDs.\) T) widthshow 426.999542 534.664856 M 0.615616 0 32 (o) widthshow 72 546.664856 M 1.457672 0 32 (manipulate a memory range, a message is sent to the containing virtual address space) widthshow 72 558.664856 M 0.640717 0 32 (\(named by the o) widthshow 138.382294 558.664856 M 0.640717 0 32 (wning task\). T) widthshow 196.914169 558.664856 M 0.640717 0 32 (o manipulate a port name/right \(and, often, the associated) widthshow 72 570.664795 M 0.227463 0 32 (port\), a message is sent to the containing port name space \(named by the o) widthshow 372.384644 570.664795 M 0.227463 0 32 (wning task\). A) widthshow (subscript notation,) 72.0 582.665 T 4 FF (object ) 108.0 606.665 T 3 FF ([) 134.94 606.665 T 4 FF (id) 138.27 606.665 T 3 FF (] ) 146.05 606.665 T 5 FF 151.88 606.665 T 4 FF ( ) 161.75 606.665 T 1 FF (function) 164.25 606.665 T 3 FF 72 630.664734 M 1.668777 0 32 (is here used to sho) widthshow 152.305252 630.664734 M 1.668777 0 32 (w that an ) widthshow 4 FF 196.471588 630.664734 M 1.668777 0 32 (id) widthshow 3 FF 204.251587 630.664734 M 1.668777 0 32 ( is required as a parameter in the message to indicate) widthshow 72 642.664734 M 0.297623 0 32 (which range or element of ) widthshow 4 FF 180.95813 642.664734 M 0.297623 0 32 (object) widthshow 3 FF 205.398132 642.664734 M 0.297623 0 32 ( is to be manipulated. This form is also used for a hand-) widthshow 3 FF 72 654.664673 M 1.15863 0 32 (ful of operations in which a pri) widthshow 202.57193 654.664673 M 1.15863 0 32 (vile) widthshow 217.422012 654.664673 M 1.15863 0 32 (ged port \(the host control port\) must be supplied as) widthshow (well as the object to be manipulated for the sak) 72.0 666.665 T (e of v) 260.48 666.665 T (erifying pri) 283.1 666.665 T (vile) 328.12 666.665 T (ge for the operation.) 342.97 666.665 T 52 647.998047 2 21.999969 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 14 14 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (10 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Ar) 180.0 55.824 T (chitectural Model) 190.332 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 180 119.983932 360 3.024002 CR 0.25 SL 2 SC 0 G 540 121.5 M 180 121.5 L S 0 0 612 792 CR 3 (Times-Bold) 14 1 mymakefontmetric 3 FF (Thr) 180.0 115.317 T (eads) 203.086 115.317 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 180 139.674561 M 0.152435 0 32 (A ) widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 189.872437 139.674561 M 0.152435 0 32 (thr) widthshow 201.172638 139.674561 M 0.152435 0 32 (ead) widthshow 4 FF 215.61264 139.674561 M 0.152435 0 32 ( is the basic computational entity) widthshow 347.665161 139.674561 M 0.152435 0 32 (. A thread belongs to one and only one ) widthshow 5 FF 506.237122 139.674561 M 0.152435 0 32 (task) widthshow 4 FF 522.347107 139.674561 M 0.152435 0 32 ( that) widthshow (de\336nes its virtual address space. A thread has the follo) 180.0 151.674 T (wing state:) 397.49 151.674 T 6 (Times-Roman) 7 1 mymakefontmetric 6 FF 180.0 169.674 T 4 FF 193.535995 169.674438 M 1.571808 0 32 (Its machine state \(re) widthshow 278.911499 169.674438 M 1.571808 0 32 (gisters and the lik) widthshow 354.356995 169.674438 M 1.571808 0 32 (e\), which change as the thread e) widthshow 491.647949 169.674438 M 1.571808 0 32 (x) widthshow 496.498047 169.674438 M 1.571808 0 32 (ecutes and) widthshow (which can also be changed by a holder of the k) 193.536 181.674 T (ernel thread port.) 381.166 181.674 T 6 FF 180.0 196.674 T 4 FF 193.535995 196.674316 M 0.849487 0 32 (A \(small\) set of thread speci\336c port rights, identifying the thread\325) widthshow 462.831177 196.674316 M 0.849487 0 32 (s k) widthshow 474.970734 196.674316 M 0.849487 0 32 (ernel port and a) widthshow (port used to send e) 193.536 208.674 T (xception messages on behalf of the thread.) 268.376 208.674 T 6 FF 180.0 223.674 T 4 FF (A suspend count, non-zero if the thread is not to e) 193.536 223.674 T (x) 393.076 223.674 T (ecute instructions.) 397.926 223.674 T 6 FF 180.0 238.674 T 4 FF (Resource \(scheduling\) parameters.) 193.536 238.674 T 6 FF 180.0 253.674 T 4 FF (V) 193.536 253.674 T (arious statistics, including statistical PC samples.) 199.647 253.674 T 180 277.674103 M 0.39238 0 32 (A thread operates by e) widthshow 271.389618 277.674103 M 0.39238 0 32 (x) widthshow 276.239685 277.674103 M 0.39238 0 32 (ecuting instructions in the usual w) widthshow 415.041656 277.674103 M 0.39238 0 32 (ay) widthshow 423.832031 277.674103 M 0.39238 0 32 (. V) widthshow 435.335022 277.674103 M 0.39238 0 32 (arious special instructions) widthshow 180 289.674042 M 0.843964 0 32 (trap to the k) widthshow 230.481949 289.674042 M 0.843964 0 32 (ernel, to perform operations on behalf of the thread. The most important of) widthshow 180 301.673981 M 1.013794 0 32 (these k) widthshow 208.963852 301.673981 M 1.013794 0 32 (ernel traps is the ) widthshow 0 FF 281.33905 301.673981 M 1.013794 0 32 (mach_msg_trap) widthshow 4 FF 350.219055 301.673981 M 1.013794 0 32 (, which allo) widthshow 398.936768 301.673981 M 1.013794 0 32 (ws the thread to send messages to) widthshow 180 313.67392 M 0.123291 0 32 (k) widthshow 184.900055 313.67392 M 0.123291 0 32 (ernel and other serv) widthshow 264.26001 313.67392 M 0.123291 0 32 (ers to operate upon resources for it. \(This trap is almost ne) widthshow 498.656372 313.67392 M 0.123291 0 32 (v) widthshow 503.50647 313.67392 M 0.123291 0 32 (er direct-) widthshow (ly called; it is in) 180.0 325.674 T (v) 244.05 325.674 T (ok) 248.85 325.674 T (ed via the ) 258.75 325.674 T 0 FF (mach_msg) 300.13 325.674 T 4 FF ( library routine.\)) 345.68 325.674 T 180 349.673798 M 2.329788 0 32 (Exceptional conditions arising during the thread\325) widthshow 386.909241 349.673798 M 2.329788 0 32 (s e) widthshow 399.919128 349.673798 M 2.329788 0 32 (x) widthshow 404.769226 349.673798 M 2.329788 0 32 (ecution \(\337oating point o) widthshow 507.998657 349.673798 M 2.329788 0 32 (v) widthshow 512.848755 349.673798 M 2.329788 0 32 (er\337o) widthshow 530.928894 349.673798 M 2.329788 0 32 (w) widthshow 537.499268 349.673798 M 2.329788 0 32 (,) widthshow 180 361.673737 M 0.411987 0 32 (page not resident, etc.\) are handled by sending messages to some port. The port used de-) widthshow 180 373.673676 M 0.699188 0 32 (pends on the nature of the condition. The outcome of the e) widthshow 421.391174 373.673676 M 0.699188 0 32 (xceptional condition depends) widthshow (on setting the thread\325) 180.0 385.674 T (s state and/or responding to the e) 264.16 385.674 T (xception message.) 395.66 385.674 T (The operations that can be performed upon a thread are:) 180.0 409.674 T 6 FF 180.0 427.673 T 4 FF (Creation and destruction.) 193.536 427.673 T 6 FF 180.0 442.673 T 4 FF (Suspension and resumption \(manipulating the suspend count\).) 193.536 442.673 T 6 FF 180.0 457.673 T 4 FF (Machine state manipulation.) 193.536 457.673 T 6 FF 180.0 472.673 T 4 FF (Special port manipulation.) 193.536 472.673 T 6 FF 180.0 487.673 T 4 FF (Resource \(scheduling\) control.) 193.536 487.673 T 6 FF 180.0 502.673 T 4 FF (Statistical PC sampling.) 193.536 502.673 T 180 545.006531 360 3.024002 CR 540 546.52 M 180 546.52 L S 0 0 612 792 CR 3 FF (T) 180.0 540.34 T (asks) 188.051 540.34 T 4 FF 180 564.697144 M 0.464661 0 32 (A task can be vie) widthshow 250.47879 564.697144 M 0.464661 0 32 (wed as a container that holds a set of threads. It contains def) widthshow 496.734802 564.697144 M 0.464661 0 32 (ault v) widthshow 519.449585 564.697144 M 0.464661 0 32 (alues) widthshow 180 576.697083 M 0.798416 0 32 (to be applied to its containing threads. Most importantly) widthshow 410.457703 576.697083 M 0.798416 0 32 (, it contains those elements that) widthshow 180 588.697021 M 1.02565 0 32 (its containing threads need to e) widthshow 309.128357 588.697021 M 1.02565 0 32 (x) widthshow 313.978424 588.697021 M 1.02565 0 32 (ecute, namely) widthshow 369.89444 588.697021 M 1.02565 0 32 (, a port name space and a virtual address) widthshow (space. The state associated with a task is:) 180.0 600.697 T 6 FF 180.0 618.697 T 4 FF (The set of contained threads.) 193.536 618.697 T 6 FF 180.0 633.697 T 4 FF (The associated virtual address space.) 193.536 633.697 T 6 FF 180.0 648.697 T 4 FF 193.535995 648.696777 M 0.651474 0 32 (The associated port name space, naming a set of port rights, and a related set of port) widthshow (noti\336cation requests.) 193.536 660.697 T 558 496.006592 2 9.999985 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 15 15 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (11 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (P) 72.0 55.824 T (orts) 77.319 55.824 T 0.25 SL 3.86 setmiterlimit 0 SC 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 7 1 mymakefontmetric 3 FF 72.0 114.667 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 85.535995 114.666626 M 0.428192 0 32 (A \(small\) set of task speci\336c ports, identifying the task\325) widthshow 311.040039 114.666626 M 0.428192 0 32 (s k) widthshow 322.758301 114.666626 M 0.428192 0 32 (ernel port, a def) widthshow 387.25293 114.666626 M 0.428192 0 32 (ault port to) widthshow 85.535995 126.666565 M 1.389465 0 32 (use for e) widthshow 122.595016 126.666565 M 1.389465 0 32 (xception handling for contained threads and bootstrap ports to name other) widthshow (services.) 85.536 138.667 T 3 FF 72.0 153.666 T 4 FF 85.535995 153.666443 M 0.90213 0 32 (Emulation library addresses for routines that g) widthshow 276.428833 153.666443 M 0.90213 0 32 (ain control upon the attempted e) widthshow 409.939575 153.666443 M 0.90213 0 32 (x) widthshow 414.789642 153.666443 M 0.90213 0 32 (ecu-) widthshow (tion of certain system call instructions.) 85.536 165.666 T 3 FF 72.0 180.666 T 4 FF (A suspend count, non-zero if no contained threads are to e) 85.536 180.666 T (x) 318.386 180.666 T (ecute instructions.) 323.236 180.666 T 3 FF 72.0 195.666 T 4 FF (Def) 85.536 195.666 T (ault scheduling parameters for threads.) 100.426 195.666 T 3 FF 72.0 210.666 T 4 FF (V) 85.536 210.666 T (arious statistics, including statistical PC samples.) 91.647 210.666 T 72 234.666229 M 1.172791 0 32 (T) widthshow 77.31044 234.666229 M 1.172791 0 32 (asks are created by specifying a prototype task which speci\336es the host on which the) widthshow 72 246.666168 M 0.298538 0 32 (ne) widthshow 81.19014 246.666168 M 0.298538 0 32 (w task is created, and which can supply \(by inheritance\) v) widthshow 315.815674 246.666168 M 0.298538 0 32 (arious portions of its address) widthshow (space.) 72.0 258.666 T (The operations that can be performed upon a task are:) 72.0 282.666 T 3 FF 72.0 300.666 T 4 FF (Creation and destruction.) 85.536 300.666 T 3 FF 72.0 315.666 T 4 FF (Suspension and resumption.) 85.536 315.666 T 3 FF 72.0 330.666 T 4 FF (Special port manipulation.) 85.536 330.666 T 3 FF 72.0 345.666 T 4 FF (Manipulation of contained threads.) 85.536 345.666 T 3 FF 72.0 360.666 T 4 FF (Statistical PC sampling of the contained threads.) 85.536 360.666 T 72 402.999084 360 3.024002 CR 432 404.51 M 72 404.51 L S 0 0 612 792 CR 5 (Times-Bold) 14 1 mymakefontmetric 5 FF (P) 72.0 398.332 T (orts) 80.274 398.332 T 4 FF 72 422.689697 M 1.13765 0 32 (A port is a unidirectional communication channel between a client who requests a ser-) widthshow 72 434.689636 M 0.497284 0 32 (vice and a serv) widthshow 133.041946 434.689636 M 0.497284 0 32 (er who pro) widthshow 177.206604 434.689636 M 0.497284 0 32 (vides the service. A port has a single recei) widthshow 349.505035 434.689636 M 0.497284 0 32 (v) widthshow 354.355103 434.689636 M 0.497284 0 32 (er and \(potentially\)) widthshow (multiple senders.) 72.0 446.69 T 72 470.689514 M 0.373993 0 32 (The major state associated with a port is its associated message queue. A port also main-) widthshow (tains a count of references \(rights\) to it.) 72.0 482.689 T 72 506.689392 M 1.323273 0 32 (K) widthshow 78.970139 506.689392 M 1.323273 0 32 (ernel services e) widthshow 143.106781 506.689392 M 1.323273 0 32 (xist to allocate ports. Ev) widthshow 245.189957 506.689392 M 1.323273 0 32 (ery system entity \(other than virtual memory) widthshow 72 518.689331 M 0.022461 0 32 (ranges\) is named by a port, so ports are also created implicitly when these entities are cre-) widthshow (ated.) 72.0 530.689 T (The k) 72.0 554.689 T (ernel will pro) 94.95 554.689 T (vide noti\336cation messages upon the death of a port upon request.) 148.68 554.689 T 72 597.022461 360 3.024002 CR 432 598.53 M 72 598.53 L S 0 0 612 792 CR 5 FF (Messages) 72.0 592.356 T 4 FF 72 616.713074 M 0.617477 0 32 (A message is a typed collection of data passed between tw) widthshow 311.914856 616.713074 M 0.617477 0 32 (o entities. A message is not a) widthshow 72 628.713013 M 0.671417 0 32 (system object in its o) widthshow 158.885803 628.713013 M 0.671417 0 32 (wn right. Ho) widthshow 210.808777 628.713013 M 0.671417 0 32 (we) widthshow 222.218918 628.713013 M 0.671417 0 32 (v) widthshow 227.069 628.713013 M 0.671417 0 32 (er) widthshow 234.439224 628.713013 M 0.671417 0 32 (, since messages are queued, the) widthshow 366.776428 628.713013 M 0.671417 0 32 (y are signi\336cant) widthshow 72 640.712952 M 0.785599 0 32 (because the) widthshow 119.005692 640.712952 M 0.785599 0 32 (y can hold state between the time a message is sent and when it is recei) widthshow 415.209839 640.712952 M 0.785599 0 32 (v) widthshow 420.059937 640.712952 M 0.785599 0 32 (ed.) widthshow 72 652.712891 M 0.804626 0 32 (This state consists not only of pure data; it also consists of virtual cop) widthshow 360.960205 652.712891 M 0.804626 0 32 (y memory ranges) widthshow (and port rights.) 72.0 664.713 T 52 353.999146 2 9.999985 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 16 16 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (12 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Ar) 180.0 55.824 T (chitectural Model) 190.332 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 180 119.983932 360 3.024002 CR 0.25 SL 2 SC 0 G 540 121.5 M 180 121.5 L S 0 0 612 792 CR 3 (Times-Bold) 14 1 mymakefontmetric 3 FF (Message Queues) 180.0 115.317 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 180 139.674561 M 1.530685 0 32 (A port basically consists of a queue of messages. This queue is manipulated only via) widthshow 180 151.6745 M 2.199966 0 32 (message operations \() widthshow 0 FF 268.269958 151.6745 M 2.199966 0 32 (mach_msg) widthshow 4 FF 313.819946 151.6745 M 2.199966 0 32 (\) that transmit messages. The state associated with a) widthshow 180 163.674438 M 0.576859 0 32 (queue is the ordered set of messages queued, and a settable limit on the number of mes-) widthshow (sages.) 180.0 175.674 T 180 218.007614 360 3.024002 CR 540 219.52 M 180 219.52 L S 0 0 612 792 CR 3 FF (P) 180.0 213.341 T (ort Rights) 188.274 213.341 T 4 FF 180 237.698242 M 0.943863 0 32 (A port can only be accessed via a port ) widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 343.174805 237.698242 M 0.943863 0 32 (right) widthshow 4 FF 362.624786 237.698242 M 0.943863 0 32 (. A port right is an entity that indicates the) widthshow 180 249.698181 M 0.988724 0 32 (right to access a speci\336c port in a speci\336c w) widthshow 364.598572 249.698181 M 0.988724 0 32 (ay) widthshow 373.388947 249.698181 M 0.988724 0 32 (. In this conte) widthshow 430.645203 249.698181 M 0.988724 0 32 (xt, there are three types of) widthshow (port rights:) 180.0 261.698 T 6 (Times-Roman) 7 1 mymakefontmetric 6 FF 180.0 279.698 T 4 FF (recei) 193.536 279.698 T (v) 212.716 279.698 T (e right \321 Allo) 217.566 279.698 T (ws the holder to recei) 275.926 279.698 T (v) 361.767 279.698 T (e messages from the associated port.) 366.617 279.698 T 6 FF 180.0 294.698 T 4 FF (send right \321 Allo) 193.536 294.698 T (ws the holder to send messages to the associated port.) 265.786 294.698 T 6 FF 180.0 309.698 T 4 FF 193.535995 309.697937 M 0.542404 0 32 (send-once right \321 Allo) widthshow 289.623352 309.697937 M 0.542404 0 32 (ws the holder to send a single message to the associated port.) widthshow (The right self-destructs after the message is sent.) 193.536 321.698 T 180 345.697815 M 0.319977 0 32 (Port rights can be copied and mo) widthshow 313.419952 345.697815 M 0.319977 0 32 (v) widthshow 318.27002 345.697815 M 0.319977 0 32 (ed between tasks via v) widthshow 409.28009 345.697815 M 0.319977 0 32 (arious options in the ) widthshow 0 FF 494.450012 345.697815 M 0.319977 0 32 (mach_msg) widthshow 4 FF 180 357.697754 M -0.005035 0 32 (call, and also by e) widthshow 251.759949 357.697754 M -0.005035 0 32 (xplicit command. Other than message operations, port rights can be ma-) widthshow (nipulated only as members of a port name space.) 180.0 369.698 T 180 393.697632 M 1.030731 0 32 (Port rights are created implicitly when an) widthshow 351.564484 393.697632 M 1.030731 0 32 (y other system entity is created and e) widthshow 506.659698 393.697632 M 1.030731 0 32 (xplicitly) widthshow (via e) 180.0 405.698 T (xplicit port creation.) 199.01 405.698 T 180 429.69751 M 1.496841 0 32 (The k) widthshow 204.446899 429.69751 M 1.496841 0 32 (ernel will, upon request, pro) widthshow 323.044373 429.69751 M 1.496841 0 32 (vide noti\336cation \(to a port of one\325) widthshow 467.015717 429.69751 M 1.496841 0 32 (s choosing\) when) widthshow 180 441.697449 M 0.751221 0 32 (there are no more send rights to a port. The destruction of a send-once right \(other than) widthshow 180 453.697388 M 0.559952 0 32 (by using it to send a message\) generates a send-once noti\336cation sent to the correspond-) widthshow (ing port.) 180.0 465.697 T 180 508.030579 360 3.024002 CR 540 509.54 M 180 509.54 L S 0 0 612 792 CR 3 FF (P) 180.0 503.364 T (ort Name Space) 188.274 503.364 T 4 FF 180 527.721191 M 0.799255 0 32 (Ports and port rights do not ha) widthshow 305.705627 527.721191 M 0.799255 0 32 (v) widthshow 310.555725 527.721191 M 0.799255 0 32 (e system-wide names that allo) widthshow 434.042908 527.721191 M 0.799255 0 32 (w arbitrary ports or rights) widthshow 180 539.72113 M 0.564224 0 32 (to be manipulated directly) widthshow 285.753052 539.72113 M 0.564224 0 32 (. Ports can be manipulated only via port rights, and port rights) widthshow 180 551.721069 M 0.458633 0 32 (can be manipulated only when the) widthshow 319.063263 551.721069 M 0.458633 0 32 (y are contained within a port ) widthshow 5 FF 439.015076 551.721069 M 0.458633 0 32 (name space) widthshow 4 FF 486.403717 551.721069 M 0.458633 0 32 (. A port right) widthshow 180 563.721008 M 0.304947 0 32 (is speci\336ed by a port ) widthshow 5 FF 266.794739 563.721008 M 0.304947 0 32 (name) widthshow 4 FF 288.454742 563.721008 M 0.304947 0 32 ( which is an inde) widthshow 357.294617 563.721008 M 0.304947 0 32 (x into a port name space. Each task has asso-) widthshow (ciated with it a single port name space.) 180.0 575.721 T (An entry in a port name space can ha) 180.0 599.721 T (v) 328.09 599.721 T (e four possible v) 332.94 599.721 T (alues:) 399.07 599.721 T 6 FF 180.0 617.721 T 4 FF (MA) 193.536 617.721 T (CH_POR) 209.246 617.721 T (T_NULL \321 No associated port right.) 246.987 617.721 T 6 FF 180.0 632.721 T 4 FF 193.535995 632.720764 M 2.199432 0 32 (MA) widthshow 209.246216 632.720764 M 2.199432 0 32 (CH_POR) widthshow 246.986542 632.720764 M 2.199432 0 32 (T_DEAD \321 A right w) widthshow 347.894348 632.720764 M 2.199432 0 32 (as associated with this name, b) widthshow 482.011597 632.720764 M 2.199432 0 32 (ut the port to) widthshow (which the right referred has been destro) 193.536 644.721 T (yed.) 352.276 644.721 T 6 FF 180.0 659.721 T 4 FF (a port right \321 A send-once, send or recei) 193.536 659.721 T (v) 359.076 659.721 T (e right for a port.) 363.926 659.721 T 6 FF 180.0 674.721 T 4 FF 193.535995 674.720581 M 0.917053 0 32 (a port set name \321 A name which acts lik) widthshow 366.939545 674.720581 M 0.917053 0 32 (e a recei) widthshow 401.833801 674.720581 M 0.917053 0 32 (v) widthshow 406.683899 674.720581 M 0.917053 0 32 (e right, b) widthshow 444.148102 674.720581 M 0.917053 0 32 (ut that allo) widthshow 488.512329 674.720581 M 0.917053 0 32 (ws recei) widthshow 522.219543 674.720581 M 0.917053 0 32 (ving) widthshow (from multiple ports.) 193.536 686.721 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 17 17 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (13 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (P) 72.0 55.824 T (ort Sets) 77.319 55.824 T 0.25 SL 3.86 setmiterlimit 0 SC 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 72 114.666626 M 0.434952 0 32 (Acquiring a ne) widthshow 132.050049 114.666626 M 0.434952 0 32 (w right in a task generates a ne) widthshow 258.424866 114.666626 M 0.434952 0 32 (w port name. As port rights are manipulat-) widthshow 72 126.666565 M 0.166122 0 32 (ed \(by referring to their port names\) the port names are sometimes themselv) widthshow 377.673584 126.666565 M 0.166122 0 32 (es manipulat-) widthshow 72 138.666504 M 0.876617 0 32 (ed. All send and recei) widthshow 162.17662 138.666504 M 0.876617 0 32 (v) widthshow 167.026703 138.666504 M 0.876617 0 32 (e rights to a gi) widthshow 227.503311 138.666504 M 0.876617 0 32 (v) widthshow 232.353394 138.666504 M 0.876617 0 32 (en port in a gi) widthshow 291.160004 138.666504 M 0.876617 0 32 (v) widthshow 296.010071 138.666504 M 0.876617 0 32 (en port name space will ha) widthshow 407.113281 138.666504 M 0.876617 0 32 (v) widthshow 411.963379 138.666504 M 0.876617 0 32 (e the) widthshow 72 150.666443 M 1.441956 0 32 (same port name. Each send-once right to a gi) widthshow 263.525818 150.666443 M 1.441956 0 32 (v) widthshow 268.375885 150.666443 M 1.441956 0 32 (en port will ha) widthshow 330.55188 150.666443 M 1.441956 0 32 (v) widthshow 335.401947 150.666443 M 1.441956 0 32 (e a dif) widthshow 363.026001 150.666443 M 1.441956 0 32 (ferent port name) widthshow (from each other and from the port name used for an) 72.0 162.666 T (y send or recei) 278.46 162.666 T (v) 336.8 162.666 T (e rights held.) 341.65 162.666 T (Operations supported for port names include:) 72.0 186.666 T 4 (Times-Roman) 7 1 mymakefontmetric 4 FF 72.0 204.666 T 3 FF (Creation \(via creation of a right\) and deletion.) 85.536 204.666 T 4 FF 72.0 219.666 T 3 FF (Query of the associated type.) 85.536 219.666 T 4 FF 72.0 234.666 T 3 FF (Rename.) 85.536 234.666 T (The k) 72.0 258.666 T (ernel will pro) 94.95 258.666 T (vide noti\336cation of a name becoming unusable upon request.) 148.68 258.666 T 3 FF 72 282.666138 M 0.075943 0 32 (Since port name spaces are bound to tasks, the) widthshow 258.257629 282.666138 M 0.075943 0 32 (y are created and destro) widthshow 353.421509 282.666138 M 0.075943 0 32 (yed with their o) widthshow 416.449463 282.666138 M 0.075943 0 32 (wn-) widthshow 3 FF (ing task.) 72.0 294.666 T 72 336.99939 360 3.024002 CR 432 338.51 M 72 338.51 L S 0 0 612 792 CR 5 (Times-Bold) 14 1 mymakefontmetric 5 FF (P) 72.0 332.333 T (ort Sets) 80.274 332.333 T 3 FF 72 356.690002 M 0.937881 0 32 (A port set is a set of ports which can be treated as a single unit when recei) widthshow 383.464172 356.690002 M 0.937881 0 32 (ving a mes-) widthshow 72 368.689941 M 0.670654 0 32 (sage. A ) widthshow 1 FF 105.831314 368.689941 M 0.670654 0 32 (mach_msg) widthshow 3 FF 151.381317 368.689941 M 0.670654 0 32 ( recei) widthshow 173.732117 368.689941 M 0.670654 0 32 (v) widthshow 178.582199 368.689941 M 0.670654 0 32 (e operation is allo) widthshow 251.724304 368.689941 M 0.670654 0 32 (wed ag) widthshow 280.945007 368.689941 M 0.670654 0 32 (ainst a port name that either names a) widthshow 72 380.68988 M 0.705826 0 32 (recei) widthshow 91.180145 380.68988 M 0.705826 0 32 (v) widthshow 96.030228 380.68988 M 0.705826 0 32 (e right, or a port set. A port set contains a collection of recei) widthshow 345.186127 380.68988 M 0.705826 0 32 (v) widthshow 350.036194 380.68988 M 0.705826 0 32 (e rights. When a re-) widthshow 72 392.689819 M 0.951263 0 32 (cei) widthshow 83.410141 392.689819 M 0.951263 0 32 (v) widthshow 88.260223 392.689819 M 0.951263 0 32 (e operation is performed ag) widthshow 201.985321 392.689819 M 0.951263 0 32 (ainst a port set, a message will be recei) widthshow 365.145569 392.689819 M 0.951263 0 32 (v) widthshow 369.995667 392.689819 M 0.951263 0 32 (ed from one of) widthshow 72 404.689758 M 0.851974 0 32 (the ports in the set. The recei) widthshow 192.671997 404.689758 M 0.851974 0 32 (v) widthshow 197.522079 404.689758 M 0.851974 0 32 (ed message will indicate from which member port it w) widthshow 423.669922 404.689758 M 0.851974 0 32 (as) widthshow 72 416.689697 M 0.294373 0 32 (recei) widthshow 91.180145 416.689697 M 0.294373 0 32 (v) widthshow 96.030228 416.689697 M 0.294373 0 32 (ed. It is not allo) widthshow 159.457855 416.689697 M 0.294373 0 32 (wed to directly recei) widthshow 242.011124 416.689697 M 0.294373 0 32 (v) widthshow 246.861206 416.689697 M 0.294373 0 32 (e a message from a port that is a member of a) widthshow 72 428.689636 M 0.586807 0 32 (port set. There is no notion of priority for the ports in a port set; there is no control pro-) widthshow 72 440.689575 M 0.583679 0 32 (vided o) widthshow 102.153763 440.689575 M 0.583679 0 32 (v) widthshow 107.003845 440.689575 M 0.583679 0 32 (er the k) widthshow 138.061264 440.689575 M 0.583679 0 32 (ernel\325) widthshow 160.831573 440.689575 M 0.583679 0 32 (s choice of the port within the port set from which an) widthshow 379.572144 440.689575 M 0.583679 0 32 (y gi) widthshow 395.185974 440.689575 M 0.583679 0 32 (v) widthshow 400.036041 440.689575 M 0.583679 0 32 (en mes-) widthshow (sage is recei) 72.0 452.69 T (v) 120.62 452.69 T (ed.) 125.47 452.69 T (Operations supported for port sets include:) 72.0 476.689 T 4 FF 72.0 494.689 T 3 FF (Creation and deletion.) 85.536 494.689 T 4 FF 72.0 509.689 T 3 FF (Membership changes and membership queries.) 85.536 509.689 T 72 552.022583 360 3.024002 CR 432 553.53 M 72 553.53 L S 0 0 612 792 CR 5 FF (V) 72.0 547.356 T (irtual Addr) 81.59 547.356 T (ess Spaces) 150.176 547.356 T 3 FF 72 571.713196 M 0.877792 0 32 (A virtual address space de\336nes the set of v) widthshow 249.292496 571.713196 M 0.877792 0 32 (alid virtual addresses that a thread e) widthshow 397.709351 571.713196 M 0.877792 0 32 (x) widthshow 402.559448 571.713196 M 0.877792 0 32 (ecuting) widthshow 72 583.713135 M 1.369965 0 32 (within the task o) widthshow 142.250031 583.713135 M 1.369965 0 32 (wning the virtual address space is allo) widthshow 302.419983 583.713135 M 1.369965 0 32 (wed to reference. A virtual ad-) widthshow (dress space is named by its o) 72.0 595.713 T (wning task.) 187.29 595.713 T 72 619.713013 M 1.474945 0 32 (A virtual address space consists of a sparsely populated inde) widthshow 327.024597 619.713013 M 1.474945 0 32 (x) widthshow 331.874695 619.713013 M 1.474945 0 32 (ed set of pages. The at-) widthshow 72 631.712952 M 0.564194 0 32 (trib) widthshow 85.690109 631.712952 M 0.564194 0 32 (utes of indi) widthshow 131.568634 631.712952 M 0.564194 0 32 (vidual pages may be set at will. F) widthshow 269.248077 631.712952 M 0.564194 0 32 (or ef) widthshow 288.162415 631.712952 M 0.564194 0 32 widthshow 314.672485 631.712952 M 0.564194 0 32 (y) widthshow 319.022858 631.712952 M 0.564194 0 32 (, the k) widthshow 344.771301 631.712952 M 0.564194 0 32 (ernel groups virtually) widthshow 72 643.712891 M 0.569946 0 32 (contiguous sets of pages that ha) widthshow 201.579849 643.712891 M 0.569946 0 32 (v) widthshow 206.429932 643.712891 M 0.569946 0 32 (e the same attrib) widthshow 273.759888 643.712891 M 0.569946 0 32 (utes into internal memory re) widthshow 389.209778 643.712891 M 0.569946 0 32 (gions. The) widthshow 72 655.71283 M 0.439224 0 32 (k) widthshow 76.900055 655.71283 M 0.439224 0 32 (ernel is free to split or mer) widthshow 185.445511 655.71283 M 0.439224 0 32 (ge memory re) widthshow 241.71405 655.71283 M 0.439224 0 32 (gions at will. System mechanisms are sensiti) widthshow 422.709534 655.71283 M 0.439224 0 32 (v) widthshow 427.559631 655.71283 M 0.439224 0 32 (e) widthshow 72 667.712769 M 0.877945 0 32 (to the identities of memory re) widthshow 194.839813 667.712769 M 0.877945 0 32 (gions, b) widthshow 227.187866 667.712769 M 0.877945 0 32 (ut most user accesses are not so af) widthshow 369.993652 667.712769 M 0.877945 0 32 (fected, and can) widthshow (span memory re) 72.0 679.713 T (gions freely) 136.28 679.713 T (.) 183.12 679.713 T 52 275.999481 2 9.999985 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 18 18 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (14 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Ar) 180.0 55.824 T (chitectural Model) 190.332 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 180 112.650635 M 0.424576 0 32 (A gi) widthshow 197.674713 112.650635 M 0.424576 0 32 (v) widthshow 202.524796 112.650635 M 0.424576 0 32 (en memory range can ha) widthshow 302.323242 112.650635 M 0.424576 0 32 (v) widthshow 307.173309 112.650635 M 0.424576 0 32 (e distinct semantics associated with it through the actions) widthshow 180 124.650574 M 1.629944 0 32 (of a memory manager) widthshow 272.370148 124.650574 M 1.629944 0 32 (. When a ne) widthshow 324.770142 124.650574 M 1.629944 0 32 (w memory range is established in a virtual address) widthshow 180 136.650513 M 0.397644 0 32 (space, an abstract memory object is speci\336ed \(possibly by def) widthshow 430.658875 136.650513 M 0.397644 0 32 (ault\) that represents the se-) widthshow 180 148.650452 M 0.699265 0 32 (mantics of the memory range, by being associated with a task \(a memory manager\) that) widthshow (pro) 180.0 160.65 T (vides those semantics.) 193.18 160.65 T 180 184.65033 M 0.549957 0 32 (A virtual address space is created when a task is created, and destro) widthshow 456.699585 184.65033 M 0.549957 0 32 (yed when the task is) widthshow 180 196.650269 M 0.286896 0 32 (destro) widthshow 204.340057 196.650269 M 0.286896 0 32 (yed. The initial contents of the address space is determined from v) widthshow 472.756073 196.650269 M 0.286896 0 32 (arious options to) widthshow 180 208.650208 M 1.149979 0 32 (the ) widthshow 0 FF 195.86998 208.650208 M 1.149979 0 32 (task_cr) widthshow 227.350082 208.650208 M 1.149979 0 32 (eate) widthshow 3 FF 244.560089 208.650208 M 1.149979 0 32 ( call, as well as the inheritance properties of the memory ranges of the) widthshow (prototype task used in that call.) 180.0 220.65 T 180 244.650085 M 1.009216 0 32 (Most operations upon a virtual address space name a memory range within the address) widthshow (space. These operations include:) 180.0 256.65 T 4 (Times-Roman) 7 1 mymakefontmetric 4 FF 180.0 274.65 T 3 FF (Creating \(allocating\) and de-allocating a range.) 193.536 274.65 T 4 FF 180.0 289.65 T 3 FF (Cop) 193.536 289.65 T (ying a range.) 210.106 289.65 T 4 FF 180.0 304.65 T 3 FF 193.535995 304.649841 M 1.219406 0 32 (Setting special attrib) widthshow 277.994934 304.649841 M 1.219406 0 32 (utes, including \322wiring\323 the page into ph) widthshow 448.301392 304.649841 M 1.219406 0 32 (ysical memory to pre-) widthshow (v) 193.536 316.65 T (ent e) 198.386 316.65 T (viction.) 217.296 316.65 T 4 FF 180.0 331.65 T 3 FF (Setting memory protection attrib) 193.536 331.65 T (utes.) 324.166 331.65 T 4 FF 180.0 346.65 T 3 FF (Setting inheritance properties.) 193.536 346.65 T 4 FF 180.0 361.65 T 3 FF (Directly reading and writing ranges.) 193.536 361.65 T 180 403.982849 360 3.024002 CR 0.25 SL 2 SC 540 405.49 M 180 405.49 L S 0 0 612 792 CR 5 (Times-Bold) 14 1 mymakefontmetric 5 FF (Abstract Memory Objects) 180.0 399.316 T 3 FF 180 423.673462 M 0.663788 0 32 (The Mach k) widthshow 229.547638 423.673462 M 0.663788 0 32 (ernel allo) widthshow 267.451569 423.673462 M 0.663788 0 32 (ws user mode tasks to pro) widthshow 374.220581 423.673462 M 0.663788 0 32 (vide the semantics associated with refer-) widthshow 180 435.673401 M 0.353271 0 32 (encing portions of a virtual address space. It does this by allo) widthshow 428.046143 435.673401 M 0.353271 0 32 (wing the speci\336cation of an) widthshow 180 447.67334 M 2.608139 0 32 (abstract ) widthshow 6 (Times-Italic) 10 1 mymakefontmetric 6 FF 216.208145 447.67334 M 2.608139 0 32 (memory object) widthshow 3 FF 277.966309 447.67334 M 2.608139 0 32 ( that represents the non-resident state of the memory ranges) widthshow 180 459.673279 M 1.506119 0 32 (back) widthshow 198.78006 459.673279 M 1.506119 0 32 (ed by this memory object. The task that implements this memory object \(that re-) widthshow 180 471.673218 M 1.058655 0 32 (sponds to messages sent to the port that names the memory object\) is called a ) widthshow 6 FF 507.789856 471.673218 M 1.058655 0 32 (memory) widthshow (mana) 180.0 483.673 T (g) 202.12 483.673 T (er) 207.02 483.673 T 3 FF (.) 214.8 483.673 T 180 507.673096 M 0.824966 0 32 (The k) widthshow 203.775024 507.673096 M 0.824966 0 32 (ernel should be vie) widthshow 281.820068 507.673096 M 0.824966 0 32 (wed as using main memory as a \(directly accessible\) cache for) widthshow 180 519.673035 M 0.062057 0 32 (the contents of the v) widthshow 261.098389 519.673035 M 0.062057 0 32 (arious memory objects. The k) widthshow 380.396667 519.673035 M 0.062057 0 32 (ernel is in) widthshow 419.561005 519.673035 M 0.062057 0 32 (v) widthshow 424.361115 519.673035 M 0.062057 0 32 (olv) widthshow 436.991211 519.673035 M 0.062057 0 32 (ed in an asynchronous di-) widthshow 180 531.672974 M 0.917618 0 32 (alog with the v) widthshow 242.222992 531.672974 M 0.917618 0 32 (arious memory managers to maintain this cache, \336lling and \337ushing this) widthshow (cache as the k) 180.0 543.673 T (ernel sees \336t, by sending messages to the abstract memory object ports.) 235.71 543.673 T (The operations upon abstract memory objects include:) 180.0 567.673 T 4 FF 180.0 585.673 T 3 FF (Initialization.) 193.536 585.673 T 4 FF 180.0 600.673 T 3 FF (P) 193.536 600.673 T (age reads.) 198.946 600.673 T 4 FF 180.0 615.673 T 3 FF (P) 193.536 615.673 T (age writes.) 198.946 615.673 T 4 FF 180.0 630.673 T 3 FF (Requests for permission to access pages.) 193.536 630.673 T 4 FF 180.0 645.673 T 3 FF (P) 193.536 645.673 T (age copies.) 198.946 645.673 T 4 FF 180.0 660.672 T 3 FF (T) 193.536 660.672 T (ermination.) 198.946 660.672 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 19 19 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (15 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Memory Cache Objects) 72.0 55.824 T 0.25 SL 3.86 setmiterlimit 0 SC 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 72 121.999924 360 3.024002 CR 0 G 432 123.51 M 72 123.51 L S 0 0 612 792 CR 3 (Times-Bold) 14 1 mymakefontmetric 3 FF (Memory Cache Objects) 72.0 117.333 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 72 141.690552 M 0.376083 0 32 (The portion of the k) widthshow 153.394394 141.690552 M 0.376083 0 32 (ernel\325) widthshow 176.164703 141.690552 M 0.376083 0 32 (s main memory cache that contains the resident pages associat-) widthshow 72 153.690491 M 1.042633 0 32 (ed with a gi) widthshow 121.818039 153.690491 M 1.042633 0 32 (v) widthshow 126.668121 153.690491 M 1.042633 0 32 (en abstract memory object is referred to as the ) widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 323.501831 153.690491 M 1.042633 0 32 (memory cac) widthshow 372.984558 153.690491 M 1.042633 0 32 (he) widthshow 4 FF 382.424561 153.690491 M 1.042633 0 32 ( object. The) widthshow 72 165.69043 M 1.187622 0 32 (memory manager for a memory object holds send rights to the k) widthshow 341.873901 165.69043 M 1.187622 0 32 (ernel\325) widthshow 364.644226 165.69043 M 1.187622 0 32 (s memory cache) widthshow 72 177.690369 M 1.265335 0 32 (object. The memory manager is in) widthshow 215.126907 177.690369 M 1.265335 0 32 (v) widthshow 219.927017 177.690369 M 1.265335 0 32 (olv) widthshow 232.557098 177.690369 M 1.265335 0 32 (ed in an asynchronous dialog with the k) widthshow 400.464508 177.690369 M 1.265335 0 32 (ernel to) widthshow 72 189.690308 M 0.03688 0 32 (pro) widthshow 85.180084 189.690308 M 0.03688 0 32 (vide the abstraction of its abstract memory object by sending messages to the associat-) widthshow (ed memory cache object.) 72.0 201.69 T (The operations upon memory cache objects include:) 72.0 225.69 T 6 (Times-Roman) 7 1 mymakefontmetric 6 FF 72.0 243.69 T 4 FF (Set attrib) 85.536 243.69 T (utes \(including initialized state\).) 121.726 243.69 T 6 FF 72.0 258.69 T 4 FF (Return attrib) 85.536 258.69 T (utes.) 136.166 258.69 T 6 FF 72.0 273.69 T 4 FF (Supply pages to the k) 85.536 273.69 T (ernel.) 171.546 273.69 T 6 FF 72.0 288.69 T 4 FF (Indicate that pages requested by the k) 85.536 288.69 T (ernel are not a) 235.956 288.69 T (v) 292.676 288.69 T (ailable.) 297.426 288.69 T 6 FF 72.0 303.69 T 4 FF 85.535995 303.68988 M 1.571762 0 32 (Indicate that pages requested by the k) widthshow 245.386642 303.68988 M 1.571762 0 32 (ernel should be \336lled by the k) widthshow 373.59729 303.68988 M 1.571762 0 32 (ernel\325) widthshow 396.367584 303.68988 M 1.571762 0 32 (s def) widthshow 416.99939 303.68988 M 1.571762 0 32 (ault) widthshow (rules.) 85.536 315.69 T 6 FF 72.0 330.69 T 4 FF (Restrict access to memory pages.) 85.536 330.69 T 6 FF 72.0 345.69 T 4 FF (T) 85.536 345.69 T (ermination.) 90.946 345.69 T 72 388.02298 360 3.024002 CR 432 389.53 M 72 389.53 L S 0 0 612 792 CR 3 FF (Pr) 72.0 383.356 T (ocessors) 86.518 383.356 T 4 FF 72 407.713623 M 1.166107 0 32 (Each ph) widthshow 105.60614 407.713623 M 1.166107 0 32 (ysical processor \(that is capable of e) widthshow 257.412903 407.713623 M 1.166107 0 32 (x) widthshow 262.26297 407.713623 M 1.166107 0 32 (ecuting threads\) is named by a processor) widthshow 72 419.713623 M 0.899155 0 32 (control port. Although signi\336cant in that the) widthshow 253.63501 419.713623 M 0.899155 0 32 (y perform the real w) widthshow 338.771698 419.713623 M 0.899155 0 32 (ork, processors are not) widthshow 72 431.713623 M 0.680618 0 32 (v) widthshow 76.850082 431.713623 M 0.680618 0 32 (ery signi\336cant in the Mach scheme of things other than as members of a processor set.) widthshow 72 443.713593 M 0.497208 0 32 (It is a processor set that forms the basis for the pool of processors used to schedule a set) widthshow (of threads, and that has scheduling attrib) 72.0 455.714 T (utes associated with it.) 233.72 455.714 T (The operations supported for processors include:) 72.0 479.714 T 6 FF 72.0 497.713 T 4 FF (Assignment to a processor set.) 85.536 497.713 T 6 FF 72.0 512.713 T 4 FF (Machine control, such as start and stop.) 85.536 512.713 T 72 555.046631 360 3.024002 CR 432 556.56 M 72 556.56 L S 0 0 612 792 CR 3 FF (Pr) 72.0 550.38 T (ocessor Sets) 86.518 550.38 T 4 FF 72 574.737305 M 1.202271 0 32 (Processors are grouped into processor sets. A processor set forms a pool of processors) widthshow 72 586.737183 M 0.239334 0 32 (used to schedule the threads assigned to that processor set. A processor set e) widthshow 379.901459 586.737183 M 0.239334 0 32 (xists as a ba-) widthshow 72 598.737183 M 0.530624 0 32 (sis to uniformly control the schedulability of a set of threads. The notion also pro) widthshow 403.418823 598.737183 M 0.530624 0 32 (vides a) widthshow (w) 72.0 610.737 T (ay to perform coarse allocation of processors to gi) 79.12 610.737 T (v) 279.38 610.737 T (en acti) 284.23 610.737 T (vities in the system.) 310.36 610.737 T (The operations supported upon processor sets include:) 72.0 634.737 T 6 FF 72.0 652.737 T 4 FF (Creation and deletion.) 85.536 652.737 T 6 FF 72.0 667.737 T 4 FF (Assignment of processors.) 85.536 667.737 T 6 FF 72.0 682.737 T 4 FF (Assignment of threads and tasks.) 85.536 682.737 T 6 FF 72.0 697.737 T 4 FF (Scheduling control.) 85.536 697.737 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 20 20 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (16 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Ar) 180.0 55.824 T (chitectural Model) 190.332 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 180 119.983978 360 3.024002 CR 0.25 SL 2 SC 0 G 540 121.5 M 180 121.5 L S 0 0 612 792 CR 3 (Times-Bold) 14 1 mymakefontmetric 3 FF (Nodes) 180.0 115.317 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 180 139.674637 M 1.820755 0 32 (In general, the Mach k) widthshow 277.433105 139.674637 M 1.820755 0 32 (ernel e) widthshow 306.033936 139.674637 M 1.820755 0 32 (x) widthshow 310.884033 139.674637 M 1.820755 0 32 (ecutes on a single machine, possibly a multiprocessor) widthshow 537.499634 139.674637 M 1.820755 0 32 (.) widthshow 180 151.674622 M 0.509216 0 32 (Multiple such machines may be connected together in v) widthshow 407.123901 151.674622 M 0.509216 0 32 (arious w) widthshow 441.693176 151.674622 M 0.509216 0 32 (ays, b) widthshow 465.332489 151.674622 M 0.509216 0 32 (ut this is the pro) widthshow 531.669434 151.674622 M 0.509216 0 32 (v-) widthshow 180 163.674606 M 0.534927 0 32 (ince of user space tasks. Ho) widthshow 293.504791 163.674606 M 0.534927 0 32 (we) widthshow 304.914917 163.674606 M 0.534927 0 32 (v) widthshow 309.765015 163.674606 M 0.534927 0 32 (er) widthshow 317.135254 163.674606 M 0.534927 0 32 (, optional \(and e) widthshow 383.580109 163.674606 M 0.534927 0 32 (xperimental\) support is pro) widthshow 493.634979 163.674606 M 0.534927 0 32 (vided with-) widthshow 180 175.674591 M 2.679977 0 32 (in the k) widthshow 215.26001 175.674591 M 2.679977 0 32 (ernel for ) widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 257.269958 175.674591 M 2.679977 0 32 (multicomputer) widthshow 315.500031 175.674591 M 2.679977 0 32 (s) widthshow 4 FF 319.390015 175.674591 M 2.679977 0 32 (, \322machines\323 consisting of multiple multiprocessors) widthshow 180 187.674576 M 0.667496 0 32 (\(without shared memory between multiprocessors\). Each uniprocessor or multiprocessor) widthshow 180 199.674561 M 0.960617 0 32 (in such a multicomputer is called a ) widthshow 5 FF 328.654327 199.674561 M 0.960617 0 32 (node) widthshow 4 FF 348.09433 199.674561 M 0.960617 0 32 ( and referenced by a node ID \(a number\). The) widthshow (multicomputer as a whole is a Mach ) 180.0 211.675 T 5 FF (host) 327.48 211.675 T 4 FF (.) 344.15 211.675 T 180 235.67453 M 2.548676 0 32 (Mach\325) widthshow 205.550308 235.67453 M 2.548676 0 32 (s multicomputer support pro) widthshow 326.656433 235.67453 M 2.548676 0 32 (vides transparently distrib) widthshow 435.433899 235.67453 M 2.548676 0 32 (uted shared memory be-) widthshow 180 247.674515 M 0.554123 0 32 (tween nodes and transparently distrib) widthshow 331.436615 247.674515 M 0.554123 0 32 (uted Mach IPC between nodes. The only direct op-) widthshow 180 259.6745 M 0.668594 0 32 (erations supported by nodes are the setting and retrie) widthshow 396.168915 259.6745 M 0.668594 0 32 (ving of a small set of node speci\336c) widthshow (ports.) 180.0 271.674 T 180 314.007782 360 3.024002 CR 540 315.52 M 180 315.52 L S 0 0 612 792 CR 3 FF (Hosts) 180.0 309.341 T 4 FF 180 333.698425 M 1.362686 0 32 (Each machine \(uni-processor or multi-processor\) in a netw) widthshow 424.658875 333.698425 M 1.362686 0 32 (ork) widthshow 437.888947 333.698425 M 1.362686 0 32 (ed Mach system runs its) widthshow 180 345.698425 M 0.101624 0 32 (o) widthshow 184.750137 345.698425 M 0.101624 0 32 (wn instantiation of the Mach k) widthshow 307.648315 345.698425 M 0.101624 0 32 (ernel. The ) widthshow 5 FF 350.891571 345.698425 M 0.101624 0 32 (host) widthshow 4 FF 367.561584 345.698425 M 0.101624 0 32 ( multiprocessor is not generally manipulat-) widthshow 180 357.698425 M 0.169373 0 32 (ed by client tasks. But, since each host does carry its o) widthshow 399.083252 357.698425 M 0.169373 0 32 (wn Mach k) widthshow 444.312073 357.698425 M 0.169373 0 32 (ernel, each with its o) widthshow 527.779663 357.698425 M 0.169373 0 32 (wn) widthshow 180 369.698395 M 0.394592 0 32 (port space, ph) widthshow 236.559219 369.698395 M 0.394592 0 32 (ysical memory and other resources, the e) widthshow 402.346863 369.698395 M 0.394592 0 32 (x) widthshow 407.19696 369.698395 M 0.394592 0 32 (ecuting host is visible and some-) widthshow (times manipulated directly) 180.0 381.698 T (. Also, each host generates its o) 286.01 381.698 T (wn statistics.) 411.851 381.698 T 180 405.698334 M 0.293503 0 32 (Hosts are named by a name port which is freely distrib) widthshow 401.585144 405.698334 M 0.293503 0 32 (uted and which can be used to ob-) widthshow 180 417.698273 M 0.280609 0 32 (tain information about the host and a control port which is closely held and which can be) widthshow (used to manipulate the host. Operations supported by hosts include:) 180.0 429.698 T 6 (Times-Roman) 7 1 mymakefontmetric 6 FF 180.0 447.698 T 4 FF (Clock manipulation.) 193.536 447.698 T 6 FF 180.0 462.698 T 4 FF (Statistics g) 193.536 462.698 T (athering.) 237.106 462.698 T 6 FF 180.0 477.698 T 4 FF (Re-boot.) 193.536 477.698 T 6 FF 180.0 492.698 T 4 FF (Set the def) 193.536 492.698 T (ault memory manager) 236.206 492.698 T (.) 323.416 492.698 T 6 FF 180.0 507.698 T 4 FF (Obtain lists of processors and processor sets.) 193.536 507.698 T 180 550.031128 360 3.024002 CR 540 551.54 M 180 551.54 L S 0 0 612 792 CR 3 FF (De) 180.0 545.365 T (vices) 196.114 545.365 T 4 FF 180 569.721802 M 1.793777 0 32 (The Mach k) widthshow 231.807617 569.721802 M 1.793777 0 32 (ernel e) widthshow 260.38147 569.721802 M 1.793777 0 32 (xports a v) widthshow 303.259125 569.721802 M 1.793777 0 32 (ery simple interf) widthshow 372.846741 569.721802 M 1.793777 0 32 (ace to its de) widthshow 425.468201 569.721802 M 1.793777 0 32 (vices. When initialized, the) widthshow 180 581.72168 M 0.221207 0 32 (Mach k) widthshow 210.391266 581.72168 M 0.221207 0 32 (ernel b) widthshow 237.902588 581.72168 M 0.221207 0 32 (uilds an internal table that lists each de) widthshow 394.461182 581.72168 M 0.221207 0 32 (vice. It e) widthshow 429.463684 581.72168 M 0.221207 0 32 (xports a single port, the ) widthshow 5 FF 527.229736 581.72168 M 0.221207 0 32 (de-) widthshow 180 593.72168 M 2.095337 0 32 (vice master) widthshow 4 FF 227.915344 593.72168 M 2.095337 0 32 ( port, which is responsible for allocating de) widthshow 415.642853 593.72168 M 2.095337 0 32 (vices. A task that holds send) widthshow 180 605.721558 M 0.51059 0 32 (rights to the de) widthshow 241.001907 605.721558 M 0.51059 0 32 (vice master port may request the k) widthshow 381.715515 605.721558 M 0.51059 0 32 (ernel to ) widthshow 5 FF 415.506714 605.721558 M 0.51059 0 32 (open) widthshow 4 FF 434.946716 605.721558 M 0.51059 0 32 ( a de) widthshow 454.598022 605.721558 M 0.51059 0 32 (vice, returning a port) widthshow 180 617.721558 M 1.101486 0 32 (that pro) widthshow 211.78157 617.721558 M 1.101486 0 32 (vides access to that de) widthshow 304.807678 617.721558 M 1.101486 0 32 (vice. Operations on that port then manipulate the de) widthshow 520.839722 617.721558 M 1.101486 0 32 (vice,) widthshow (until it is ) 180.0 629.721 T 5 FF (closed) 218.07 629.721 T 4 FF (.) 243.62 629.721 T (Operations on de) 180.0 653.721 T (vices include:) 248.07 653.721 T 6 FF 180.0 671.721 T 4 FF (Read and write.) 193.536 671.721 T 6 FF 180.0 686.721 T 4 FF (Status return and setting.) 193.536 686.721 T 558 105.984009 2 208.023773 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 21 21 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (17 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Ev) 72.0 55.824 T (ents) 82.413 55.824 T 0.25 SL 3.86 setmiterlimit 0 SC 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 7 1 mymakefontmetric 3 FF 72.0 114.667 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF (Special purpose operations.) 85.536 114.667 T 3 FF 72.0 129.667 T 4 FF 85.535995 129.666565 M 0.402374 0 32 (Mapping a shared memory windo) widthshow 221.875641 129.666565 M 0.402374 0 32 (w between a user space task and the de) widthshow 380.904785 129.666565 M 0.402374 0 32 (vice / de) widthshow 415.339691 129.666565 M 0.402374 0 32 (vice) widthshow (dri) 85.536 141.667 T (v) 96.396 141.667 T (er) 101.246 141.667 T (.) 108.467 141.667 T 72 183.999741 360 3.024002 CR 432 185.51 M 72 185.51 L S 0 0 612 792 CR 5 (Times-Bold) 14 1 mymakefontmetric 5 FF (Ev) 72.0 179.333 T (ents) 88.198 179.333 T 4 FF 72 203.690369 M 0.864517 0 32 (In support of user space de) widthshow 183.54274 203.690369 M 0.864517 0 32 (vice dri) widthshow 214.427399 203.690369 M 0.864517 0 32 (v) widthshow 219.277481 203.690369 M 0.864517 0 32 (ers, k) widthshow 241.702057 203.690369 M 0.864517 0 32 (ernel de) widthshow 274.246704 203.690369 M 0.864517 0 32 (vice dri) widthshow 305.131378 203.690369 M 0.864517 0 32 (v) widthshow 309.981445 203.690369 M 0.864517 0 32 (ers may pro) widthshow 358.770569 203.690369 M 0.864517 0 32 (vide ) widthshow 6 (Times-Italic) 10 1 mymakefontmetric 6 FF 379.355103 203.690369 M 0.864517 0 32 (e) widthshow 383.645203 203.690369 M 0.864517 0 32 (vent) widthshow 4 FF 400.305176 203.690369 M 0.864517 0 32 ( objects) widthshow 72 215.690308 M 0.483505 0 32 (that count signi\336cant e) widthshow 164.030655 215.690308 M 0.483505 0 32 (v) widthshow 168.880737 215.690308 M 0.483505 0 32 (ents of a certain type and signal \(mak) widthshow 321.855347 215.690308 M 0.483505 0 32 (e running\) a thread w) widthshow 409.219421 215.690308 M 0.483505 0 32 (aiting) widthshow 72 227.690247 M 0.31604 0 32 (for such an e) widthshow 124.068268 227.690247 M 0.31604 0 32 (v) widthshow 128.91835 227.690247 M 0.31604 0 32 (ent. The set of e) widthshow 194.082657 227.690247 M 0.31604 0 32 (v) widthshow 198.932739 227.690247 M 0.31604 0 32 (ents is chosen by the de) widthshow 294.973083 227.690247 M 0.31604 0 32 (vice dri) widthshow 325.309265 227.690247 M 0.31604 0 32 (v) widthshow 330.159363 227.690247 M 0.31604 0 32 (er \(possibly as a result of) widthshow 72 239.690216 M 1.707077 0 32 (instructions gi) widthshow 130.407211 239.690216 M 1.707077 0 32 (v) widthshow 135.257294 239.690216 M 1.707077 0 32 (en to the dri) widthshow 188.178665 239.690216 M 1.707077 0 32 (v) widthshow 193.028748 239.690216 M 1.707077 0 32 (er\); there is no general \(e) widthshow 301.654236 239.690216 M 1.707077 0 32 (xplicit\) w) widthshow 341.871368 239.690216 M 1.707077 0 32 (ay to create or delete) widthshow 72 251.690201 M 0.238068 0 32 (e) widthshow 76.19014 251.690201 M 0.238068 0 32 (v) widthshow 81.040222 251.690201 M 0.238068 0 32 (ent objects. Ev) widthshow 140.526443 251.690201 M 0.238068 0 32 (ent objects are named by an e) widthshow 260.005005 251.690201 M 0.238068 0 32 (v) widthshow 264.855103 251.690201 M 0.238068 0 32 (ent ID local to the accessing task, as cho-) widthshow 72 263.690186 M 0.013657 0 32 (sen by the dri) widthshow 125.951111 263.690186 M 0.013657 0 32 (v) widthshow 130.801193 263.690186 M 0.013657 0 32 (er and communicated to the task in a dri) widthshow 291.190613 263.690186 M 0.013657 0 32 (v) widthshow 296.04068 263.690186 M 0.013657 0 32 (er speci\336c w) widthshow 346.508057 263.690186 M 0.013657 0 32 (ay) widthshow 355.298401 263.690186 M 0.013657 0 32 (. The only support-) widthshow 72 275.690186 M 0.345535 0 32 (ed operation for e) widthshow 143.596756 275.690186 M 0.345535 0 32 (v) widthshow 148.446838 275.690186 M 0.345535 0 32 (ent objects is to w) widthshow 221.949036 275.690186 M 0.345535 0 32 (ait for an e) widthshow 265.775787 275.690186 M 0.345535 0 32 (v) widthshow 270.625854 275.690186 M 0.345535 0 32 (ent to occur) widthshow 317.977234 275.690186 M 0.345535 0 32 (. The e) widthshow 345.908447 275.690186 M 0.345535 0 32 (v) widthshow 350.758545 275.690186 M 0.345535 0 32 (ent object maintains) widthshow (a count of outstanding e) 72.0 287.69 T (v) 167.85 287.69 T (ents so that e) 172.7 287.69 T (v) 224.39 287.69 T (ents are not lost.) 229.24 287.69 T 72 311.690125 M 1.786118 0 32 (Note that e) widthshow 119.202377 311.690125 M 1.786118 0 32 (v) widthshow 124.05246 311.690125 M 1.786118 0 32 (ent objects and their interf) widthshow 236.076996 311.690125 M 1.786118 0 32 (ace are v) widthshow 275.029327 311.690125 M 1.786118 0 32 (ery preliminary and highly subject to) widthshow (change.) 72.0 323.69 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 22 22 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (18 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Ar) 180.0 55.824 T (chitectural Model) 190.332 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 23 23 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 2 SL 3.86 setmiterlimit 0 G 432 45 M 72 45 L S 2 SC 432 342 M 72 342 L S 0.25 SL 432 720 M 72 720 L S 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (19 ) widthshow 0 0 612 792 CR 1 G 72 99 360 225 NF 0 G 2 (Times-Roman) 12 1 mymakefontmetric 2 FF 72 114.999969 M 1.19989 0 (CHAPTER 3) ashow 3 (Times-Roman) 24 1 mymakefontmetric 3 FF 180 114.999969 M -0.479736 0 (Threads and T) ashow 310.468506 114.999969 M -0.479736 0 (asks) ashow 1 G 72 360 360 344.015991 NF 0 G 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 72 366.666626 M 0.888702 0 32 (Threads are the acti) widthshow 152.996262 366.666626 M 0.888702 0 32 (v) widthshow 157.846344 366.666626 M 0.888702 0 32 (e entities in a Mach system. The) widthshow 292.17865 366.666626 M 0.888702 0 32 (y act as points of control within a) widthshow 72 378.666565 M 0.236618 0 32 (task, which pro) widthshow 133.703323 378.666565 M 0.236618 0 32 (vides them with a virtual address space and a port name space with which) widthshow (other resources are accessed.) 72.0 390.667 T (This chapter discusses the user visible vie) 72.0 414.666 T (w of threads and tasks.) 238.95 414.666 T 72 438.666382 M 1.488113 0 32 (It is common practice to discuss scheduling issues when discussing threads. Ho) widthshow 405.869385 438.666382 M 1.488113 0 32 (we) widthshow 417.279541 438.666382 M 1.488113 0 32 (v) widthshow 422.129639 438.666382 M 1.488113 0 32 (er) widthshow 429.499847 438.666382 M 1.488113 0 32 (,) widthshow 72 450.666321 M 0.829269 0 32 (the issue of scheduling is only mar) widthshow 215.67572 450.666321 M 0.829269 0 32 (ginally related to the semantics of threads. Issues di-) widthshow 72 462.66626 M 0.810699 0 32 (rectly in) widthshow 105.460922 462.66626 M 0.810699 0 32 (v) widthshow 110.261032 462.66626 M 0.810699 0 32 (olv) widthshow 122.891113 462.66626 M 0.810699 0 32 (ed in the actual scheduling of threads on processors \(processor sets and the) widthshow (lik) 72.0 474.666 T (e\) are discussed in the chapter on ph) 82.46 474.666 T (ysical resources.) 227.65 474.666 T 72 516.999451 360 3.024002 CR 432 518.51 M 72 518.51 L S 0 0 612 792 CR 5 (Times-Bold) 14 1 mymakefontmetric 5 FF (Thr) 72.0 512.333 T (eads) 95.086 512.333 T 4 FF 72 536.690063 M 0.152435 0 32 (A ) widthshow 6 (Times-Italic) 10 1 mymakefontmetric 6 FF 81.872437 536.690063 M 0.152435 0 32 (thr) widthshow 93.172638 536.690063 M 0.152435 0 32 (ead) widthshow 4 FF 107.61264 536.690063 M 0.152435 0 32 ( is the basic computational entity) widthshow 239.665176 536.690063 M 0.152435 0 32 (. A thread belongs to one and only one ) widthshow 6 FF 398.237122 536.690063 M 0.152435 0 32 (task) widthshow 4 FF 414.347107 536.690063 M 0.152435 0 32 ( that) widthshow 72 548.690002 M 1.569244 0 32 (de\336nes its virtual address space. A thread is a light-weight entity with a minimum of) widthshow 72 560.689941 M 0.856094 0 32 (state. A thread e) widthshow 139.398376 560.689941 M 0.856094 0 32 (x) widthshow 144.248459 560.689941 M 0.856094 0 32 (ecutes in the w) widthshow 206.426804 560.689941 M 0.856094 0 32 (ay dictated by the hardw) widthshow 308.061249 560.689941 M 0.856094 0 32 (are; fetching instructions from) widthshow 72 572.68988 M 1.08493 0 32 (its task\325) widthshow 103.925232 572.68988 M 1.08493 0 32 (s address space based on the thread\325) widthshow 254.285141 572.68988 M 1.08493 0 32 (s re) widthshow 269.380157 572.68988 M 1.08493 0 32 (gister v) widthshow 299.935242 572.68988 M 1.08493 0 32 (alues. The only actions a thread) widthshow 72 584.689819 M 1.607666 0 32 (can tak) widthshow 102.107727 584.689819 M 1.607666 0 32 (e directly are to e) widthshow 177.808487 584.689819 M 1.607666 0 32 (x) widthshow 182.658569 584.689819 M 1.607666 0 32 (ecute instructions that manipulate its re) widthshow 347.47699 584.689819 M 1.607666 0 32 (gisters and read and) widthshow 72 596.689758 M 2.314484 0 32 (write into its memory space. An attempt to e) widthshow 268.405945 596.689758 M 2.314484 0 32 (x) widthshow 273.256042 596.689758 M 2.314484 0 32 (ecute pri) widthshow 310.03067 596.689758 M 2.314484 0 32 (vile) widthshow 324.880737 596.689758 M 2.314484 0 32 (ged machine instructions,) widthshow 72 608.689697 M 0.185318 0 32 (though, causes an e) widthshow 150.166046 608.689697 M 0.185318 0 32 (xception \(discussed later\). T) widthshow 263.232452 608.689697 M 0.185318 0 32 (o af) widthshow 278.437927 608.689697 M 0.185318 0 32 (fect the structure of the address space,) widthshow 72 620.689636 M 0.556641 0 32 (or to reference an) widthshow 143.760025 620.689636 M 0.556641 0 32 (y resource other than the address space, the thread must e) widthshow 378.836548 620.689636 M 0.556641 0 32 (x) widthshow 383.686646 620.689636 M 0.556641 0 32 (ecute a spe-) widthshow 72 632.689575 M 2.299194 0 32 (cial trap instruction which causes the k) widthshow 241.225235 632.689575 M 2.299194 0 32 (ernel to perform operations on behalf of the) widthshow 72 644.689514 M -0.006149 0 32 (thread, or to send a message to some agent on behalf of the thread. Also, f) widthshow 367.857849 644.689514 M -0.006149 0 32 (aults or other il-) widthshow (le) 72.0 656.689 T (g) 79.07 656.689 T (al instruction beha) 84.02 656.689 T (vior cause the k) 157.7 656.689 T (ernel to in) 220.64 656.689 T (v) 260.791 656.689 T (ok) 265.591 656.689 T (e its e) 275.491 656.689 T (xception processing.) 298.671 656.689 T 72 680.689453 M 0.749969 0 32 (FIGURE 1 sho) widthshow 133.250076 680.689453 M 0.749969 0 32 (ws the client visible structure associated with a thread. The thread object) widthshow 72 692.689453 M 0.937271 0 32 (is the recei) widthshow 116.944687 692.689453 M 0.937271 0 32 (v) widthshow 121.794769 692.689453 M 0.937271 0 32 (er for messages sent to the k) widthshow 240.628464 692.689453 M 0.937271 0 32 (ernel thread port. Aside from an) widthshow 373.464905 692.689453 M 0.937271 0 32 (y random task) widthshow grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 24 24 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (20 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Thr) 180.0 55.824 T (eads and T) 194.841 55.824 T (asks) 236.026 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 180 112.650635 M 1.373749 0 32 (that may hold send rights to this thread port, the thread port is also accessible via the) widthshow (thread\325) 180.0 124.651 T (s thread self port, the containing task or the containing processor set.) 207.77 124.651 T 4 (Times-Bold) 12 1 mymakefontmetric 4 FF (Actions by Thr) 180.0 480.992 T (eads) 257.124 480.992 T 3 FF 180 497.658447 M 0.369949 0 32 (This section describes the details of the actions that a thread can tak) widthshow 455.399475 497.658447 M 0.369949 0 32 (e directly) widthshow 492.609802 497.658447 M 0.369949 0 32 (. Of course,) widthshow 180 509.658386 M 0.228806 0 32 (a thread can do an) widthshow 253.51532 509.658386 M 0.228806 0 32 (ything if it can g) widthshow 320.49057 509.658386 M 0.228806 0 32 (ain access to the correct port rights and send messages) widthshow 180 521.658325 M 0.778656 0 32 (to them; the v) widthshow 237.366104 521.658325 M 0.778656 0 32 (arious things it can do are discussed under the sections describing the ob-) widthshow (ject manipulated.) 180.0 533.658 T 0 FF (Scheduling Support T) 180.0 557.658 T (raps) 273.18 557.658 T 3 FF 180 570.658142 M 0.464249 0 32 (The Mach k) widthshow 229.14856 570.658142 M 0.464249 0 32 (ernel preempti) widthshow 287.402954 570.658142 M 0.464249 0 32 (v) widthshow 292.253052 570.658142 M 0.464249 0 32 (ely schedules threads. The w) widthshow 409.260101 570.658142 M 0.464249 0 32 (ay in which this is done is relat-) widthshow 180 582.658081 M 0.524551 0 32 (ed to v) widthshow 208.019241 582.658081 M 0.524551 0 32 (arious f) widthshow 238.713852 582.658081 M 0.524551 0 32 (actors. F) widthshow 273.528503 582.658081 M 0.524551 0 32 (or no) widthshow 294.633179 582.658081 M 0.524551 0 32 (w) widthshow 301.203552 582.658081 M 0.524551 0 32 (, it is suf) widthshow 336.977325 582.658081 M 0.524551 0 32 widthshow 451.3302 582.658081 M 0.524551 0 32 (v) widthshow 456.180298 582.658081 M 0.524551 0 32 (e scheduling priority) widthshow 180 594.65802 M 0.291367 0 32 (associated with them which is used to select which threads should e) widthshow 453.855133 594.65802 M 0.291367 0 32 (x) widthshow 458.7052 594.65802 M 0.291367 0 32 (ecute within a gi) widthshow 525.709473 594.65802 M 0.291367 0 32 (v) widthshow 530.55957 594.65802 M 0.291367 0 32 (en) widthshow (processor set \(discussed as part of ph) 180.0 606.658 T (ysical resources\).) 328.25 606.658 T 0 FF 180 630.657898 M 1.985779 0 32 (thr) widthshow 193.150101 630.657898 M 1.985779 0 32 (ead_switch) widthshow 3 FF 240.370102 630.657898 M 1.985779 0 32 ( causes a conte) widthshow 305.877533 630.657898 M 1.985779 0 32 (xt switch with v) widthshow 375.755005 630.657898 M 1.985779 0 32 (arious options. It is pro) widthshow 476.048218 630.657898 M 1.985779 0 32 (vided for cases) widthshow 180 642.657837 M 0.840607 0 32 (\(such as softw) widthshow 238.791275 642.657837 M 0.840607 0 32 (are lock routines\) that w) widthshow 339.253784 642.657837 M 0.840607 0 32 (ant to gi) widthshow 373.465118 642.657837 M 0.840607 0 32 (v) widthshow 378.315186 642.657837 M 0.840607 0 32 (e up the processor so that other threads) widthshow 180 654.657837 M 1.510727 0 32 (can mak) widthshow 215.010788 654.657837 M 1.510727 0 32 (e progress. The options mostly ha) widthshow 357.354553 654.657837 M 1.510727 0 32 (v) widthshow 362.20462 654.657837 M 1.510727 0 32 (e to do with selecting the appropriate ne) widthshow 532.779846 654.657837 M 1.510727 0 32 (w) widthshow (thread to run, when this information is a) 180.0 666.658 T (v) 340.34 666.658 T (ailable.) 345.09 666.658 T 171 127.983887 378 325.007996 CR 3 SL 0.6667 G 284.19 379.98 M 284.19 374.2 L 264 379.98 L 284.19 385.77 L F 284.19 379.98 M 363 379.98 L S 282 274.17 M 287.79 274.17 L 282 253.98 L 276.21 274.17 L F 282 274.17 M 282 298.98 L S 360.81 163.98 M 360.81 169.77 L 381 163.98 L 360.81 158.2 L F 360.81 163.98 M 318 163.98 L S 1 G 186 424.983887 348 27 NF 186 424.983887 348 13.031998 CR 0.25 SL 2 SC 0 G 546 431.5 M 258 431.5 L S 0 SC 249 431.5 M 186 431.5 L S 171 127.983887 378 325.007996 CR 5 (Helvetica-Bold) 9 1 mymakefontmetric 5 FF (FIGURE 1) 186.0 444.016 T 2 FF (Thr) 258.0 444.016 T (ead Structur) 272.841 444.016 T (es) 321.423 444.016 T 3 FF (machine state) 390.0 193.043 T (thread self port) 390.0 210.514 T (thread e) 390.0 227.985 T (xception port) 421.78 227.985 T (suspend count) 390.0 245.456 T (scheduling parms) 390.0 262.926 T (statistics / sampling) 390.0 280.397 T (processor set) 390.0 297.868 T 1 SL 480 199.45 M 381 199.45 L S 480 216.93 M 381 216.93 L S 480 234.4 M 381 234.4 L S 480 251.87 M 381 251.87 L S 480 269.34 M 381 269.34 L S 480 286.81 M 381 286.81 L S 381 136.983887 99 207 N (thread port) 264.706 162.892 T 3 SL 255 145.983887 63 27 N (e) 455.761 378.892 T (xception port) 460.051 378.892 T 453 361.983887 63 27 N (task port) 377.144 378.892 T 363 361.983887 63 27 N 303.98 184.1 M 307.17 182.96 L 299.99 172.98 L 300.79 185.24 L F 1 SL 180 72 162 72 381 172.983887 AS 413.011963 162.346786 34.986008 1 NF 6 (Times-Roman) 14 1 mymakefontmetric 6 FF (thread) 413.012 160.948 T 480 181.98 M 381 181.98 L S 201 352.983887 63 36 N 221.22583 377.15448 22.554001 1 NF (task) 221.226 375.755 T 264.182617 228.654495 53.64801 1 NF (processor) 264.183 227.255 T 283.22583 243.618164 15.554001 1 NF (set) 283.226 242.219 T 255 208.983887 72 45 N 399 350.45 M 395.69 350.45 L 399 361.98 L 402.31 350.45 L F 399 350.45 M 399 343.98 L S 3 FF (wired) 390.0 315.344 T 480 304.28 M 381 304.28 L S 3 FF (processor set name port) 243.661 315.892 T 3 SL 237 298.983887 108 27 N 1 SL 356.17 305.13 M 355.35 301.92 L 345 307.98 L 356.99 308.33 L F 356.18 305.13 M 381 298.98 L S 244.14 160.91 M 245.83 164.02 L 255 154.98 L 242.44 157.79 L F 270 76 90 396 255 352.983887 AS 282 184.52 M 285.31 184.52 L 282 172.98 L 278.69 184.52 L F 282 184.52 M 282 208.98 L S 0.5 SL 243.46 413.82 M 243.46 417.12 L 255 413.82 L 243.46 410.51 L F 243.46 413.82 M 210 413.82 L S 3 SL 0.6667 G 418.58 413.82 M 418.58 419.6 L 438.77 413.82 L 418.58 408.03 L F 418.58 413.82 M 393.77 413.82 L S 0 G (send right) 273.0 413.815 T (recei) 456.768 413.815 T (v) 475.948 413.815 T (e right) 480.798 413.815 T 1 SL 480 321.75 M 381 321.75 L S 3 FF (containing task) 390.0 332.815 T 506.85 347.87 M 502.8 347.91 L 507 361.98 L 510.89 347.83 L F 0 84 54 270 480 361.983887 AS grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 25 25 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (21 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Thr) 72.0 55.824 T (eads) 86.841 55.824 T 0.25 SL 3.86 setmiterlimit 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 72 114.666656 M 0.033981 0 32 (One of the options to ) widthshow 1 FF 159.109909 114.666656 M 0.033981 0 32 (thr) widthshow 172.26001 114.666656 M 0.033981 0 32 (ead_switch) widthshow 3 FF 219.480011 114.666656 M 0.033981 0 32 ( causes the scheduling priority of the thread to be de-) widthshow 72 126.666641 M 0.961945 0 32 (pressed to the lo) widthshow 139.905975 126.666641 M 0.961945 0 32 (west possible v) widthshow 202.690002 126.666641 M 0.961945 0 32 (alue so that other threads will run, thereby \(it is hoped\)) widthshow 72 138.666626 M 1.124527 0 32 (completing w) widthshow 127.744583 138.666626 M 1.124527 0 32 (ork that blocks this depressed thread. This priority depression is canceled) widthshow 72 150.666611 M 1.007797 0 32 (when the gi) widthshow 120.425735 150.666611 M 1.007797 0 32 (v) widthshow 125.275818 150.666611 M 1.007797 0 32 (en time e) widthshow 163.801498 150.666611 M 1.007797 0 32 (xpires, the thread is ne) widthshow 257.94278 150.666611 M 1.007797 0 32 (xt run re) widthshow 293.688477 150.666611 M 1.007797 0 32 (g) widthshow 298.638489 150.666611 M 1.007797 0 32 (ardless of the depression, ) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 406.259705 150.666611 M 1.007797 0 32 (thr) widthshow 417.559875 150.666611 M 1.007797 0 32 (ead) widthshow 5 (Symbol) 10 1 mymakefontmetric 5 FF 72.0 162.667 T 1 FF (thr) 81.87 162.667 T (ead_abort) 95.02 162.667 T 3 FF ( is called or ) 138.35 162.667 T 4 FF (thr) 187.23 162.667 T (ead ) 198.53 162.667 T 5 FF 215.47 162.667 T 1 FF (thr) 225.34 162.667 T (ead_depr) 238.49 162.667 T (ess_abort) 278.311 162.667 T 3 FF ( is called.) 318.861 162.667 T 3 FF 72 186.66655 M 0.872986 0 32 (T) widthshow 77.31044 186.66655 M 0.872986 0 32 (w) widthshow 84.430496 186.66655 M 0.872986 0 32 (o additional traps,) widthshow 1 FF 158.11647 186.66655 M 0.872986 0 32 ( swtch,) widthshow 3 FF 188.429459 186.66655 M 0.872986 0 32 ( which) widthshow 1 FF 216.242447 186.66655 M 0.872986 0 32 ( ) widthshow 3 FF 219.615433 186.66655 M 0.872986 0 32 (attempts to conte) widthshow 289.541504 186.66655 M 0.872986 0 32 (xt switch to a dif) widthshow 360.003571 186.66655 M 0.872986 0 32 (ferent thread, and) widthshow 1 FF 72 198.666489 M 0.707428 0 32 (swtch_pri) widthshow 3 FF 114.220001 198.666489 M 0.707428 0 32 (, which switches and also sets the current thread\325) widthshow 315.119751 198.666489 M 0.707428 0 32 (s scheduling priority) widthshow 398.10498 198.666489 M 0.707428 0 32 (, are be-) widthshow (ing phased out in f) 72.0 210.666 T (a) 146.34 210.666 T (v) 150.58 210.666 T (or of ) 155.38 210.666 T 1 FF (thr) 177.04 210.666 T (ead_switch) 190.19 210.666 T 3 FF (.) 237.41 210.666 T 72 234.666367 M 0.497742 0 32 (The ) widthshow 1 FF 90.547745 234.666367 M 0.497742 0 32 (e) widthshow 94.83783 234.666367 M 0.497742 0 32 (vc_wait) widthshow 3 FF 127.607834 234.666367 M 0.497742 0 32 ( trap causes the in) widthshow 200.84903 234.666367 M 0.497742 0 32 (v) widthshow 205.649139 234.666367 M 0.497742 0 32 (oking thread to w) widthshow 277.312439 234.666367 M 0.497742 0 32 (ait for a k) widthshow 317.305725 234.666367 M 0.497742 0 32 (ernel \(de) widthshow 352.813599 234.666367 M 0.497742 0 32 (vice\) de\336ned e) widthshow 412.42923 234.666367 M 0.497742 0 32 (v) widthshow 417.279297 234.666367 M 0.497742 0 32 (ent.) widthshow (This is described along with ) 72.0 246.666 T 1 FF (de) 187.27 246.666 T (vice_map) 197.12 246.666 T 3 FF (. \(Note that this feature is subject to change.\)) 237.67 246.666 T 1 FF (Identity T) 72.0 270.666 T (raps) 114.32 270.666 T 3 FF 72 283.666199 M 0.50853 0 32 (Other than the fe) widthshow 140.755737 283.666199 M 0.50853 0 32 (w traps mentioned in this chapter) widthshow 275.938599 283.666199 M 0.50853 0 32 (, all other requests for services require) widthshow 72 295.666138 M 1.669266 0 32 (a port right. Ev) widthshow 137.407883 295.666138 M 1.669266 0 32 (en requests upon the k) widthshow 233.415009 295.666138 M 1.669266 0 32 (ernel that manipulate the current thread or task) widthshow 72 307.666077 M 0.743286 0 32 (need a port right \(naming the current thread or task\). T) widthshow 297.193329 307.666077 M 0.743286 0 32 (o bootstrap this process, a thread) widthshow 72 319.666016 M 1.427612 0 32 (needs a w) widthshow 114.185287 319.666016 M 1.427612 0 32 (ay) widthshow 122.975647 319.666016 M 1.427612 0 32 (, without an) widthshow 173.180954 319.666016 M 1.427612 0 32 (y port right, to get the port right for itself and its task. These) widthshow 72 331.665955 M 0.379944 0 32 (rights are obtained through the ) widthshow 1 FF 199.159729 331.665955 M 0.379944 0 32 (mach_thr) widthshow 240.639832 331.665955 M 0.379944 0 32 (ead_self) widthshow 3 FF 275.079834 331.665955 M 0.379944 0 32 ( and ) widthshow 1 FF 295.279724 331.665955 M 0.379944 0 32 (mach_task_self) widthshow 3 FF 360.829712 331.665955 M 0.379944 0 32 ( traps, respecti) widthshow 419.379761 331.665955 M 0.379944 0 32 (v) widthshow 424.229858 331.665955 M 0.379944 0 32 (e-) widthshow (ly) 72.0 343.666 T (.) 79.13 343.666 T 72 367.665833 M 1.194336 0 32 (The port rights returned are actually the THREAD_KERNEL_POR) widthshow 350.55072 367.665833 M 1.194336 0 32 (T and T) widthshow 383.669891 367.665833 M 1.194336 0 32 (ASK_KER-) widthshow 72 379.665771 M 1.741898 0 32 (NEL_POR) widthshow 115.290329 379.665771 M 1.741898 0 32 (T special ports last set through the ) widthshow 4 FF 267.193604 379.665771 M 1.741898 0 32 (thr) widthshow 278.493835 379.665771 M 1.741898 0 32 (ead ) widthshow 5 FF 297.17572 379.665771 M 1.741898 0 32 widthshow 1 FF 307.045715 379.665771 M 1.741898 0 32 ( thr) widthshow 324.437714 379.665771 M 1.741898 0 32 (ead_set_special_port) widthshow 3 FF 413.317719 379.665771 M 1.741898 0 32 ( and) widthshow 4 FF 72 391.66571 M 1.059036 0 32 (task ) widthshow 5 FF 91.669037 391.66571 M 1.059036 0 32 widthshow 1 FF 101.539032 391.66571 M 1.059036 0 32 ( task_set_special_port) widthshow 3 FF 196.758072 391.66571 M 1.059036 0 32 ( message calls. The def) widthshow 293.924286 391.66571 M 1.059036 0 32 (ault v) widthshow 317.233459 391.66571 M 1.059036 0 32 (alues for these special ports) widthshow 72 403.665649 M 1.065247 0 32 (are the actual k) widthshow 135.905807 403.665649 M 1.065247 0 32 (ernel thread and task ports, respecti) widthshow 282.612183 403.665649 M 1.065247 0 32 (v) widthshow 287.46228 403.665649 M 1.065247 0 32 (ely) widthshow 299.032654 403.665649 M 1.065247 0 32 (. The creator of a task or thread) widthshow 72 415.665588 M 1.166229 0 32 (can set these special port v) widthshow 184.501297 415.665588 M 1.166229 0 32 (alues before starting the thread or task so that the thread or) widthshow 72 427.665527 M 0.69278 0 32 (task does not ha) widthshow 138.038452 427.665527 M 0.69278 0 32 (v) widthshow 142.888535 427.665527 M 0.69278 0 32 (e access to its o) widthshow 207.619797 427.665527 M 0.69278 0 32 (wn k) widthshow 227.932632 427.665527 M 0.69278 0 32 (ernel ports, b) widthshow 281.608307 427.665527 M 0.69278 0 32 (ut instead in) widthshow 331.48407 427.665527 M 0.69278 0 32 (v) widthshow 336.28418 427.665527 M 0.69278 0 32 (ok) widthshow 346.184265 427.665527 M 0.69278 0 32 (es some intermediate) widthshow (port when requesting services to be done to itself.) 72.0 439.665 T 72 463.665405 M 0.259933 0 32 (The k) widthshow 95.209991 463.665405 M 0.259933 0 32 (ernel also pro) widthshow 150.009949 463.665405 M 0.259933 0 32 (vides a trap, ) widthshow 1 FF 201.889755 463.665405 M 0.259933 0 32 (mach_host_self) widthshow 3 FF 267.439758 463.665405 M 0.259933 0 32 (, which return a \(send\) right to the host\325) widthshow 428.109558 463.665405 M 0.259933 0 32 (s) widthshow (name port.) 72.0 475.665 T 1 FF (Bootstrap Reply P) 72.0 499.665 T (ort T) 150.13 499.665 T (rap) 171.331 499.665 T 3 FF 72 512.665222 M 0.241501 0 32 (The ) widthshow 1 FF 90.291504 512.665222 M 0.241501 0 32 (mach_r) widthshow 122.881607 512.665222 M 0.241501 0 32 (eply_port) widthshow 3 FF 163.991608 512.665222 M 0.241501 0 32 ( trap is also used for bootstrap purposes. As mentioned earlier) widthshow 413.466858 512.665222 M 0.241501 0 32 (, if a) widthshow 72 524.665161 M 0.411072 0 32 (service request is to return a reply) widthshow 209.336807 524.665161 M 0.411072 0 32 (, a second port is needed. This trap is used to create an) widthshow (initial reply port \(a recei) 72.0 536.665 T (v) 168.95 536.665 T (e right\) that can then be used for all other port related calls.) 173.8 536.665 T 1 FF (Message Send and Recei) 72.0 560.665 T (v) 176.06 560.665 T (e T) 180.96 560.665 T (rap) 193.831 560.665 T 3 FF 72 573.664978 M 3.579102 0 32 (The \336nal, and most important trap, is ) widthshow 1 FF 247.883713 573.664978 M 3.579102 0 32 (mach_msg_trap) widthshow 3 FF 316.763733 573.664978 M 3.579102 0 32 ( \(the trap in) widthshow 373.481262 573.664978 M 3.579102 0 32 (v) widthshow 378.281372 573.664978 M 3.579102 0 32 (ok) widthshow 388.181396 573.664978 M 3.579102 0 32 (ed by the) widthshow 1 FF 72 585.664917 M 0.74855 0 32 (mach_msg) widthshow 3 FF 117.550003 585.664917 M 0.74855 0 32 ( library routine\). This is the trap that pro) widthshow 284.758484 585.664917 M 0.74855 0 32 (vides access to all other system ser-) widthshow 72 597.664856 M 0.644943 0 32 (vices. It sends and/or recei) widthshow 180.689926 597.664856 M 0.644943 0 32 (v) widthshow 185.540009 597.664856 M 0.644943 0 32 (es a message to/from a port named by a gi) widthshow 359.674652 597.664856 M 0.644943 0 32 (v) widthshow 364.524719 597.664856 M 0.644943 0 32 (en right. The se-) widthshow 72 609.664795 M 1.739914 0 32 (mantics of this call are v) widthshow 178.589661 609.664795 M 1.739914 0 32 (ery in) widthshow 202.979797 609.664795 M 1.739914 0 32 (v) widthshow 207.779907 609.664795 M 1.739914 0 32 (olv) widthshow 220.409988 609.664795 M 1.739914 0 32 (ed, and described in detail in the ) widthshow 4 FF 364.789398 609.664795 M 1.739914 0 32 (K) widthshow 371.109589 609.664795 M 1.739914 0 32 (ernel Interface) widthshow 3 FF (document, and also in v) 72.0 621.665 T (arious chapters in this document.) 167.02 621.665 T 1 FF (Exception Pr) 72.0 645.665 T (ocessing) 127.65 645.665 T 3 FF 72 658.664612 M 0.691986 0 32 (A thread has an e) widthshow 144.03804 658.664612 M 0.691986 0 32 (xception port associated with it. When an e) widthshow 321.482056 658.664612 M 0.691986 0 32 (xception occurs in a thread) widthshow 72 670.664551 M 1.223938 0 32 (\(these e) widthshow 103.894028 670.664551 M 1.223938 0 32 (xceptions are listed under ) widthshow 1 FF 213.769791 670.664551 M 1.223938 0 32 (catch_exception_raise) widthshow 3 FF 307.639801 670.664551 M 1.223938 0 32 ( in the ) widthshow 4 FF 338.811615 670.664551 M 1.223938 0 32 (K) widthshow 345.131805 670.664551 M 1.223938 0 32 (ernel Interface) widthshow 3 FF 405.505737 670.664551 M 1.223938 0 32 ( docu-) widthshow 72 682.66449 M 0.723297 0 32 (ment\), the thread, e) widthshow 151.499985 682.66449 M 0.723297 0 32 (x) widthshow 156.350067 682.66449 M 0.723297 0 32 (ecuting in k) widthshow 204.916718 682.66449 M 0.723297 0 32 (ernel conte) widthshow 249.640106 682.66449 M 0.723297 0 32 (xt, sends a message whose contents describe) widthshow 72 694.664429 M 0.799255 0 32 (the e) widthshow 91.809341 694.664429 M 0.799255 0 32 (xception to its e) widthshow 157.667191 694.664429 M 0.799255 0 32 (xception port. A successful reply to this message causes the thread) widthshow 52 108 2 57.999924 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 26 26 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (22 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Thr) 180.0 55.824 T (eads and T) 194.841 55.824 T (asks) 236.026 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 180 112.650635 M 0.831406 0 32 (to continue \(in a state possibly altered by ) widthshow 0 FF 353.30127 112.650635 M 0.831406 0 32 (thr) widthshow 366.451355 112.650635 M 0.831406 0 32 (ead_set_state) widthshow 3 FF 423.101379 112.650635 M 0.831406 0 32 (\). If the reply message has a) widthshow 180 124.650574 M 0.476334 0 32 (non-success return v) widthshow 262.902832 124.650574 M 0.476334 0 32 (alue, or the thread\325) widthshow 339.312134 124.650574 M 0.476334 0 32 (s e) widthshow 350.468567 124.650574 M 0.476334 0 32 (xception port is not de\336ned, the k) widthshow 487.386597 124.650574 M 0.476334 0 32 (ernel will try) widthshow 180 136.650513 M 0.476868 0 32 (sending the e) widthshow 233.573822 136.650513 M 0.476868 0 32 (xception message to the task\325) widthshow 352.691589 136.650513 M 0.476868 0 32 (s e) widthshow 363.848572 136.650513 M 0.476868 0 32 (xception port. As before, a successful reply) widthshow 180 148.650452 M 0.794907 0 32 (causes the thread to continue. If this message recei) widthshow 388.559418 148.650452 M 0.794907 0 32 (v) widthshow 393.409485 148.650452 M 0.794907 0 32 (es a non-success reply) widthshow 484.284607 148.650452 M 0.794907 0 32 (, or the task\325) widthshow 536.109619 148.650452 M 0.794907 0 32 (s) widthshow (e) 180.0 160.65 T (xception port is not de\336ned, the thread is terminated.) 184.29 160.65 T (Not e) 180.0 184.65 T (v) 201.69 184.65 T (ery e) 206.54 184.65 T (xceptional condition that a thread encounters is handled in this w) 226.1 184.65 T (ay) 485.97 184.65 T (.) 494.761 184.65 T 180 208.650269 M 0.471832 0 32 (F) widthshow 185.41008 208.650269 M 0.471832 0 32 (or e) widthshow 201.001999 208.650269 M 0.471832 0 32 (xample, a page not resident f) widthshow 318.791229 208.650269 M 0.471832 0 32 (ault does not send a message to the e) widthshow 469.615967 208.650269 M 0.471832 0 32 (xception port; in-) widthshow 180 220.650208 M 1.469193 0 32 (stead, a message is sent to the e) widthshow 316.224426 220.650208 M 1.469193 0 32 (xternal memory manager associated with the memory) widthshow (page in which the f) 180.0 232.65 T (aulting address lies \(this is discussed as part of virtual memory\).) 256.55 232.65 T 180 256.650085 M 1.084976 0 32 (The general e) widthshow 236.440048 256.650085 M 1.084976 0 32 (xception rule does not apply to the system call instruction\(s\). First of all,) widthshow 180 268.650024 M 0.577087 0 32 (se) widthshow 188.080139 268.650024 M 0.577087 0 32 (v) widthshow 192.930222 268.650024 M 0.577087 0 32 (eral of the possible system call numbers are subsumed for Mach k) widthshow 463.298279 268.650024 M 0.577087 0 32 (ernel calls. The re-) widthshow 180 280.649963 M 0.254211 0 32 (mainder are initially unde\336ned. An attempt to e) widthshow 371.609558 280.649963 M 0.254211 0 32 (x) widthshow 376.459656 280.649963 M 0.254211 0 32 (ecute them results in an e) widthshow 478.950806 280.649963 M 0.254211 0 32 (xception as de-) widthshow 180 292.649902 M 1.375656 0 32 widthshow 218.165741 292.649902 M 1.375656 0 32 (v) widthshow 223.015823 292.649902 M 1.375656 0 32 (e. At the granularity of a task, an indirection can be supplied separately for) widthshow 180 304.649841 M 0.516388 0 32 (each system call number) widthshow 279.589478 304.649841 M 0.516388 0 32 (. This is done via ) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 353.281433 304.649841 M 0.516388 0 32 (task ) widthshow 5 (Symbol) 10 1 mymakefontmetric 5 FF 372.407806 304.649841 M 0.516388 0 32 widthshow 3 FF 382.277802 304.649841 M 0.516388 0 32 ( ) widthshow 0 FF 385.294189 304.649841 M 0.516388 0 32 (task_set_emulation) widthshow 3 FF 467.514191 304.649841 M 0.516388 0 32 ( or ) widthshow 4 FF 481.876953 304.649841 M 0.516388 0 32 (task ) widthshow 5 FF 501.003357 304.649841 M 0.516388 0 32 widthshow 3 FF 510.873352 304.649841 M 0.516388 0 32 ( ) widthshow 0 FF 513.889771 304.649841 M 0.516388 0 32 (task_-) widthshow 180 316.64978 M 0.951385 0 32 (set_emulation_v) widthshow 249.340057 316.64978 M 0.951385 0 32 (ector) widthshow 3 FF 270.990051 316.64978 M 0.951385 0 32 ( \(and e) widthshow 299.952942 316.64978 M 0.951385 0 32 (xamined with ) widthshow 4 FF 359.075684 316.64978 M 0.951385 0 32 (task ) widthshow 5 FF 378.637085 316.64978 M 0.951385 0 32 widthshow 3 FF 388.50708 316.64978 M 0.951385 0 32 ( ) widthshow 0 FF 391.958466 316.64978 M 0.951385 0 32 (task_get_emulation_v) widthshow 485.188538 316.64978 M 0.951385 0 32 (ector) widthshow 3 FF 506.838531 316.64978 M 0.951385 0 32 (\). When) widthshow 180 328.649719 M 0.443527 0 32 (a thread attempts to e) widthshow 267.164185 328.649719 M 0.443527 0 32 (x) widthshow 272.014282 328.649719 M 0.443527 0 32 (ecute a system call whose number has been redirected, the system) widthshow 180 340.649658 M 0.17662 0 32 (call is ef) widthshow 213.983383 340.649658 M 0.17662 0 32 (fecti) widthshow 231.503525 340.649658 M 0.17662 0 32 (v) widthshow 236.353607 340.649658 M 0.17662 0 32 (ely translated into a type of subroutine call to the address speci\336ed with the) widthshow 0 FF 180 352.649597 M 1.063309 0 32 (task_set_emulation) widthshow 3 FF 262.220001 352.649597 M 1.063309 0 32 ( call. This allo) widthshow 322.380066 352.649597 M 1.063309 0 32 (ws a task to establish an emulation library within its) widthshow (address space to be used by threads emulating an e) 180.0 364.65 T (xisting operating system.) 382.86 364.65 T 6 (Times-Bold) 12 1 mymakefontmetric 6 FF (Actions on Thr) 180.0 395.983 T (eads) 257.124 395.983 T 3 FF 180 412.649414 M 0.33107 0 32 (This section lists the v) widthshow 270.524414 412.649414 M 0.33107 0 32 (arious things that can be done to a thread, gi) widthshow 449.894196 412.649414 M 0.33107 0 32 (v) widthshow 454.744263 412.649414 M 0.33107 0 32 (en a send right to the) widthshow (k) 180.0 424.649 T (ernel\325) 184.9 424.649 T (s thread port.) 207.67 424.649 T 0 FF (Life and Death) 180.0 448.649 T 3 FF 180 461.649231 M 0.126068 0 32 (A thread is created via) widthshow 0 FF 270.474304 461.649231 M 0.126068 0 32 ( ) widthshow 4 FF 273.100342 461.649231 M 0.126068 0 32 (task ) widthshow 5 FF 291.836426 461.649231 M 0.126068 0 32 widthshow 0 FF 304.332489 461.649231 M 0.126068 0 32 (thr) widthshow 317.482605 461.649231 M 0.126068 0 32 (ead_cr) widthshow 346.182678 461.649231 M 0.126068 0 32 (eate) widthshow 3 FF 363.3927 461.649231 M 0.126068 0 32 ( and destro) widthshow 407.424896 461.649231 M 0.126068 0 32 (yed via ) widthshow 4 FF 439.337036 461.649231 M 0.126068 0 32 (thr) widthshow 450.637238 461.649231 M 0.126068 0 32 (ead ) widthshow 5 FF 467.703308 461.649231 M 0.126068 0 32 widthshow 0 FF 480.199371 461.649231 M 0.126068 0 32 (thr) widthshow 493.349487 461.649231 M 0.126068 0 32 (ead_termi-) widthshow 180 473.64917 M 0.494614 0 32 (nate) widthshow 3 FF 198.330002 473.64917 M 0.494614 0 32 (. Since a thread belongs to a gi) widthshow 324.302429 473.64917 M 0.494614 0 32 (v) widthshow 329.152527 473.64917 M 0.494614 0 32 (en task, thread creation is actually an operation per-) widthshow 180 485.649109 M 1.559937 0 32 (formed upon a task. The result is a send right to the k) widthshow 411.649292 485.649109 M 1.559937 0 32 (ernel\325) widthshow 434.419617 485.649109 M 1.559937 0 32 (s thread port for the ne) widthshow 532.779419 485.649109 M 1.559937 0 32 (w) widthshow 180 497.649048 M 0.907318 0 32 (thread. A list of the k) widthshow 269.426636 497.649048 M 0.907318 0 32 (ernel thread ports for all of the threads in a gi) widthshow 459.320007 497.649048 M 0.907318 0 32 (v) widthshow 464.170074 497.649048 M 0.907318 0 32 (en task can be ob-) widthshow (tained with ) 180.0 509.649 T 4 FF (task ) 227.22 509.649 T 5 FF 245.83 509.649 T 0 FF (task_thr) 258.2 509.649 T (eads) 294.13 509.649 T 3 FF (.) 313.02 509.649 T 180 533.648926 M 2.393723 0 32 (A ne) widthshow 201.303864 533.648926 M 2.393723 0 32 (wly created thread is in the ) widthshow 4 FF 326.196228 533.648926 M 2.393723 0 32 (suspended) widthshow 3 FF 367.856201 533.648926 M 2.393723 0 32 ( state. This is the same as if ) widthshow 4 FF 499.496002 533.648926 M 2.393723 0 32 (thr) widthshow 510.796204 533.648926 M 2.393723 0 32 (ead) widthshow 3 FF 525.236206 533.648926 M 2.393723 0 32 ( ) widthshow 5 FF 530.129944 533.648926 M 2.393723 0 32 widthshow 0 FF 180 545.648865 M 0.411377 0 32 (thr) widthshow 193.150101 545.648865 M 0.411377 0 32 (ead_suspend) widthshow 3 FF 247.610092 545.648865 M 0.411377 0 32 ( had been called upon it prior to its e) widthshow 397.532593 545.648865 M 0.411377 0 32 (x) widthshow 402.38266 545.648865 M 0.411377 0 32 (ecuting its \336rst instruction. A sus-) widthshow 180 557.648804 M 0.353088 0 32 (pended thread does not e) widthshow 280.682434 557.648804 M 0.353088 0 32 (x) widthshow 285.532532 557.648804 M 0.353088 0 32 (ecute. A thread is created in the suspended state so that its ma-) widthshow 180 569.648743 M 3.078613 0 32 (chine state can be properly set before it is started. T) widthshow 416.326599 569.648743 M 3.078613 0 32 (o remo) widthshow 447.305298 569.648743 M 3.078613 0 32 (v) widthshow 452.155396 569.648743 M 3.078613 0 32 (e a thread from the) widthshow 180 581.648682 M 0.924454 0 32 (suspended state \(actually) widthshow 281.17926 581.648682 M 0.924454 0 32 (, to decrement its suspend count\), ) widthshow 4 FF 423.376007 581.648682 M 0.924454 0 32 (thr) widthshow 434.676208 581.648682 M 0.924454 0 32 (ead) widthshow 3 FF 449.116211 581.648682 M 0.924454 0 32 ( ) widthshow 5 FF 452.540649 581.648682 M 0.924454 0 32 widthshow 0 FF 465.835114 581.648682 M 0.924454 0 32 (thr) widthshow 478.985229 581.648682 M 0.924454 0 32 (ead_r) widthshow 503.2453 581.648682 M 0.924454 0 32 (esume) widthshow 3 FF 529.905334 581.648682 M 0.924454 0 32 ( is) widthshow (used.) 180.0 593.649 T 0 FF (Thr) 180.0 617.649 T (ead State) 196.49 617.649 T 3 FF (A thread has tw) 180.0 630.649 T (o main sets of state, its machine state and a set of special ports.) 242.94 630.649 T 180 654.648438 M 1.323547 0 32 (The machine state for a thread is obtained via ) widthshow 4 FF 376.591949 654.648438 M 1.323547 0 32 (thr) widthshow 387.892151 654.648438 M 1.323547 0 32 (ead) widthshow 3 FF 402.332153 654.648438 M 1.323547 0 32 ( ) widthshow 5 FF 406.155701 654.648438 M 1.323547 0 32 widthshow 0 FF 419.849243 654.648438 M 1.323547 0 32 (thr) widthshow 432.999329 654.648438 M 1.323547 0 32 (ead_get_state ) widthshow 3 FF 494.582886 654.648438 M 1.323547 0 32 (and set via) widthshow 4 FF (thr) 180.0 666.648 T (ead) 191.3 666.648 T 3 FF ( ) 205.74 666.648 T 5 FF 208.24 666.648 T 0 FF (thr) 220.61 666.648 T (ead_set_state) 233.76 666.648 T 3 FF (.) 290.41 666.648 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 27 27 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (23 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Thr) 72.0 55.824 T (eads) 86.841 55.824 T 0.25 SL 3.86 setmiterlimit 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 72 114.666626 M 1.410553 0 32 (The result of setting a thread\325) widthshow 196.533081 114.666626 M 1.410553 0 32 (s state at a random point is unde\336ned. V) widthshow 367.528137 114.666626 M 1.410553 0 32 (arious steps are) widthshow (needed to obtain a deterministic result.) 72.0 126.667 T 4 (Times-Roman) 7 1 mymakefontmetric 4 FF 72.0 144.667 T 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 85.535995 144.666504 M 0.19165 0 32 (thr) widthshow 96.836197 144.666504 M 0.19165 0 32 (ead) widthshow 3 FF 111.276199 144.666504 M 0.19165 0 32 ( ) widthshow 6 (Symbol) 10 1 mymakefontmetric 6 FF 113.96785 144.666504 M 0.19165 0 32 widthshow 1 FF 126.529495 144.666504 M 0.19165 0 32 (thr) widthshow 139.679596 144.666504 M 0.19165 0 32 (ead_suspend) widthshow 3 FF 194.139587 144.666504 M 0.19165 0 32 ( is used to stop the thread. This, and the follo) widthshow 375.796234 144.666504 M 0.19165 0 32 (wing step, are) widthshow 85.535995 156.666443 M 0.947571 0 32 (unnecessary if the thread has just been created and has yet to run. The) widthshow 377.074524 156.666443 M 0.947571 0 32 (y are needed,) widthshow 85.535995 168.666382 M 0.606689 0 32 (though, for e) widthshow 137.979462 168.666382 M 0.606689 0 32 (xception processing or for asynchronous interruption \(such as signal de-) widthshow (li) 85.536 180.666 T (v) 90.846 180.666 T (ery\).) 95.696 180.666 T 4 FF 72.0 195.666 T 5 FF 85.535995 195.66629 M 0.758591 0 32 (thr) widthshow 96.836197 195.66629 M 0.758591 0 32 (ead) widthshow 3 FF 111.276199 195.66629 M 0.758591 0 32 ( ) widthshow 6 FF 114.53479 195.66629 M 0.758591 0 32 widthshow 1 FF 127.663376 195.66629 M 0.758591 0 32 (thr) widthshow 140.813477 195.66629 M 0.758591 0 32 (ead_abort) widthshow 3 FF 184.143478 195.66629 M 0.758591 0 32 ( is called. This causes an) widthshow 286.656525 195.66629 M 0.758591 0 32 (y system call \(really) widthshow 369.102661 195.66629 M 0.758591 0 32 (, ) widthshow 1 FF 374.861267 195.66629 M 0.758591 0 32 (mach_msg) widthshow 3 FF 420.411255 195.66629 M 0.758591 0 32 ( or) widthshow 85.535995 207.666275 M 0.54718 0 32 (an) widthshow 94.82608 207.666275 M 0.54718 0 32 (y related message call, such as e) widthshow 227.089264 207.666275 M 0.54718 0 32 (xception or page missing messages\) to be aborted.) widthshow 3 FF 85.535995 219.66626 M 0.493958 0 32 (Aborting a message call sets the thread\325) widthshow 247.360062 219.66626 M 0.493958 0 32 (s state to be at the point after the system call,) widthshow 3 FF 85.535995 231.666245 M 0.482407 0 32 (with a return v) widthshow 145.333359 231.666245 M 0.482407 0 32 (alue indicating interruption of the call. Aborting a page f) widthshow 376.205078 231.666245 M 0.482407 0 32 (ault or e) widthshow 409.789978 231.666245 M 0.482407 0 32 (xcep-) widthshow 3 FF 85.535995 243.666229 M 0.641556 0 32 (tion lea) widthshow 115.697662 243.666229 M 0.641556 0 32 (v) widthshow 120.547745 243.666229 M 0.641556 0 32 (es the thread at the point of the page f) widthshow 277.02182 243.666229 M 0.641556 0 32 (ault or e) widthshow 310.925018 243.666229 M 0.641556 0 32 (xception; resuming the thread) widthshow (will cause it to retak) 85.536 255.666 T (e the page f) 166.536 255.666 T (ault or e) 212.806 255.666 T (xception.) 245.426 255.666 T 4 FF 72.0 270.666 T 5 FF 85.535995 270.666199 M 1.546661 0 32 (thr) widthshow 96.836197 270.666199 M 1.546661 0 32 (ead) widthshow 3 FF 111.276199 270.666199 M 1.546661 0 32 ( ) widthshow 6 FF 115.322861 270.666199 M 1.546661 0 32 widthshow 1 FF 129.239517 270.666199 M 1.546661 0 32 (thr) widthshow 142.389618 270.666199 M 1.546661 0 32 (ead_set_state) widthshow 3 FF 199.039627 270.666199 M 1.546661 0 32 ( can then be safely used. \(Note: Some hardw) widthshow 389.882996 270.666199 M 1.546661 0 32 (are allo) widthshow 420.889801 270.666199 M 1.546661 0 32 (ws) widthshow 3 FF 85.535995 282.666199 M 0.865784 0 32 (page f) widthshow 111.011841 282.666199 M 0.865784 0 32 (aults or e) widthshow 149.253494 282.666199 M 0.865784 0 32 (xceptions to occur mid-instruction. This mid-instruction state may or) widthshow (may not be permitted to be manipulated.\)) 85.536 294.666 T 4 FF 72.0 309.666 T 5 FF (thr) 85.536 309.666 T (ead) 96.836 309.666 T 3 FF ( ) 111.276 309.666 T 6 FF 113.776 309.666 T 1 FF (thr) 126.146 309.666 T (ead_r) 139.296 309.666 T (esume) 163.556 309.666 T 3 FF ( restarts the thread.) 190.216 309.666 T 72 333.666077 M 0.84053 0 32 (A thread has tw) widthshow 137.461655 333.666077 M 0.84053 0 32 (o special ports associated with it. The \336rst is the v) widthshow 345.327087 333.666077 M 0.84053 0 32 (alue for the thread to) widthshow 72 345.666016 M 0.398636 0 32 (use to request operations upon itself. This is normally the same as the k) widthshow 362.612335 345.666016 M 0.398636 0 32 (ernel thread port,) widthshow 72 357.665955 M 0.543854 0 32 (b) widthshow 76.80011 357.665955 M 0.543854 0 32 (ut can be dif) widthshow 127.891815 357.665955 M 0.543854 0 32 (ferent if so set \(most lik) widthshow 225.781143 357.665955 M 0.543854 0 32 (ely by the creator of the thread\). The second is the) widthshow 72 369.665894 M 0.705292 0 32 (port used by the thread, within the k) widthshow 221.267105 369.665894 M 0.705292 0 32 (ernel, when it is processing e) widthshow 340.733643 369.665894 M 0.705292 0 32 (xceptions on behalf of) widthshow 72 381.665833 M 1.574127 0 32 (itself. These tw) widthshow 136.428314 381.665833 M 1.574127 0 32 (o ports are returned by ) widthshow 5 FF 237.328964 381.665833 M 1.574127 0 32 (thr) widthshow 248.629166 381.665833 M 1.574127 0 32 (ead) widthshow 3 FF 263.069153 381.665833 M 1.574127 0 32 ( ) widthshow 6 FF 267.143311 381.665833 M 1.574127 0 32 widthshow 1 FF 281.087402 381.665833 M 1.574127 0 32 (thr) widthshow 294.237518 381.665833 M 1.574127 0 32 (ead_get_special_port) widthshow 3 FF 384.227539 381.665833 M 1.574127 0 32 ( and set by) widthshow 5 FF (thr) 72.0 393.666 T (ead) 83.3 393.666 T 3 FF ( ) 97.74 393.666 T 6 FF 100.24 393.666 T 1 FF (thr) 112.61 393.666 T (ead_set_special_port) 125.76 393.666 T 3 FF (.) 214.64 393.666 T 72 417.66571 M 0.867615 0 32 (V) widthshow 78.110611 417.66571 M 0.867615 0 32 (arious random pieces of k) widthshow 184.791138 417.66571 M 0.867615 0 32 (ernel thread state, such as the suspend count and scheduling) widthshow (information, can be obtained via ) 72.0 429.666 T 5 FF (thr) 204.2 429.666 T (ead) 215.5 429.666 T 3 FF ( ) 229.94 429.666 T 6 FF 232.44 429.666 T 1 FF (thr) 244.81 429.666 T (ead_inf) 257.96 429.666 T (o) 289.38 429.666 T 3 FF (.) 294.38 429.666 T 1 FF (Scheduling Contr) 72.0 453.666 T (ol) 147.11 453.666 T 3 FF 72 466.665527 M 0.569946 0 32 (The follo) widthshow 109.260086 466.665527 M 0.569946 0 32 (wing functions af) widthshow 180.140121 466.665527 M 0.569946 0 32 (fect the scheduling of a thread. The) widthshow 324.759888 466.665527 M 0.569946 0 32 (y are described under pro-) widthshow (cessor sets.) 72.0 478.665 T 4 FF 72.0 496.665 T 5 FF (thr) 85.536 496.665 T (ead) 96.836 496.665 T 3 FF ( ) 111.276 496.665 T 6 FF 113.776 496.665 T 1 FF (thr) 126.146 496.665 T (ead_assign) 139.296 496.665 T 4 FF 72.0 511.665 T 5 FF (thr) 85.536 511.665 T (ead) 96.836 511.665 T 3 FF ( ) 111.276 511.665 T 6 FF 113.776 511.665 T 1 FF (thr) 126.146 511.665 T (ead_assign_default) 139.296 511.665 T 4 FF 72.0 526.665 T 5 FF (thr) 85.536 526.665 T (ead) 96.836 526.665 T 3 FF ( ) 111.276 526.665 T 6 FF 113.776 526.665 T 1 FF (thr) 126.146 526.665 T (ead_get_assignment) 139.296 526.665 T 4 FF 72.0 541.665 T 5 FF (thr) 85.536 541.665 T (ead) 96.836 541.665 T 3 FF ( ) 111.276 541.665 T 6 FF 113.776 541.665 T 1 FF (thr) 126.146 541.665 T (ead_max_priority) 139.296 541.665 T 4 FF 72.0 556.665 T 5 FF (thr) 85.536 556.665 T (ead) 96.836 556.665 T 3 FF ( ) 111.276 556.665 T 6 FF 113.776 556.665 T 1 FF (thr) 126.146 556.665 T (ead_policy) 139.296 556.665 T 4 FF 72.0 571.665 T 5 FF (thr) 85.536 571.665 T (ead) 96.836 571.665 T 3 FF ( ) 111.276 571.665 T 6 FF 113.776 571.665 T 1 FF (thr) 126.146 571.665 T (ead_priority) 139.296 571.665 T 4 FF 72.0 586.665 T 5 FF (host_contr) 85.536 586.665 T (ol) 127.866 586.665 T 3 FF ( \() 135.646 586.665 T 5 FF (thr) 141.476 586.665 T (ead) 152.776 586.665 T 3 FF (\)) 167.216 586.665 T 6 FF 170.546 586.665 T 1 FF (thr) 182.916 586.665 T (ead_wir) 196.067 586.665 T (e) 230.327 586.665 T 3 FF 72 610.664978 M 0.54245 0 32 (The ) widthshow 1 FF 90.592453 610.664978 M 0.54245 0 32 (thr) widthshow 103.742554 610.664978 M 0.54245 0 32 (ead_wir) widthshow 138.002655 610.664978 M 0.54245 0 32 (e) widthshow 3 FF 142.442657 610.664978 M 0.54245 0 32 ( call marks the thread as \322wired\323\321pri) widthshow 297.627502 610.664978 M 0.54245 0 32 (vile) widthshow 312.4776 610.664978 M 0.54245 0 32 (ged with respect to k) widthshow 397.867462 610.664978 M 0.54245 0 32 (ernel re-) widthshow 72 622.664917 M 1.26152 0 32 (source management. A \322wired\323 thread is al) widthshow 251.919205 622.664917 M 1.26152 0 32 (w) widthshow 259.039246 622.664917 M 1.26152 0 32 (ays eligible to be scheduled and can con-) widthshow 72 634.664856 M 1.574585 0 32 (sume memory e) widthshow 138.779312 634.664856 M 1.574585 0 32 (v) widthshow 143.629395 634.664856 M 1.574585 0 32 (en when free memory is scarce. This property is assigned to threads) widthshow 72 646.664795 M 1.770737 0 32 (within the def) widthshow 130.991531 646.664795 M 1.770737 0 32 (ault page-out path. Threads not in the def) widthshow 308.256775 646.664795 M 1.770737 0 32 (ault page-out path should not) widthshow 3 FF (ha) 72.0 658.665 T (v) 81.24 658.665 T (e this property to pre) 86.09 658.665 T (v) 169.16 658.665 T (ent the k) 174.01 658.665 T (ernel\325) 208.35 658.665 T (s free list of pages from being e) 231.121 658.665 T (xhausted.) 357.331 658.665 T 5 FF 72 682.664795 M 0.396271 0 32 (task) widthshow 3 FF 88.110001 682.664795 M 0.396271 0 32 ( \() widthshow 5 FF 94.336273 682.664795 M 0.396271 0 32 (thr) widthshow 105.636475 682.664795 M 0.396271 0 32 (ead) widthshow 3 FF 120.076477 682.664795 M 0.396271 0 32 (\) ) widthshow 6 FF 126.30275 682.664795 M 0.396271 0 32 widthshow 1 FF 136.172745 682.664795 M 0.396271 0 32 ( mach_sample_thr) widthshow 215.549118 682.664795 M 0.396271 0 32 (ead ) widthshow 3 FF 233.445389 682.664795 M 0.396271 0 32 (pro) widthshow 246.625473 682.664795 M 0.396271 0 32 (vides support for the Posix ) widthshow 1 FF 358.326843 682.664795 M 0.396271 0 32 (pr) widthshow 368.146912 682.664795 M 0.396271 0 32 (o\336l) widthshow 3 FF 381.486938 682.664795 M 0.396271 0 32 ( system call.) widthshow 72 694.664795 M 0.562622 0 32 (\(The call requires both a thread parameter and a task parameter on the same host.\) After) widthshow 52 212.999603 2 9.999985 NF 52 236.999573 2 21.999969 NF 52 275.999512 2 21.999969 NF 52 675.998108 2 21.999969 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 28 28 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (24 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Thr) 180.0 55.824 T (eads and T) 194.841 55.824 T (asks) 236.026 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 180 112.650665 M 1.635315 0 32 (being called, the k) widthshow 258.126007 112.650665 M 1.635315 0 32 (ernel will start sampling the program counter \(PC\) of the speci\336ed) widthshow 180 124.65065 M 1.658279 0 32 (thread periodically \(whene) widthshow 290.256714 124.65065 M 1.658279 0 32 (v) widthshow 295.106812 124.65065 M 1.658279 0 32 (er it is running when a clock interrupt occurs\). Buf) widthshow 512.521484 124.65065 M 1.658279 0 32 (fers of) widthshow (these PC v) 180.0 136.651 T (alues will be sent when full to a port speci\336ed in the sample call.) 222.53 136.651 T 180 178.983887 360 3.024002 CR 0.25 SL 2 SC 540 180.5 M 180 180.5 L S 0 0 612 792 CR 4 (Times-Bold) 14 1 mymakefontmetric 4 FF (T) 180.0 174.317 T (asks) 188.051 174.317 T 3 FF 180 198.674515 M 0.464661 0 32 (A task can be vie) widthshow 250.47879 198.674515 M 0.464661 0 32 (wed as a container that holds a set of threads. It contains def) widthshow 496.734802 198.674515 M 0.464661 0 32 (ault v) widthshow 519.449585 198.674515 M 0.464661 0 32 (alues) widthshow 180 210.674454 M 0.798416 0 32 (to be applied to its containing threads. Most importantly) widthshow 410.457703 210.674454 M 0.798416 0 32 (, it contains those elements that) widthshow 180 222.674393 M 1.02565 0 32 (its containing threads need to e) widthshow 309.128357 222.674393 M 1.02565 0 32 (x) widthshow 313.978424 222.674393 M 1.02565 0 32 (ecute, namely) widthshow 369.89444 222.674393 M 1.02565 0 32 (, a port name space and a virtual address) widthshow (space.) 180.0 234.674 T 3 FF 180 258.674347 M 0.009949 0 32 (FIGURE 2 sho) widthshow 239.770035 258.674347 M 0.009949 0 32 (ws the client visible task structures. The task object is the recei) widthshow 491.259644 258.674347 M 0.009949 0 32 (v) widthshow 496.109711 258.674347 M 0.009949 0 32 (er for mes-) widthshow 3 FF 180 270.674316 M 0.486832 0 32 (sages sent to the k) widthshow 254.617386 270.674316 M 0.486832 0 32 (ernel task port. Aside from an) widthshow 376.321655 270.674316 M 0.486832 0 32 (y random task that may hold send rights) widthshow 180 282.674316 M 0.312302 0 32 (to this task port, the task port is also accessible via the task\325) widthshow 421.787933 282.674316 M 0.312302 0 32 (s task self port, the contained) widthshow (threads or the containing processor set. ) 180.0 294.674 T 5 (Times-Bold) 12 1 mymakefontmetric 5 FF (Life and Death) 180.0 326.008 T 3 FF 180 342.674194 M 0.126831 0 32 (A ne) widthshow 199.036972 342.674194 M 0.126831 0 32 (w task is created with ) widthshow 6 (Times-Italic) 10 1 mymakefontmetric 6 FF 288.821136 342.674194 M 0.126831 0 32 (task) widthshow 3 FF 304.931152 342.674194 M 0.126831 0 32 ( ) widthshow 7 (Symbol) 10 1 mymakefontmetric 7 FF 307.557983 342.674194 M 0.126831 0 32 widthshow 0 FF 320.05481 342.674194 M 0.126831 0 32 (task_cr) widthshow 351.534912 342.674194 M 0.126831 0 32 (eate) widthshow 3 FF 368.744904 342.674194 M 0.126831 0 32 (. Note that task creation is an operation re-) widthshow 180 354.674133 M 1.141968 0 32 (quested of an e) widthshow 243.535995 354.674133 M 1.141968 0 32 (xisting \(\322prototype\323\) task. The result is a ne) widthshow 426.809937 354.674133 M 1.141968 0 32 (w task located on the same) widthshow 180 366.674072 M 0.392609 0 32 (machine as the prototype task \(not that of the task making this in) widthshow 443.181519 366.674072 M 0.392609 0 32 (v) widthshow 447.981628 366.674072 M 0.392609 0 32 (ocation\). The ne) widthshow 513.776978 366.674072 M 0.392609 0 32 (w task) widthshow 180 378.674072 M 0.005981 0 32 (can either be created with an empty virtual address space, or one inherited from the proto-) widthshow 180 390.674042 M 1.543228 0 32 (type task. The ne) widthshow 252.699829 390.674042 M 1.543228 0 32 (w task\325) widthshow 282.853363 390.674042 M 1.543228 0 32 (s port name space is empty) widthshow 397.959869 390.674042 M 1.543228 0 32 (. The ne) widthshow 433.286469 390.674042 M 1.543228 0 32 (w task inherits the parent) widthshow 3 FF (task\325) 180.0 402.674 T (s PC sampling state.) 198.89 402.674 T 3 FF 180 426.673981 M 0.594971 0 32 (A task is destro) widthshow 243.624969 426.673981 M 0.594971 0 32 (yed with ) widthshow 6 FF 282.034912 426.673981 M 0.594971 0 32 (task) widthshow 3 FF 298.144897 426.673981 M 0.594971 0 32 ( ) widthshow 7 FF 301.239868 426.673981 M 0.594971 0 32 widthshow 0 FF 314.204834 426.673981 M 0.594971 0 32 (task_terminate) widthshow 3 FF 378.634857 426.673981 M 0.594971 0 32 (. This operation is requested of the task) widthshow 180 438.67392 M 0.884201 0 32 (to be destro) widthshow 228.328461 438.67392 M 0.884201 0 32 (yed, not the parent speci\336ed in its creation. The task\325) widthshow 447.646606 438.67392 M 0.884201 0 32 (s virtual address space) widthshow (and port name space are destro) 180.0 450.674 T (yed.) 303.47 450.674 T (V) 180.0 474.674 T (arious random statistics about the task can be obtained with ) 186.111 474.674 T 6 FF (task) 426.641 474.674 T 3 FF ( ) 442.751 474.674 T 7 FF 445.251 474.674 T 0 FF (task_inf) 457.621 474.674 T (o) 491.821 474.674 T 3 FF (.) 496.821 474.674 T 5 FF (Special P) 180.0 506.007 T (orts) 226.764 506.007 T 3 FF 180 522.673706 M 1.149368 0 32 (Aside from its associated port name space, a task also has a small set of special ports.) widthshow (These are the so-called \322special\323 ports and the \322re) 180.0 534.674 T (gistered\323 ports.) 379.78 534.674 T 180 558.673584 M 1.063492 0 32 (A task has three \322special\323 ports associated with it. The \336rst is the v) widthshow 461.315552 558.673584 M 1.063492 0 32 (alue for the task to) widthshow 180 570.673523 M 0.990631 0 32 (use to request operations upon itself. This is normally the same as the k) widthshow 478.308289 570.673523 M 0.990631 0 32 (ernel task port,) widthshow 180 582.673462 M 1.03717 0 32 (b) widthshow 184.80011 582.673462 M 1.03717 0 32 (ut can be dif) widthshow 237.371765 582.673462 M 1.03717 0 32 (ferent if so set \(most lik) widthshow 337.727661 582.673462 M 1.03717 0 32 (ely by the creator of the task\). The second is the) widthshow 180 594.673401 M 0.435593 0 32 (port used by a thread, within the k) widthshow 319.599213 594.673401 M 0.435593 0 32 (ernel, when it is processing e) widthshow 437.717285 594.673401 M 0.435593 0 32 (xceptions on behalf of it-) widthshow 180 606.67334 M 0.984955 0 32 (self \(when it has not set a thread speci\336c e) widthshow 357.844696 606.67334 M 0.984955 0 32 (xception port\). The third is a bootstrap port,) widthshow 180 618.673279 M 0.839386 0 32 (which can be used for an) widthshow 283.73703 618.673279 M 0.839386 0 32 (ything, b) widthshow 319.936523 618.673279 M 0.839386 0 32 (ut which is intended as the initial port a task holds to) widthshow 180 630.673218 M 0.242844 0 32 (something other than itself, for use in locating other services. These ports are returned by) widthshow 6 FF 180 642.673157 M 1.160889 0 32 (task ) widthshow 7 FF 199.770889 642.673157 M 1.160889 0 32 widthshow 0 FF 213.301773 642.673157 M 1.160889 0 32 (task_get_special_port) widthshow 3 FF 306.071777 642.673157 M 1.160889 0 32 ( and set by) widthshow 0 FF 352.604431 642.673157 M 1.160889 0 32 ( ) widthshow 6 FF 356.26532 642.673157 M 1.160889 0 32 (task) widthshow 3 FF 372.375336 642.673157 M 1.160889 0 32 ( ) widthshow 7 FF 376.036224 642.673157 M 1.160889 0 32 widthshow 0 FF 389.567108 642.673157 M 1.160889 0 32 (task_set_special_port) widthshow 3 FF 481.227112 642.673157 M 1.160889 0 32 (. The v) widthshow 511.34903 642.673157 M 1.160889 0 32 (alue of) widthshow 180 654.673096 M 0.683472 0 32 (these ports in a ne) widthshow 254.694031 654.673096 M 0.683472 0 32 (w task are inherited from the task that w) widthshow 421.141876 654.673096 M 0.683472 0 32 (as the tar) widthshow 458.428925 654.673096 M 0.683472 0 32 (get of the ) widthshow 0 FF 500.749329 654.673096 M 0.683472 0 32 (task_cr) widthshow 532.229431 654.673096 M 0.683472 0 32 (e-) widthshow (ate) 180.0 666.673 T 3 FF ( call \(with the ob) 192.77 666.673 T (vious e) 260.39 666.673 T (xception of the task self port\).) 288.85 666.673 T 558 105.984009 2 33.999954 NF 558 396.007385 2 9.999985 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 29 29 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (25 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (T) 72.0 55.824 T (asks) 77.176 55.824 T 0.25 SL 3.86 setmiterlimit 0 SC 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 72 548.682617 M 0.551834 0 32 (A task also has a small array of \322re) widthshow 216.224777 548.682617 M 0.551834 0 32 (gistered\323 ports, which also inherit from the task used) widthshow 72 560.682556 M 0.259247 0 32 (in the ) widthshow 1 FF 97.518494 560.682556 M 0.259247 0 32 (task_cr) widthshow 128.998596 560.682556 M 0.259247 0 32 (eate) widthshow 3 FF 146.208603 560.682556 M 0.259247 0 32 ( call. These ports can be set with ) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 281.312592 560.682556 M 0.259247 0 32 (task ) widthshow 5 (Symbol) 10 1 mymakefontmetric 5 FF 300.181824 560.682556 M 0.259247 0 32 widthshow 1 FF 312.811096 560.682556 M 0.259247 0 32 (mach_ports_r) widthshow 372.621185 560.682556 M 0.259247 0 32 (egister ) widthshow 3 FF 403.700439 560.682556 M 0.259247 0 32 (and re-) widthshow 72 572.682495 M 0.511475 0 32 (turned by ) widthshow 4 FF 113.572952 572.682495 M 0.511475 0 32 (task) widthshow 3 FF 129.682953 572.682495 M 0.511475 0 32 ( ) widthshow 5 FF 132.694427 572.682495 M 0.511475 0 32 widthshow 1 FF 145.575897 572.682495 M 0.511475 0 32 (mach_ports_lookup) widthshow 3 FF 230.585892 572.682495 M 0.511475 0 32 (. Although these ports can ha) widthshow 349.593384 572.682495 M 0.511475 0 32 (v) widthshow 354.443481 572.682495 M 0.511475 0 32 (e an) widthshow 371.185028 572.682495 M 0.511475 0 32 (y use, their e) widthshow 423.669556 572.682495 M 0.511475 0 32 (x-) widthshow 72 584.682434 M 1.620636 0 32 (pected uses are to refer to the Netw) widthshow 224.584534 584.682434 M 1.620636 0 32 (ork Name serv) widthshow 286.545898 584.682434 M 1.620636 0 32 (er) widthshow 293.916138 584.682434 M 1.620636 0 32 (, the En) widthshow 327.587616 584.682434 M 1.620636 0 32 (vironment serv) widthshow 389.328339 584.682434 M 1.620636 0 32 (er and the) widthshow 72.0 596.682 T (er) 129.88 596.682 T (.) 137.1 596.682 T 6 (Times-Bold) 12 1 mymakefontmetric 6 FF (Thr) 72.0 628.016 T (ead Management) 91.788 628.016 T 3 FF 72 644.682251 M 0.334625 0 32 (A thread belongs to one and only one task. Threads are created with ) widthshow 4 FF 350.730164 644.682251 M 0.334625 0 32 (task) widthshow 3 FF 366.840149 644.682251 M 0.334625 0 32 ( ) widthshow 5 FF 369.674805 644.682251 M 0.334625 0 32 widthshow 1 FF 382.379395 644.682251 M 0.334625 0 32 (thr) widthshow 395.52951 644.682251 M 0.334625 0 32 (ead_cr) widthshow 424.229614 644.682251 M 0.334625 0 32 (e-) widthshow (ate) 72.0 656.682 T 3 FF (. The set of threads present in a task can be found with ) 84.77 656.682 T 4 FF (task) 305.28 656.682 T 3 FF ( ) 321.39 656.682 T 5 FF 323.89 656.682 T 1 FF (task_thr) 336.26 656.682 T (eads) 372.19 656.682 T 3 FF (.) 391.08 656.682 T 72 680.682129 M 0.933304 0 32 (Although a task does not itself e) widthshow 206.32991 680.682129 M 0.933304 0 32 (x) widthshow 211.179993 680.682129 M 0.933304 0 32 (ecute, some e) widthshow 267.046692 680.682129 M 0.933304 0 32 (x) widthshow 271.89679 680.682129 M 0.933304 0 32 (ecution properties can be set for a task) widthshow 72 692.682129 M 0.068207 0 32 (which will then apply to its contained threads. All of the threads in a task can be suspend-) widthshow 63 108 378 434.015991 CR 3 SL 0 SC 0.6667 G 168.69 454.77 M 168.69 448.98 L 148.5 454.77 L 168.69 460.56 L F 168.69 454.77 M 184.5 454.77 L S 195.69 409.77 M 195.69 403.98 L 175.5 409.77 L 195.69 415.56 L F 195.69 409.77 M 211.5 409.77 L S 202.5 308.19 M 208.29 308.19 L 202.5 288 L 196.71 308.19 L F 202.5 308.19 M 202.5 333 L S 281.31 198 M 281.31 203.79 L 301.5 198 L 281.31 192.21 L F 281.31 198 M 238.5 198 L S 1 G 78 513 348 27 NF 78 513 348 13.031998 CR 0.25 SL 2 SC 0 G 438 519.52 M 150 519.52 L S 0 SC 141 519.52 M 78 519.52 L S 63 108 378 434.015991 CR 7 (Helvetica-Bold) 9 1 mymakefontmetric 7 FF (FIGURE 2) 78.0 532.032 T 2 FF (T) 150.0 532.032 T (ask Structur) 155.176 532.032 T (es) 203.263 532.032 T 3 FF (emulation addresses) 310.5 227.144 T (task self port) 310.5 244.785 T (task e) 310.5 262.425 T (xception port) 333.4 262.425 T (bootstrap port) 310.5 280.066 T (re) 310.5 297.706 T (gistered ports) 318.12 297.706 T (statistics / sampling) 310.5 315.347 T (processor set) 310.5 332.988 T 1 SL 400.5 233.64 M 301.5 233.64 L S 400.5 251.28 M 301.5 251.28 L S 400.5 268.92 M 301.5 268.92 L S 400.5 286.56 M 301.5 286.56 L S 400.5 304.2 M 301.5 304.2 L S 400.5 321.84 M 301.5 321.84 L S 301.5 171 99 279 N (task port) 189.644 196.908 T 3 SL 175.5 180 63 27 N (host name port) 240.285 502.908 T 229.5 486 81 27 N 224.48 218.11 M 227.66 216.97 L 220.49 207 L 221.29 219.25 L F 1 SL 180 72 162 72 301.5 207 AS 339.72583 196.3629 22.554001 1 NF 8 (Times-Roman) 14 1 mymakefontmetric 8 FF (task) 339.726 194.964 T 400.5 216 M 301.5 216 L S 184.682617 262.670593 53.64801 1 NF (processor) 184.683 261.271 T 203.72583 277.634277 15.554001 1 NF (set) 203.726 276.235 T 175.5 243 72 45 N 310.5 474.46 M 307.19 474.46 L 310.5 486 L 313.81 474.46 L F 310.5 474.46 M 310.5 450 L S 3 FF (suspend count) 310.5 350.628 T 400.5 339.48 M 301.5 339.48 L S (processor set name port) 164.161 349.908 T 3 SL 157.5 333 108 27 N 1 SL 276.67 339.14 M 275.85 335.94 L 265.49 341.99 L 277.49 342.35 L F 276.68 339.15 M 301.5 333 L S 202.5 218.54 M 205.81 218.54 L 202.5 207 L 199.19 218.54 L F 202.5 218.54 M 202.5 243 L S (scheduling parms) 310.5 368.269 T (port name space) 310.5 385.909 T (address space) 310.5 403.55 T (contained threads) 310.5 421.191 T 400.5 357.12 M 301.5 357.12 L S 400.5 374.77 M 301.5 374.77 L S 400.5 392.41 M 301.5 392.41 L S 400.5 410.05 M 301.5 410.05 L S (containing host) 310.5 438.831 T 400.5 427.69 M 301.5 427.69 L S 3 FF (special ports...) 349.122 502.908 T 3 SL 337.5 486 81 27 N 3 FF (thread port) 221.206 408.68 T 211.5 391.771362 63 27 N (address space) 350.656 133.908 T 1 SL 12.5 337.5 117 81 27 RS (port name space) 201.517 133.908 T 12.5 193.5 117 81 27 RS 354.64 162.19 M 346.49 171 L 358.07 167.85 L S 383.33 152.81 M 391.49 144 L 379.91 147.15 L S 391.5 144 M 346.5 171 L S 259.46 144.98 M 247.5 144 L 257.12 151.17 L S 307.53 170.02 M 319.49 171 L 309.87 163.83 L S 319.5 171 M 247.5 144 L S 112.5 387 63 36 N 126.511963 411.170593 34.986008 1 NF 8 FF (thread) 126.512 409.771 T 3 FF (thread port) 194.206 453.68 T 3 SL 184.5 436.771362 63 27 N 1 SL 85.5 432 63 36 N 99.511963 456.170593 34.986008 1 NF 8 FF (thread) 99.512 454.771 T 285.44 408.66 M 286.49 405.53 L 274.5 405 L 284.39 411.8 L F 285.44 408.66 M 301.5 414 L S 257.79 444.8 M 256.3 441.84 L 247.49 449.99 L 259.28 447.75 L F 257.8 444.81 M 301.5 423 L S 164.27 202.15 M 165.47 205.36 L 175.49 197.99 L 163.08 198.93 L F 270 78 108 377.999451 175.5 386.999725 AS 162.84 192.05 M 163.71 195.68 L 175.5 189 L 161.97 188.42 L F 270 81 162 485.995972 175.5 431.997986 AS 0.5 SL 127.96 483.83 M 127.96 487.14 L 139.5 483.83 L 127.96 480.52 L F 127.96 483.83 M 94.5 483.83 L S 3 SL 0.6667 G 119.31 510.83 M 119.31 516.62 L 139.5 510.83 L 119.31 505.04 L F 119.31 510.83 M 94.5 510.83 L S 0 G 3 FF (send right) 157.5 483.831 T (recei) 157.5 510.831 T (v) 176.68 510.831 T (e right) 181.53 510.831 T 1 SL 0 90 36 35.999451 400.5 314.999725 AS 0 90 36 36 400.5 297 AS 0 90 36 36 400.5 279 AS 418.5 474.46 M 415.19 474.46 L 418.5 486 L 421.81 474.46 L F 418.5 474.46 M 418.5 279 L S grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 30 30 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 2 SC 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (26 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Thr) 180.0 55.824 T (eads and T) 194.841 55.824 T (asks) 236.026 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 180 112.650635 M 0.014984 0 32 (ed or resumed en masse by ) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 290.619934 112.650635 M 0.014984 0 32 (task) widthshow 3 FF 306.729919 112.650635 M 0.014984 0 32 ( ) widthshow 5 (Symbol) 10 1 mymakefontmetric 5 FF 309.244904 112.650635 M 0.014984 0 32 widthshow 0 FF 321.629883 112.650635 M 0.014984 0 32 (task_suspend) widthshow 3 FF 378.869873 112.650635 M 0.014984 0 32 ( and ) widthshow 4 FF 398.339844 112.650635 M 0.014984 0 32 (task) widthshow 3 FF 414.449829 112.650635 M 0.014984 0 32 ( ) widthshow 5 FF 416.964844 112.650635 M 0.014984 0 32 widthshow 0 FF 429.349792 112.650635 M 0.014984 0 32 (task_r) widthshow 456.389893 112.650635 M 0.014984 0 32 (esume) widthshow 3 FF 483.049927 112.650635 M 0.014984 0 32 (. These opera-) widthshow 180 124.650574 M 1.141357 0 32 (tions do not af) widthshow 240.67421 124.650574 M 1.141357 0 32 (fect the threads\325 suspend counts; the) widthshow 391.481079 124.650574 M 1.141357 0 32 (y af) widthshow 407.642578 124.650574 M 1.141357 0 32 (fect the task\325) widthshow 461.025635 124.650574 M 1.141357 0 32 (s suspend count. A) widthshow (thread can e) 180.0 136.651 T (x) 228.16 136.651 T (ecute only if both its and its task\325) 233.01 136.651 T (s suspend counts are zero.) 365.51 136.651 T 180 160.650452 M 1.548309 0 32 (As mentioned under e) widthshow 272.535034 160.650452 M 1.548309 0 32 (xception processing for threads, a thread that e) widthshow 469.843292 160.650452 M 1.548309 0 32 (x) widthshow 474.693359 160.650452 M 1.548309 0 32 (ecutes a system) widthshow 180 172.650391 M 0.605698 0 32 (call instruction can ha) widthshow 269.657227 172.650391 M 0.605698 0 32 (v) widthshow 274.507294 172.650391 M 0.605698 0 32 (e that system call redirected back into user space. This is accom-) widthshow 180 184.65033 M 1.437302 0 32 (plished by setting an emulation routine address \(for the task as a whole\) with ) widthshow 4 FF 510.082245 184.65033 M 1.437302 0 32 (task) widthshow 3 FF 526.192261 184.65033 M 1.437302 0 32 ( ) widthshow 5 FF 530.129517 184.65033 M 1.437302 0 32 widthshow 0 FF 180 196.650269 M 1.684906 0 32 (task_set_emulation) widthshow 3 FF 262.220001 196.650269 M 1.684906 0 32 ( or ) widthshow 4 FF 278.9198 196.650269 M 1.684906 0 32 (task) widthshow 3 FF 295.029816 196.650269 M 1.684906 0 32 ( ) widthshow 5 FF 299.214722 196.650269 M 1.684906 0 32 widthshow 3 FF 309.084717 196.650269 M 1.684906 0 32 ( ) widthshow 0 FF 313.269623 196.650269 M 1.684906 0 32 (task_set_emulation_v) widthshow 405.389679 196.650269 M 1.684906 0 32 (ector) widthshow 3 FF 426.48999 196.650269 M 1.684906 0 32 (. The emulation v) widthshow 501.944794 196.650269 M 1.684906 0 32 (ector can) widthshow (be e) 180.0 208.65 T (xamined with ) 196.23 208.65 T 4 FF (task) 253.45 208.65 T 3 FF ( ) 269.56 208.65 T 5 FF 272.06 208.65 T 3 FF ( ) 281.93 208.65 T 0 FF (task_get_emulation_v) 284.43 208.65 T (ector) 377.66 208.65 T 3 FF (.) 398.76 208.65 T 3 FF (The def) 180.0 232.65 T (ault scheduling properties for threads can be set with the follo) 210.72 232.65 T (wing:) 457.65 232.65 T 6 (Times-Roman) 7 1 mymakefontmetric 6 FF 180.0 250.65 T 4 FF (task) 193.536 250.65 T 3 FF ( ) 209.646 250.65 T 5 FF 212.146 250.65 T 0 FF (task_assign) 224.516 250.65 T 6 FF 180.0 265.65 T 4 FF (task) 193.536 265.65 T 3 FF ( ) 209.646 265.65 T 5 FF 212.146 265.65 T 0 FF (task_assign_default) 224.516 265.65 T 6 FF 180.0 280.65 T 4 FF (task) 193.536 280.65 T 3 FF ( ) 209.646 280.65 T 5 FF 212.146 280.65 T 0 FF (task_get_assignment) 224.516 280.65 T 6 FF 180.0 295.65 T 4 FF (task) 193.536 295.65 T 3 FF ( ) 209.646 295.65 T 5 FF 212.146 295.65 T 0 FF (task_priority) 224.516 295.65 T 4 FF 180 319.649902 M 0.498123 0 32 (task) widthshow 3 FF 196.110001 319.649902 M 0.498123 0 32 (\() widthshow 4 FF 199.440002 319.649902 M 0.498123 0 32 (task) widthshow 3 FF 215.550003 319.649902 M 0.498123 0 32 (\) ) widthshow 5 FF 221.878128 319.649902 M 0.498123 0 32 widthshow 0 FF 231.748123 319.649902 M 0.498123 0 32 ( mach_sample_task ) widthshow 3 FF 318.85437 319.649902 M 0.498123 0 32 (pro) widthshow 332.034454 319.649902 M 0.498123 0 32 (vides support for the Posix ) widthshow 0 FF 444.245056 319.649902 M 0.498123 0 32 (pr) widthshow 454.065186 319.649902 M 0.498123 0 32 (o\336l) widthshow 3 FF 467.405151 319.649902 M 0.498123 0 32 ( system call. \(The) widthshow 180 331.649902 M 0.248718 0 32 (call requires both the task port and a reference task on the same host.\) After being called,) widthshow 180 343.649902 M 0.065308 0 32 (the k) widthshow 199.685364 343.649902 M 0.065308 0 32 (ernel will start sampling the program counter \(PC\) of all threads within the task peri-) widthshow 180 355.649872 M 1.252243 0 32 (odically \(whene) widthshow 245.15239 355.649872 M 1.252243 0 32 (v) widthshow 250.002472 355.649872 M 1.252243 0 32 (er one is running when a clock interrupt occurs\). Buf) widthshow 472.642822 355.649872 M 1.252243 0 32 (fers of these PC) widthshow 180 367.649841 M 0.586624 0 32 (v) widthshow 184.750137 367.649841 M 0.586624 0 32 (alues will be sent when full to a port speci\336ed in the sample call. Since a single port is) widthshow 180 379.649841 M 0.54306 0 32 (speci\336ed for this call, all PC samples for all threads will be randomly mix) widthshow 481.889893 379.649841 M 0.54306 0 32 (ed in the b) widthshow 525.259155 379.649841 M 0.54306 0 32 (uf) widthshow 533.339294 379.649841 M 0.54306 0 32 (f-) widthshow (ers sent to that port.) 180.0 391.65 T 558 312.983276 2 81.999893 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 31 31 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 2 SL 3.86 setmiterlimit 0 G 432 45 M 72 45 L S 2 SC 432 342 M 72 342 L S 0.25 SL 432 720 M 72 720 L S 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (27 ) widthshow 0 0 612 792 CR 1 G 72 99 360 225 NF 0 G 2 (Times-Roman) 12 1 mymakefontmetric 2 FF 72 114.999969 M 1.19989 0 (CHAPTER 4) ashow 3 (Times-Roman) 24 1 mymakefontmetric 3 FF 180 114.999969 M -0.479736 0 (Ports, Rights and Messages) ashow 1 G 72 360 360 344.015991 NF 0 G 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 72 366.666626 M 1.792984 0 32 (W) widthshow 81.040222 366.666626 M 1.792984 0 32 (ith the e) widthshow 116.696274 366.666626 M 1.792984 0 32 (xception of its shared memory) widthshow 244.868576 366.666626 M 1.792984 0 32 (, a Mach task interacts with its en) widthshow 390.889709 366.666626 M 1.792984 0 32 (vironment) widthshow 72 378.666565 M 1.140854 0 32 (purely by sending messages and \(hopefully\) recei) widthshow 276.885284 378.666565 M 1.140854 0 32 (ving replies. These messages are sent) widthshow 72 390.666504 M 1.782684 0 32 (via ports, communication channels with multiple senders and single recei) widthshow 381.094299 390.666504 M 1.782684 0 32 (v) widthshow 385.944397 390.666504 M 1.782684 0 32 (ers. A task) widthshow (holds rights to these ports that specify its ability to send or recei) 72.0 402.666 T (v) 327.29 402.666 T (e messages.) 332.14 402.666 T 72 444.999695 360 3.024002 CR 432 446.51 M 72 446.51 L S 0 0 612 792 CR 5 (Times-Bold) 14 1 mymakefontmetric 5 FF (P) 72.0 440.333 T (orts) 80.274 440.333 T 4 FF 72 464.690308 M 1.13765 0 32 (A port is a unidirectional communication channel between a client who requests a ser-) widthshow (vice and a serv) 72.0 476.69 T (er who pro) 131.55 476.69 T (vides the service.) 174.72 476.69 T 72 500.690186 M 1.084976 0 32 (A port has a single recei) widthshow 174.095032 500.690186 M 1.084976 0 32 (v) widthshow 178.945114 500.690186 M 1.084976 0 32 (er and \(potentially\) multiple senders. A port that represents a) widthshow 72 512.690125 M 0.485764 0 32 (k) widthshow 76.900055 512.690125 M 0.485764 0 32 (ernel supported resource has the k) widthshow 215.578949 512.690125 M 0.485764 0 32 (ernel as the recei) widthshow 284.256409 512.690125 M 0.485764 0 32 (v) widthshow 289.106476 512.690125 M 0.485764 0 32 (er; this recei) widthshow 339.258148 512.690125 M 0.485764 0 32 (v) widthshow 344.108215 512.690125 M 0.485764 0 32 (ership cannot change.) widthshow 72 524.690063 M 0.250504 0 32 (A port that names a service pro) widthshow 198.32312 524.690063 M 0.250504 0 32 (vided by a task has that task as the port\325) widthshow 359.727966 524.690063 M 0.250504 0 32 (s recei) widthshow 385.548615 524.690063 M 0.250504 0 32 (v) widthshow 390.398682 524.690063 M 0.250504 0 32 (er; this re-) widthshow (cei) 72.0 536.69 T (v) 83.41 536.69 T (ership can change if desired, as discussed under port rights.) 88.26 536.69 T 72 560.689941 M 0.373993 0 32 (The major state associated with a port is its associated message queue. A port also main-) widthshow (tains a count of references \(rights\) to it.) 72.0 572.69 T 4 FF 72 596.68988 M 0.769302 0 32 (FIGURE 3 sho) widthshow 133.288742 596.68988 M 0.769302 0 32 (ws a typical port, illustrating a series of e) widthshow 303.993256 596.68988 M 0.769302 0 32 (xtant send rights and the single) widthshow 4 FF 72 608.689819 M 0.274231 0 32 (recei) widthshow 91.180145 608.689819 M 0.274231 0 32 (v) widthshow 96.030228 608.689819 M 0.274231 0 32 (e right. The associated message queue has a series of ordered messages. One of the) widthshow 72 620.689819 M 0.217819 0 32 (messages is sho) widthshow 135.515778 620.689819 M 0.217819 0 32 (wn in detail, sho) widthshow 202.029373 620.689819 M 0.217819 0 32 (wing its destination port, reply port reference, a send and) widthshow 72 632.689697 M 1.290665 0 32 (a recei) widthshow 99.410812 632.689697 M 1.290665 0 32 (v) widthshow 104.260895 632.689697 M 1.290665 0 32 (e right being passed in the message, as well as some out-of-line \(virtual cop) widthshow 423.669617 632.689697 M 1.290665 0 32 (y\)) widthshow (memory) 72.0 644.69 T (.) 104.68 644.69 T 72 668.689575 M 1.407089 0 32 (Fe) widthshow 81.750137 668.689575 M 1.407089 0 32 (w operations af) widthshow 145.964462 668.689575 M 1.407089 0 32 (fect the port itself; most operations af) widthshow 304.137146 668.689575 M 1.407089 0 32 (fect port rights or a port name) widthshow (space containing those rights, or af) 72.0 680.69 T (fect the message queue.) 211.17 680.69 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 32 32 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (28 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (P) 180.0 55.824 T (orts, Rights and Messages) 185.319 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 180 546.666626 M 0.318298 0 32 (Ports are created implicitly when an) widthshow 325.581604 546.666626 M 0.318298 0 32 (y other system entity \(threads, tasks, processors, pro-) widthshow 180 558.666565 M 0.487671 0 32 (cessor sets, hosts or de) widthshow 272.520813 558.666565 M 0.487671 0 32 (vices\) is created. Also, ) widthshow 0 FF 367.781525 558.666565 M 0.487671 0 32 (mach_r) widthshow 400.371643 558.666565 M 0.487671 0 32 (eply_port) widthshow 3 FF 441.481628 558.666565 M 0.487671 0 32 ( creates a port. Ports are) widthshow 180 570.666504 M 2.151413 0 32 (created e) widthshow 217.811508 570.666504 M 2.151413 0 32 (xplicitly by ) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 270.454346 570.666504 M 2.151413 0 32 (port_name_space ) widthshow 5 (Symbol) 10 1 mymakefontmetric 5 FF 346.20575 570.666504 M 2.151413 0 32 widthshow 3 FF 356.075745 570.666504 M 2.151413 0 32 ( ) widthshow 0 FF 360.727173 570.666504 M 2.151413 0 32 (mach_port_allocate) widthshow 3 FF 445.157166 570.666504 M 2.151413 0 32 ( and ) widthshow 4 FF 468.899994 570.666504 M 2.151413 0 32 (port_name_space) widthshow 3 FF 180 582.666443 M 1.251068 0 32 ([) widthshow 4 FF 183.330002 582.666443 M 1.251068 0 32 (port_name) widthshow 3 FF 226.660004 582.666443 M 1.251068 0 32 (]) widthshow 5 FF 229.990005 582.666443 M 1.251068 0 32 widthshow 0 FF 243.611069 582.666443 M 1.251068 0 32 (mach_port_allocate_name) widthshow 3 FF 356.371094 582.666443 M 1.251068 0 32 (. A port cannot be e) widthshow 441.346497 582.666443 M 1.251068 0 32 (xplicitly destro) widthshow 502.777649 582.666443 M 1.251068 0 32 (yed. It is) widthshow (destro) 180.0 594.666 T (yed only when the recei) 204.34 594.666 T (v) 299.62 594.666 T (e right is destro) 304.47 594.666 T (yed.) 366.31 594.666 T 180 618.666321 M 0.619278 0 32 (The e) widthshow 202.959366 618.666321 M 0.619278 0 32 (xistence of ports is of ob) widthshow 304.505859 618.666321 M 0.619278 0 32 (vious importance to all in) widthshow 408.803162 618.666321 M 0.619278 0 32 (v) widthshow 413.603271 618.666321 M 0.619278 0 32 (olv) widthshow 426.233368 618.666321 M 0.619278 0 32 (ed. As such, man) widthshow 496.54129 618.666321 M 0.619278 0 32 (y tasks us-) widthshow 180 630.66626 M 0.27179 0 32 (ing a port may well wish to be noti\336ed, through a message, when the) widthshow 458.633362 630.66626 M 0.27179 0 32 (y die. Such noti\336ca-) widthshow 180 642.666199 M 3.336334 0 32 (tions are requested with options to ) widthshow 0 FF 340.007996 642.666199 M 3.336334 0 32 (mach_msg) widthshow 3 FF 385.558014 642.666199 M 3.336334 0 32 (, as well as with ) widthshow 4 FF 468.899689 642.666199 M 3.336334 0 32 (port_name_space) widthshow 3 FF 180 654.666138 M 0.646164 0 32 ([) widthshow 4 FF 183.330002 654.666138 M 0.646164 0 32 (port_name) widthshow 3 FF 226.660004 654.666138 M 0.646164 0 32 (]) widthshow 5 FF 229.990005 654.666138 M 0.646164 0 32 widthshow 0 FF 239.860001 654.666138 M 0.646164 0 32 ( mach_port_r) widthshow 298.92627 654.666138 M 0.646164 0 32 (equest_noti\336cation) widthshow 3 FF 379.486267 654.666138 M 0.646164 0 32 (. The w) widthshow 410.948669 654.666138 M 0.646164 0 32 (ay in which this destruction be-) widthshow 180 666.666077 M 0.573273 0 32 (comes e) widthshow 212.813416 666.666077 M 0.573273 0 32 (vident depends on the vie) widthshow 317.06665 666.666077 M 0.573273 0 32 (wer \(and is dictated by the method in which the noti\336-) widthshow (cation w) 180.0 678.666 T (as requested\). The possibilities are:) 214.06 678.666 T 171 105.984009 378 434.015991 CR 3 SL 0.6667 G 414.92 448.45 M 413.29 454 L 434.28 454.13 L 416.54 442.9 L F 414.92 448.46 M 248 400.98 L S 429.81 168.98 M 429.81 174.77 L 450 168.98 L 429.81 163.2 L F 429.81 168.98 M 396 168.98 L S 1 G 186 510.984009 348 27 NF 186 510.984009 348 13.031998 CR 0.25 SL 2 SC 0 G 546 517.5 M 258 517.5 L S 0 SC 249 517.5 M 186 517.5 L S 171 105.984009 378 434.015991 CR 6 (Helvetica-Bold) 9 1 mymakefontmetric 6 FF (FIGURE 3) 186.0 530.016 T 2 FF (P) 258.0 530.016 T (ort Structur) 263.319 530.016 T (es) 309.894 530.016 T 310.877441 254.636459 84.364014 1 NF 7 (Times-Roman) 14 1 mymakefontmetric 7 FF (message queue) 310.877 253.237 T 3 FF (limit) 420.091 251.874 T (messages...) 463.877 251.874 T 1 SL 17 302 231.984009 216 36 RS 410 267.98 M 410 231.98 L S 455 267.98 M 455 231.98 L S 448.628387 361.552124 47.432007 1 NF 7 FF (message) 448.628 360.153 T 3 FF (destination port) 451.034 377.884 T (reply port) 451.034 396.545 T (operation...) 451.034 415.206 T (pure typed data) 451.034 433.867 T (port rights) 451.034 452.528 T (out-of-line data) 451.034 471.189 T 0 360 108 180 482 411.984009 AS 372.789551 337.154602 47.432007 1 NF 7 FF (message) 372.79 335.755 T 0 360 81 36 396.5 330.984009 AS 273.789551 310.154602 47.432007 1 NF (message) 273.79 308.755 T 0 360 81 36 297.5 303.984009 AS 344.75 290.72 M 334.14 296.31 L 346.11 297.2 L S 334.15 296.32 M 472 267.98 L S 431.57 308.12 M 425.13 318.25 L 435.96 313.08 L S 425.14 318.26 M 482 267.98 L S 486.14 309.98 M 486.49 321.98 L 492.55 311.62 L S 486.5 321.98 M 500 267.98 L S 522.5 384.89 M 441.5 384.89 L S 522.5 403.55 M 441.5 403.55 L S 522.5 422.21 M 441.5 422.21 L S 522.5 366.23 M 441.5 366.23 L S 522.5 440.87 M 441.5 440.87 L S 522.5 459.53 M 441.5 459.53 L S 185.6 200.07 M 189.36 199.9 L 185 186.98 L 181.85 200.25 L F 180 86 495.692383 375.43457 432.846191 186.984619 AS 3 SL 472 186.984009 64 31.983994 N 7 FF (port) 492.726 207.747 T 184 330.984009 64 31.983994 N (port) 204.726 351.747 T 184 384.984009 64 31.983994 N (port) 204.726 405.747 T 201.642822 454.154602 119.74202 1 NF 7 FF (memory cache object) 201.643 452.755 T 1 SL 185 429.984009 153 36 N 282.642822 499.154602 119.74202 1 NF (memory cache object) 282.643 497.755 T 266 474.984009 153 36 N 258.17 352.42 M 259.73 349.5 L 248 346.97 L 256.6 355.33 L F 258.17 352.42 M 431.63 444.44 L S 430.3 488.97 M 419 492.98 L 430.71 495.57 L S 419 492.98 M 455.84 490.71 L S 349.99 447.75 M 337.99 447.97 L 348.28 454.14 L S 338 447.98 M 443.82 475.62 L S 0.5 SL 384.23 112.8 M 384.23 116.11 L 395.77 112.8 L 384.23 109.49 L F 384.23 112.8 M 350.77 112.8 L S 3 SL 0.6667 G 375.58 139.8 M 375.58 145.59 L 395.77 139.8 L 375.58 134.01 L F 375.58 139.8 M 350.77 139.8 L S 0 G 3 FF (send right) 413.768 112.8 T (recei) 413.768 139.8 T (v) 432.948 139.8 T (e right) 437.798 139.8 T 180 150.984009 216 36 N 198 173.636459 22.554001 1 NF 7 FF (port) 198.0 172.237 T 3 FF (right count) 247.364 170.874 T (message queue) 317.773 170.874 T 1 SL 234 186.98 M 234 150.98 L S 306 186.98 M 306 150.98 L S 194.99 145.22 M 193.34 142.35 L 185 150.98 L 196.64 148.08 L F 248 114.98 M 194.99 145.22 L S 196.07 147.73 M 195.14 144.56 L 185 150.98 L 197 150.91 L F 248 132.98 M 196.07 147.73 L S 7 FF (send) 261.126 115.527 T (rights) 261.126 133.527 T (recei) 459.604 156.948 T (v) 486.456 156.948 T (e) 493.247 156.948 T (right) 459.604 174.948 T 350.31 198.52 M 347 186.98 L 343.69 198.52 L S 343.69 220.45 M 347 231.98 L 350.31 220.45 L S 347 231.98 M 347 186.98 L S 535.92 230.5 M 539.23 230.52 L 535.99 218.97 L 532.61 230.48 L F 535.93 230.5 M 534.95 394.32 L S grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 33 33 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (29 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Messages) 72.0 55.824 T 0.25 SL 3.86 setmiterlimit 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 7 1 mymakefontmetric 3 FF 72.0 114.667 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 85.535995 114.666626 M 2.195282 0 32 (dead name noti\336cation \321 A port has been destro) widthshow 299.078308 114.666626 M 2.195282 0 32 (yed. The message indicates the) widthshow 85.535995 126.666565 M 0.099564 0 32 (task\325) widthshow 104.4263 126.666565 M 0.099564 0 32 (s name for the no) widthshow 174.0047 126.666565 M 0.099564 0 32 (w dead port. \(This is discussed under port name spaces.\) A noti-) widthshow 85.535995 138.666534 M 0.720367 0 32 widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 262.938965 138.666534 M 0.720367 0 32 (port_name_space ) widthshow 4 FF 337.259338 138.666534 M 0.720367 0 32 ([) widthshow 5 FF 340.589325 138.666534 M 0.720367 0 32 (port_name) widthshow 4 FF 383.919312 138.666534 M 0.720367 0 32 (]) widthshow 6 (Symbol) 10 1 mymakefontmetric 6 FF 387.249329 138.666534 M 0.720367 0 32 widthshow 1 FF 397.119324 138.666534 M 0.720367 0 32 ( mach_-) widthshow (port_r) 85.536 150.667 T (equest_noti\336cation) 113.126 150.667 T 4 FF ( or with the MA) 193.686 150.667 T (CH_RCV_NO) 257.726 150.667 T (TIFY option to ) 316.217 150.667 T 1 FF (mach_msg) 379.277 150.667 T 4 FF (.) 424.827 150.667 T 3 FF 72.0 165.667 T 4 FF 85.535995 165.666504 M 0.309525 0 32 (port destro) widthshow 128.795578 165.666504 M 0.309525 0 32 (yed noti\336cation \321 A port w) widthshow 243.293259 165.666504 M 0.309525 0 32 (as to be destro) widthshow 301.611877 165.666504 M 0.309525 0 32 (yed. The message carries the re-) widthshow 4 FF 85.535995 177.666458 M 2.192535 0 32 (cei) widthshow 96.946136 177.666458 M 2.192535 0 32 (v) widthshow 101.796219 177.666458 M 2.192535 0 32 (e right, thereby sa) widthshow 179.823944 177.666458 M 2.192535 0 32 (ving the port. A noti\336cation of this form can be requested) widthshow 85.535995 189.666397 M 2.444641 0 32 (\() widthshow 5 FF 88.865997 189.666397 M 2.444641 0 32 (port_name_space ) widthshow 4 FF 164.910645 189.666397 M 2.444641 0 32 ([) widthshow 5 FF 168.240646 189.666397 M 2.444641 0 32 (port_name) widthshow 4 FF 211.570648 189.666397 M 2.444641 0 32 (]) widthshow 6 FF 214.90065 189.666397 M 2.444641 0 32 widthshow 1 FF 224.770645 189.666397 M 2.444641 0 32 ( mach_port_r) widthshow 285.635376 189.666397 M 2.444641 0 32 (equest_noti\336cation) widthshow 4 FF 366.195374 189.666397 M 2.444641 0 32 (\), gi) widthshow 384.500183 189.666397 M 2.444641 0 32 (v) widthshow 389.35025 189.666397 M 2.444641 0 32 (en the re-) widthshow 85.535995 201.666336 M 0.028183 0 32 (cei) widthshow 96.946136 201.666336 M 0.028183 0 32 (v) widthshow 101.796219 201.666336 M 0.028183 0 32 (e right. The mo) widthshow 163.390854 201.666336 M 0.028183 0 32 (v) widthshow 168.240936 201.666336 M 0.028183 0 32 (ement \(to another task\) of the recei) widthshow 308.120178 201.666336 M 0.028183 0 32 (v) widthshow 312.970276 201.666336 M 0.028183 0 32 (e right does not af) widthshow 385.043152 201.666336 M 0.028183 0 32 (fect an) widthshow 411.85144 201.666336 M 0.028183 0 32 (y e) widthshow 423.669678 201.666336 M 0.028183 0 32 (x-) widthshow 85.535995 213.666275 M 1.863022 0 32 (isting port destro) widthshow 156.942093 213.666275 M 1.863022 0 32 (yed noti\336cation requests. \(This feature is currently planned to be) widthshow (deleted from the k) 85.536 225.666 T (ernel interf) 158.476 225.666 T (ace.\)) 202.526 225.666 T 72 267.999451 360 3.024002 CR 432 269.51 M 72 269.51 L S 0 0 612 792 CR 7 (Times-Bold) 14 1 mymakefontmetric 7 FF (Messages) 72.0 263.333 T 4 FF 72 287.690063 M 0.617477 0 32 (A message is a typed collection of data passed between tw) widthshow 311.914856 287.690063 M 0.617477 0 32 (o entities. A message is not a) widthshow 72 299.690002 M 1.305725 0 32 (manipulable system object in its o) widthshow 214.668762 299.690002 M 1.305725 0 32 (wn right. Ho) widthshow 267.860352 299.690002 M 1.305725 0 32 (we) widthshow 279.270508 299.690002 M 1.305725 0 32 (v) widthshow 284.120575 299.690002 M 1.305725 0 32 (er) widthshow 291.490784 299.690002 M 1.305725 0 32 (, since messages are queued, the) widthshow 426.999512 299.690002 M 1.305725 0 32 (y) widthshow 72 311.689941 M 1.255295 0 32 (are signi\336cant because the) widthshow 180.865982 311.689941 M 1.255295 0 32 (y can hold state between the time a message is sent and the) widthshow (time when it is recei) 72.0 323.69 T (v) 152.85 323.69 T (ed.) 157.7 323.69 T 72 347.689819 M 0.376205 0 32 (Besides pure data, a message can also contain port rights. This is v) widthshow 342.994568 347.689819 M 0.376205 0 32 (ery signi\336cant. It is in) widthshow 72 359.689758 M 0.492477 0 32 (this w) widthshow 96.562531 359.689758 M 0.492477 0 32 (ay \(in general\) that a task obtains ne) widthshow 244.450027 359.689758 M 0.492477 0 32 (w rights, by recei) widthshow 315.107605 359.689758 M 0.492477 0 32 (ving them in a message. The) widthshow 72 371.689697 M 0.768661 0 32 (w) widthshow 79.120056 371.689697 M 0.768661 0 32 (ays in which this is possible are too numerous to discuss here; refer to the description) widthshow (of ) 72.0 383.69 T 1 FF (mach_msg) 82.83 383.69 T 4 FF ( in the ) 128.38 383.69 T 5 FF (K) 155.88 383.69 T (ernel Interface) 162.2 383.69 T 4 FF ( document.) 221.35 383.69 T 72 407.689575 M 0.687439 0 32 (A message consists of a \336x) widthshow 183.887283 407.689575 M 0.687439 0 32 (ed sized header \() widthshow 1 FF 253.419617 407.689575 M 0.687439 0 32 (mach_msg_header_t) widthshow 4 FF 341.739624 407.689575 M 0.687439 0 32 (\) follo) widthshow 366.897217 407.689575 M 0.687439 0 32 (wed by the data) widthshow 72 419.689514 M 0.967285 0 32 (items contained in the message. The header speci\336es a port name for the port to which) widthshow 72 431.689453 M 0.091354 0 32 (the message is sent, a port name for the port to which a reply is to be sent \(if a reply is re-) widthshow (quested\), the message size and operation code \336elds.) 72.0 443.689 T 72 467.689331 M 0.651627 0 32 (The data items follo) widthshow 153.975021 467.689331 M 0.651627 0 32 (w the header) widthshow 205.818588 467.689331 M 0.651627 0 32 (. Each consists of a data descriptor \() widthshow 1 FF 354.789978 467.689331 M 0.651627 0 32 (mach_msg_type_t) widthshow 4 FF 72 479.68927 M 0.633575 0 32 (or ) widthshow 1 FF 83.463577 479.68927 M 0.633575 0 32 (mach_msg_type_long_t) widthshow 4 FF 184.01358 479.68927 M 0.633575 0 32 (\) follo) widthshow 209.117294 479.68927 M 0.633575 0 32 (wed by the data. The type descriptor speci\336es the type) widthshow (of the data, as well as a count of the number of data items of this type.) 72.0 491.689 T 72 515.689148 M 1.039963 0 32 (A message can contain references to \322out-of-line\323 memory) widthshow 314.390137 515.689148 M 1.039963 0 32 (, as indicated by its data de-) widthshow 72 527.689087 M 0.321838 0 32 (scriptors. Lik) widthshow 125.551895 527.689087 M 0.321838 0 32 (e the other parts of the message, it is virtually copied from the sender to the) widthshow 72 539.689026 M 2.910995 0 32 (recei) widthshow 91.180145 539.689026 M 2.910995 0 32 (v) widthshow 96.030228 539.689026 M 2.910995 0 32 (er) widthshow 103.250534 539.689026 M 2.910995 0 32 (. The k) widthshow 137.022583 539.689026 M 2.910995 0 32 (ernel uses signi\336cant cop) widthshow 246.475632 539.689026 M 2.910995 0 32 (y-on-write virtual memory optimizations to) widthshow 72 551.688965 M 1.09993 0 32 (mak) widthshow 89.120056 551.688965 M 1.09993 0 32 (e the passing of lar) widthshow 168.879883 551.688965 M 1.09993 0 32 (ge data ef) widthshow 209.69989 551.688965 M 1.09993 0 32 widthshow 246.2099 551.688965 M 1.09993 0 32 (or our) widthshow 271.269958 551.688965 M 1.09993 0 32 (-of-line data, the data descriptor is fol-) widthshow 72 563.688904 M 0.427628 0 32 (lo) widthshow 79.530136 563.688904 M 0.427628 0 32 (wed by the virtual address of the data, instead of the data itself. When a message is re-) widthshow 72 575.688843 M 1.99173 0 32 (cei) widthshow 83.410141 575.688843 M 1.99173 0 32 (v) widthshow 88.260223 575.688843 M 1.99173 0 32 (ed that contains out-of-line memory) widthshow 239.44751 575.688843 M 1.99173 0 32 (, this memory will appear as ne) widthshow 376.40802 575.688843 M 1.99173 0 32 (wly allocated) widthshow 72 587.688782 M 1.115341 0 32 (memory \(as if by ) widthshow 1 FF 147.561371 587.688782 M 1.115341 0 32 (vm_map) widthshow 4 FF 184.781372 587.688782 M 1.115341 0 32 (\), using the same memory manager as the sender\325) widthshow 391.164429 587.688782 M 1.115341 0 32 (s memory) widthshow (used.) 72.0 599.689 T 72 623.68866 M 0.9991 0 32 (Each type descriptor includes an optional ) widthshow 5 FF 245.744614 623.68866 M 0.9991 0 32 (deallocate) widthshow 4 FF 287.404602 623.68866 M 0.9991 0 32 ( \337ag, which is meaningful only for) widthshow 72 635.688599 M 0.03067 0 32 (port rights and out-of-line memory) widthshow 210.903046 635.688599 M 0.03067 0 32 (. \(The use of the appropriate IPC port types that specif-) widthshow 72 647.688538 M 0.591736 0 32 (ic the disposition of ports is preferred to the use of the deallocate \337ag for port rights.\) If) widthshow 72 659.688477 M 0.342133 0 32 (set, the act of queueing the message will de-allocate the port rights and/or memory range) widthshow (from the sending task.) 72.0 671.688 T 52 143.999863 2 24.999969 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 34 34 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (30 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (P) 180.0 55.824 T (orts, Rights and Messages) 185.319 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 180 119.983932 360 3.024002 CR 0.25 SL 2 SC 0 G 540 121.5 M 180 121.5 L S 0 0 612 792 CR 3 (Times-Bold) 14 1 mymakefontmetric 3 FF (Message Queues) 180.0 115.317 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 180 139.674561 M 1.530685 0 32 (A port basically consists of a queue of messages. This queue is manipulated only via) widthshow (message operations \() 180.0 151.674 T 0 FF (mach_msg) 263.87 151.674 T 4 FF (\) that transmit messages.) 309.42 151.674 T 180 175.674438 M 0.020599 0 32 (The only controllable state for a message queue is its size. This can be set with ) widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 497.779602 175.674438 M 0.020599 0 32 (port_nam-) widthshow 180 187.674377 M 0.266953 0 32 (e_space ) widthshow 4 FF 214.976959 187.674377 M 0.266953 0 32 ([) widthshow 5 FF 218.306961 187.674377 M 0.266953 0 32 (port_name) widthshow 4 FF 261.636963 187.674377 M 0.266953 0 32 (]) widthshow 5 FF 264.96698 187.674377 M 0.266953 0 32 ( ) widthshow 6 (Symbol) 10 1 mymakefontmetric 6 FF 267.733917 187.674377 M 0.266953 0 32 widthshow 4 FF 277.603912 187.674377 M 0.266953 0 32 ( ) widthshow 0 FF 280.37085 187.674377 M 0.266953 0 32 (mach_port_set_qlimit) widthshow 4 FF 374.250854 187.674377 M 0.266953 0 32 ( gi) widthshow 384.547974 187.674377 M 0.266953 0 32 (v) widthshow 389.398041 187.674377 M 0.266953 0 32 (en the recei) widthshow 435.772095 187.674377 M 0.266953 0 32 (v) widthshow 440.622192 187.674377 M 0.266953 0 32 (e right for the associated) widthshow 180 199.674316 M 1.227295 0 32 (port. If a message queue is full, no more messages can be queued \(callers will block\).) widthshow 180 211.674255 M 1.063004 0 32 (Ho) widthshow 191.970139 211.674255 M 1.063004 0 32 (we) widthshow 203.38028 211.674255 M 1.063004 0 32 (v) widthshow 208.230362 211.674255 M 1.063004 0 32 (er) widthshow 215.600586 211.674255 M 1.063004 0 32 (, ) widthshow 0 FF 221.663589 211.674255 M 1.063004 0 32 (mach_msg) widthshow 4 FF 267.213593 211.674255 M 1.063004 0 32 ( pro) widthshow 283.956665 211.674255 M 1.063004 0 32 (vides an option allo) widthshow 365.505829 211.674255 M 1.063004 0 32 (wing one message to be left w) widthshow 492.873901 211.674255 M 1.063004 0 32 (aiting to be) widthshow 180 223.674194 M 0.412323 0 32 (queued. In this case, when the queue is no longer full, the message is then queued, and a) widthshow (noti\336cation is sent.) 180.0 235.674 T 180 259.674072 M 1.56929 0 32 (Messages sent to a port are deli) widthshow 314.695892 259.674072 M 1.56929 0 32 (v) widthshow 319.545959 259.674072 M 1.56929 0 32 (ered reliably \(messages may not be lost\) and are re-) widthshow (cei) 180.0 271.674 T (v) 191.41 271.674 T (ed in the order in which the) 196.26 271.674 T (y were sent by an) 306.09 271.674 T (y gi) 375.92 271.674 T (v) 390.951 271.674 T (en thread.) 395.801 271.674 T 180 314.007263 360 3.024002 CR 540 315.52 M 180 315.52 L S 0 0 612 792 CR 3 FF (P) 180.0 309.341 T (ort Rights) 188.274 309.341 T 4 FF 180 333.697876 M 0.943863 0 32 (A port can only be accessed via a port ) widthshow 5 FF 343.174805 333.697876 M 0.943863 0 32 (right) widthshow 4 FF 362.624786 333.697876 M 0.943863 0 32 (. A port right is an entity that indicates the) widthshow 180 345.697815 M 1.08638 0 32 (right to access a speci\336c port in a speci\336c w) widthshow 365.477478 345.697815 M 1.08638 0 32 (ay) widthshow 374.267853 345.697815 M 1.08638 0 32 (. In this conte) widthshow 431.817078 345.697815 M 1.08638 0 32 (xt, their are three types of) widthshow (port rights:) 180.0 357.698 T 7 (Times-Roman) 7 1 mymakefontmetric 7 FF 180.0 375.698 T 4 FF (recei) 193.536 375.698 T (v) 212.716 375.698 T (e right \321 Allo) 217.566 375.698 T (ws the holder to recei) 275.926 375.698 T (v) 361.767 375.698 T (e messages from the associated port.) 366.617 375.698 T 7 FF 180.0 390.698 T 4 FF (send right \321 Allo) 193.536 390.698 T (ws the holder to send messages to the associated port.) 265.786 390.698 T 7 FF 180.0 405.698 T 4 FF 193.535995 405.697571 M 0.542404 0 32 (send-once right \321 Allo) widthshow 289.623352 405.697571 M 0.542404 0 32 (ws the holder to send a single message to the associated port.) widthshow (The right self-destructs after the message is sent.) 193.536 417.698 T 180 441.697449 M 0.931503 0 32 (Port rights are a secure, location independent w) widthshow 376.380615 441.697449 M 0.931503 0 32 (ay of identifying ports. These rights are) widthshow 180 453.697388 M 0.711472 0 32 (k) widthshow 184.900055 453.697388 M 0.711472 0 32 (ernel protected entities; clients manipulate port rights only via port names the) widthshow 502.266357 453.697388 M 0.711472 0 32 (y ha) widthshow 519.717896 453.697388 M 0.711472 0 32 (v) widthshow 524.567993 453.697388 M 0.711472 0 32 (e to) widthshow (these rights.) 180.0 465.697 T 0 FF 180 489.697266 M 1.220703 0 32 (mach_msg) widthshow 4 FF 225.550003 489.697266 M 1.220703 0 32 ( is one of the principal w) widthshow 332.204285 489.697266 M 1.220703 0 32 (ays that rights are manipulated. Port rights can be) widthshow 180 501.697205 M 1.214554 0 32 (mo) widthshow 192.630081 501.697205 M 1.214554 0 32 (v) widthshow 197.480164 501.697205 M 1.214554 0 32 (ed between tasks \(deleted from the sender and added to the recei) widthshow 468.570435 501.697205 M 1.214554 0 32 (v) widthshow 473.420532 501.697205 M 1.214554 0 32 (er\) in messages.) widthshow 180 513.697144 M 0.249939 0 32 (Also, option \337ags in a message will cause ) widthshow 0 FF 351.709534 513.697144 M 0.249939 0 32 (mach_msg) widthshow 4 FF 397.259521 513.697144 M 0.249939 0 32 ( to mak) widthshow 427.659454 513.697144 M 0.249939 0 32 (e a cop) widthshow 456.379395 513.697144 M 0.249939 0 32 (y of an e) widthshow 491.689301 513.697144 M 0.249939 0 32 (xisting send) widthshow 180 525.697083 M 0.698196 0 32 (right, or to generate a send or a send-once right from a recei) widthshow 427.778534 525.697083 M 0.698196 0 32 (v) widthshow 432.628601 525.697083 M 0.698196 0 32 (e right. Rights can also be) widthshow 180 537.697021 M 2.651367 0 32 (forcefully copied or mo) widthshow 282.504211 537.697021 M 2.651367 0 32 (v) widthshow 287.354279 537.697021 M 2.651367 0 32 (ed by ) widthshow 5 FF 317.097015 537.697021 M 2.651367 0 32 (port_name_space ) widthshow 4 FF 393.348389 537.697021 M 2.651367 0 32 ([) widthshow 5 FF 396.678406 537.697021 M 2.651367 0 32 (port_name) widthshow 4 FF 440.008392 537.697021 M 2.651367 0 32 (]) widthshow 6 FF 443.338379 537.697021 M 2.651367 0 32 widthshow 0 FF 458.359741 537.697021 M 2.651367 0 32 (mach_port_extrac-) widthshow 180 549.69696 M 2.299957 0 32 (t_right ) widthshow 4 FF 214.23996 549.69696 M 2.299957 0 32 (\(the equi) widthshow 251.560059 549.69696 M 2.299957 0 32 (v) widthshow 256.310181 549.69696 M 2.299957 0 32 (alent of the tar) widthshow 321.07019 549.69696 M 2.299957 0 32 (get sending the right in a message\) and ) widthshow 5 FF 497.779846 549.69696 M 2.299957 0 32 (port_nam-) widthshow 180 561.696899 M 1.113663 0 32 (e_space ) widthshow 4 FF 215.823669 561.696899 M 1.113663 0 32 ([) widthshow 5 FF 219.153671 561.696899 M 1.113663 0 32 (port_name) widthshow 4 FF 262.483673 561.696899 M 1.113663 0 32 (]) widthshow 6 FF 265.81366 561.696899 M 1.113663 0 32 widthshow 0 FF 279.297333 561.696899 M 1.113663 0 32 (mach_port_insert_right) widthshow 4 FF 381.507324 561.696899 M 1.113663 0 32 ( \(the equi) widthshow 421.254822 561.696899 M 1.113663 0 32 (v) widthshow 426.004944 561.696899 M 1.113663 0 32 (alent of the tar) widthshow 487.206055 561.696899 M 1.113663 0 32 (get recei) widthshow 522.219849 561.696899 M 1.113663 0 32 (ving) widthshow (the right in a message\).) 180.0 573.697 T 180 597.696777 M 0.2621 0 32 (Other than message operations, port rights can be manipulated only as members of a port) widthshow (name space.) 180.0 609.697 T 4 FF 180 633.696716 M 0.591843 0 32 (FIGURE 4 sho) widthshow 240.933823 633.696716 M 0.591843 0 32 (ws a series of port rights, some contained in a port name space and some) widthshow 4 FF (in transit in a message. Also sho) 180.0 645.697 T (wn in the port name space is a port set.) 308.91 645.697 T 180 669.696655 M 0.093796 0 32 (Port rights are created implicitly when an) widthshow 345.942871 669.696655 M 0.093796 0 32 (y other system entity is created. Also, ) widthshow 0 FF 499.639465 669.696655 M 0.093796 0 32 (mach_r) widthshow 532.229553 669.696655 M 0.093796 0 32 (e-) widthshow 180 681.696533 M 1.208298 0 32 (ply_port) widthshow 4 FF 216.669998 681.696533 M 1.208298 0 32 ( creates a port right. Port rights are created e) widthshow 404.564789 681.696533 M 1.208298 0 32 (xplicitly by ) widthshow 5 FF 455.321381 681.696533 M 1.208298 0 32 (port_name_space ) widthshow 6 FF 530.1297 681.696533 M 1.208298 0 32 widthshow 0 FF 180 693.696533 M 1.227493 0 32 (mach_port_allocate) widthshow 4 FF 264.429993 693.696533 M 1.227493 0 32 ( and ) widthshow 5 FF 286.325012 693.696533 M 1.227493 0 32 (port_name_space ) widthshow 4 FF 361.152496 693.696533 M 1.227493 0 32 ([) widthshow 5 FF 364.482483 693.696533 M 1.227493 0 32 (port_name) widthshow 4 FF 407.8125 693.696533 M 1.227493 0 32 (]) widthshow 6 FF 411.142517 693.696533 M 1.227493 0 32 widthshow 0 FF 424.73999 693.696533 M 1.227493 0 32 (mach_port_allocate_name) widthshow 4 FF 537.5 693.696533 M 1.227493 0 32 (.) widthshow grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 35 35 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (31 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (P) 72.0 55.824 T (ort Rights) 77.319 55.824 T 0.25 SL 3.86 setmiterlimit 0 SC 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 72 556.674622 M 2.117462 0 32 (A port right is destro) widthshow 163.699905 556.674622 M 2.117462 0 32 (yed by ) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 197.374832 556.674622 M 2.117462 0 32 (port_name_space ) widthshow 3 FF 273.092285 556.674622 M 2.117462 0 32 ([) widthshow 4 FF 276.422302 556.674622 M 2.117462 0 32 (port_name) widthshow 3 FF 319.752319 556.674622 M 2.117462 0 32 (]) widthshow 5 (Symbol) 10 1 mymakefontmetric 5 FF 323.082306 556.674622 M 2.117462 0 32 widthshow 1 FF 337.569763 556.674622 M 2.117462 0 32 (mach_port_deallocate) widthshow 3 FF 72 568.674561 M 0.361023 0 32 (and ) widthshow 4 FF 89.301025 568.674561 M 0.361023 0 32 (port_name_space ) widthshow 3 FF 163.262054 568.674561 M 0.361023 0 32 ([) widthshow 4 FF 166.592056 568.674561 M 0.361023 0 32 (port_name) widthshow 3 FF 209.922058 568.674561 M 0.361023 0 32 (]) widthshow 5 FF 213.25206 568.674561 M 0.361023 0 32 widthshow 1 FF 225.983078 568.674561 M 0.361023 0 32 (mach_port_destr) widthshow 299.123169 568.674561 M 0.361023 0 32 (oy) widthshow 3 FF 308.473541 568.674561 M 0.361023 0 32 (.) widthshow 1 FF 310.973541 568.674561 M 0.361023 0 32 ( ) widthshow 3 FF 313.834564 568.674561 M 0.361023 0 32 (Destruction) widthshow 1 FF 360.494568 568.674561 M 0.361023 0 32 ( ) widthshow 3 FF 363.355591 568.674561 M 0.361023 0 32 (can also be a by-) widthshow 72 580.6745 M 0.934982 0 32 (product of port name space manipulations, such as by ) widthshow 4 FF 297.604858 580.6745 M 0.934982 0 32 (port_name_space ) widthshow 3 FF 372.139832 580.6745 M 0.934982 0 32 ([) widthshow 4 FF 375.469849 580.6745 M 0.934982 0 32 (port_name) widthshow 3 FF 418.799866 580.6745 M 0.934982 0 32 (]) widthshow 5 FF 422.129852 580.6745 M 0.934982 0 32 widthshow 1 FF (mach_port_mod_r) 72.0 592.674 T (efs) 151.81 592.674 T 3 FF (.) 163.47 592.674 T 72 616.674377 M 1.314468 0 32 (Some status information can be obtained, gi) widthshow 255.456955 616.674377 M 1.314468 0 32 (v) widthshow 260.307037 616.674377 M 1.314468 0 32 (en a recei) widthshow 300.996124 616.674377 M 1.314468 0 32 (v) widthshow 305.846191 616.674377 M 1.314468 0 32 (e right, with ) widthshow 4 FF 360.899597 616.674377 M 1.314468 0 32 (port_name_space) widthshow 3 FF ([) 72.0 628.674 T 4 FF (port_name) 75.33 628.674 T 3 FF (]) 118.66 628.674 T 5 FF 121.99 628.674 T 1 FF (mach_port_get_r) 134.36 628.674 T (ecei) 208.05 628.674 T (v) 224.05 628.674 T (e_status) 228.95 628.674 T 3 FF (.) 263.39 628.674 T 72 652.674255 M 2.042465 0 32 (The system maintains a \(system-wide\) count of the number of send \(and send-once\)) widthshow 72 664.674194 M 0.770752 0 32 (rights for each port \(this includes rights in transit in messages, including the destination) widthshow 72 676.674133 M 0.584671 0 32 (and reply port rights\). The recei) widthshow 201.86351 676.674133 M 0.584671 0 32 (v) widthshow 206.713593 676.674133 M 0.584671 0 32 (er of a port may well be interested if there are no more) widthshow 72 688.674072 M 0.505249 0 32 (send rights for the port, indicating that the port may no longer ha) widthshow 337.003113 688.674072 M 0.505249 0 32 (v) widthshow 341.85321 688.674072 M 0.505249 0 32 (e v) widthshow 354.048584 688.674072 M 0.505249 0 32 (alue. A noti\336cation) widthshow 63 108 378 442.007996 CR 3 SL 0 SC 0.6667 G 191.13 498.05 M 190.72 492.27 L 171 499.49 L 191.54 503.82 L F 360 486 M 191.13 498.06 L S 261 380.19 M 266.79 380.19 L 261 360 L 255.21 380.19 L F 261 441 M 261 380.19 L S 180 380.19 M 185.79 380.19 L 180 360 L 174.21 380.19 L F 180 423 M 180 380.19 L S 1 G 78 522 348 27 NF 78 522 348 13.031998 CR 0.25 SL 2 SC 0 G 438 528.52 M 150 528.52 L S 0 SC 141 528.52 M 78 528.52 L S 63 108 378 442.007996 CR 6 (Helvetica-Bold) 9 1 mymakefontmetric 6 FF (FIGURE 4) 78.0 541.032 T 2 FF (P) 150.0 541.032 T (ort Right Structur) 155.319 541.032 T (es) 225.645 541.032 T 206.523926 196.3629 90.972015 1 NF 7 (Times-Roman) 14 1 mymakefontmetric 7 FF (port name space) 206.524 194.964 T 3 FF (send right count) 156.099 250.358 T (mak) 156.099 286.358 T (e-send count) 173.219 286.358 T 3 FF (sequence number) 156.099 304.358 T 3 FF (\(if send right\);) 156.099 268.343 T (port set ) 156.099 322.358 T (\(if recei) 156.099 340.358 T (v) 187.219 340.358 T (e right\)) 192.069 340.358 T (send right count) 233.373 250.358 T (mak) 233.373 286.358 T (e-send count) 250.493 286.358 T 3 FF (sequence number) 233.373 304.358 T 3 FF (\(if send right\);) 233.373 268.343 T (port set ) 233.373 322.358 T (\(if recei) 233.373 340.358 T (v) 264.494 340.358 T (e right\)) 269.344 340.358 T 4 FF (dead) 315.0 222.941 T (null) 351.0 222.826 T 3 FF (set members) 381.751 296.191 T (send right count) 78.824 249.831 T (mak) 78.824 285.831 T (e-send count) 95.944 285.831 T 3 FF (sequence number) 78.824 303.831 T 3 FF (\(if send right\);) 78.824 267.816 T (port set) 78.824 321.831 T (\(if recei) 78.824 339.831 T (v) 109.944 339.831 T (e right\)) 114.794 339.831 T 4 FF (port right) 99.514 222.29 T (port right) 177.366 222.816 T (port right) 254.64 222.816 T (port set) 389.554 222.836 T 1 SL 18 72 171 360 189 RS 432 234 M 72 234 L S 432 207 M 72 207 L S 151.44 360 M 151.44 207 L S 228.72 360 M 228.72 207 L S 306 360 M 306 207 L S 342 360 M 342 207 L S 378 360 M 378 207 L S 4 SL 306 147.93 M 299.38 147.93 L 306 171 L 312.62 147.93 L F 306 147.93 M 306 117 L S 3 FF (port name) 252.0 132.831 T (\(inde) 315.0 132.816 T (x\)) 335.4 132.816 T 1 SL 369 117 63 27 N 389.22583 136.670609 22.554001 1 NF 7 FF (task) 389.226 135.271 T 396.83 152.81 M 404.98 144 L 393.41 147.15 L S 368.14 162.19 M 359.99 171 L 371.57 167.85 L S 360 171 M 405 144 L S 3 SL 81 387 72 36 N 7 FF (port) 105.726 409.771 T 252 441 72 36 N (port) 276.726 463.771 T 162 423 72 36 N (port) 186.726 445.771 T 360 468 72 36 N (port) 384.726 490.771 T (message) 106.79 504.271 T 1 SL 0 360 81 45 130.5 499.5 AS 290.71 371.7 M 294.07 370.92 L 287.99 359.99 L 287.35 372.48 L F 90 161 98 72 337 360 AS 393.82 371.63 M 397.15 372.25 L 395.99 359.99 L 390.48 371.01 L F 105 165 126 90 333 360 AS 218.47 372.14 M 221.95 371.43 L 216 360 L 214.98 372.85 L F 90 167 190 107.999542 311 360.000244 AS 414.51 372.02 M 417.96 372.59 L 416.53 360 L 411.07 371.44 L F 101 169 217.531494 125.996384 307.765747 360.001801 AS 117 375.46 M 113.69 375.46 L 117 387 L 120.31 375.46 L F 117 375.46 M 117 360 L S 153.8 458.1 M 156.13 460.45 L 161.99 449.98 L 151.47 455.75 L F 153.8 458.12 M 135 477 L S 0.5 SL 123.46 123.82 M 123.46 127.12 L 135 123.82 L 123.46 120.51 L F 123.46 123.82 M 90 123.82 L S 3 SL 0.6667 G 114.81 150.82 M 114.81 156.6 L 135 150.82 L 114.81 145.03 L F 114.81 150.82 M 90 150.82 L S 0 G 3 FF (send right) 153.0 123.816 T (recei) 153.0 150.816 T (v) 172.18 150.816 T (e right) 177.03 150.816 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 36 36 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 2 SC 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (32 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (P) 180.0 55.824 T (orts, Rights and Messages) 185.319 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 180 112.650635 M -0.022552 0 32 (of this form can be requested \() widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 302.054688 112.650635 M -0.022552 0 32 (port_name_space ) widthshow 3 FF 375.632141 112.650635 M -0.022552 0 32 ([) widthshow 4 FF 378.962158 112.650635 M -0.022552 0 32 (port_name) widthshow 3 FF 422.292175 112.650635 M -0.022552 0 32 (]) widthshow 5 (Symbol) 10 1 mymakefontmetric 5 FF 425.622162 112.650635 M -0.022552 0 32 widthshow 0 FF 435.492157 112.650635 M -0.022552 0 32 ( mach_port_r) widthshow 493.889709 112.650635 M -0.022552 0 32 (equest_no-) widthshow 180 124.650574 M 0.629913 0 32 (ti\336cation) widthshow 3 FF 217.779999 124.650574 M 0.629913 0 32 (\). This noti\336cation depends on the notion of a mak) widthshow 425.559265 124.650574 M 0.629913 0 32 (e-send count, discussed as a) widthshow 180 136.650513 M 1.014633 0 32 (part of port name spaces. The mo) widthshow 319.517883 136.650513 M 1.014633 0 32 (v) widthshow 324.367981 136.650513 M 1.014633 0 32 (ement \(to another task\) of the recei) widthshow 470.165955 136.650513 M 1.014633 0 32 (v) widthshow 475.016022 136.650513 M 1.014633 0 32 (e right does not) widthshow 180 148.650452 M 0.534927 0 32 (currently af) widthshow 226.655075 148.650452 M 0.534927 0 32 (fect an) widthshow 253.970093 148.650452 M 0.534927 0 32 (y e) widthshow 266.295105 148.650452 M 0.534927 0 32 (xisting no-more-senders noti\336cation requests. \(A planned change is) widthshow 180 160.650391 M 0.005417 0 32 (to cancel outstanding no-more-senders noti\336cation requests, and to send a send-once noti-) widthshow 180.0 172.65 T 180 196.650269 M 1.095306 0 32 (A send-once right allo) widthshow 272.186066 196.650269 M 1.095306 0 32 (ws a single message to be sent via it. These rights are generated) widthshow 180 208.650208 M 0.957291 0 32 (only from the recei) widthshow 258.992004 208.650208 M 0.957291 0 32 (v) widthshow 263.842102 208.650208 M 0.957291 0 32 (e right. A send-once right has the property that it guarantees that a) widthshow 180 220.650146 M 0.24559 0 32 (message will result from it. In the normal case, a send-once right is consumed by using it) widthshow 180 232.650085 M 0.39798 0 32 (as the destination port in a message; the right is \(silently\) destro) widthshow 439.537842 232.650085 M 0.39798 0 32 (yed when the message is) widthshow 180 244.650024 M 0.309326 0 32 (recei) widthshow 199.180145 244.650024 M 0.309326 0 32 (v) widthshow 204.030228 244.650024 M 0.309326 0 32 (ed. The send-once right can be mo) widthshow 343.756287 244.650024 M 0.309326 0 32 (v) widthshow 348.606384 244.650024 M 0.309326 0 32 (ed from task to task \(other than being used as a) widthshow 180 256.649963 M 0.873718 0 32 (destination right\) until such time as it is consumed. If the right is destro) widthshow 476.808411 256.649963 M 0.873718 0 32 (yed in an) widthshow 515.065918 256.649963 M 0.873718 0 32 (y w) widthshow 530.559692 256.649963 M 0.873718 0 32 (ay) widthshow 180 268.649902 M 0.884094 0 32 (other than by using it to send a message, a send-once noti\336cation is sent to the port in-) widthshow (stead.) 180.0 280.65 T 180 304.64978 M 0.684662 0 32 (Most of the w) widthshow 237.784042 304.64978 M 0.684662 0 32 (ays in which a send-once right can be destro) widthshow 420.341431 304.64978 M 0.684662 0 32 (yed \(other than by using it to) widthshow (send a message\) are f) 180.0 316.65 T (airly ob) 265.42 316.65 T (vious. There are se) 296.1 316.65 T (v) 371.38 316.65 T (eral obscure cases:) 376.23 316.65 T 6 (Times-Roman) 7 1 mymakefontmetric 6 FF 180.0 334.65 T 3 FF 193.535995 334.649658 M 1.015625 0 32 (The send-once right w) widthshow 286.182922 334.649658 M 1.015625 0 32 (as speci\336ed as the tar) widthshow 375.045532 334.649658 M 1.015625 0 32 (get for a no-senders noti\336cation and the) widthshow 193.535995 346.649597 M 1.130295 0 32 (port for which the no-senders noti\336cation w) widthshow 375.747833 346.649597 M 1.130295 0 32 (as requested is deleted. Since there will) widthshow 193.535995 358.649536 M 1.046631 0 32 (be no forth coming no-senders noti\336cation, a send-once noti\336cation is generated in-) widthshow (stead.) 193.536 370.649 T 6 FF 180.0 385.649 T 3 FF 193.535995 385.649414 M 1.453888 0 32 (The send-once right w) widthshow 287.497742 385.649414 M 1.453888 0 32 (as speci\336ed as the tar) widthshow 378.113403 385.649414 M 1.453888 0 32 (get for a message-accepted noti\336cation) widthshow 193.535995 397.649353 M 1.11557 0 32 (and the port for which the message w) widthshow 350.935059 397.649353 M 1.11557 0 32 (as w) widthshow 370.000671 397.649353 M 1.11557 0 32 (aiting to be accepted is deleted. No mes-) widthshow 193.535995 409.649292 M 0.619385 0 32 (sage-accepted noti\336cation is generated in this case; a send-once noti\336cation is gener-) widthshow (ated instead.) 193.536 421.649 T 6 FF 180.0 436.649 T 3 FF 193.535995 436.64917 M 0.165939 0 32 (In the process of performing a non-atomic message recei) widthshow 421.773682 436.64917 M 0.165939 0 32 (v) widthshow 426.623779 436.64917 M 0.165939 0 32 (e, the task gi) widthshow 477.421722 436.64917 M 0.165939 0 32 (v) widthshow 482.27179 436.64917 M 0.165939 0 32 (es a) widthshow 497.557831 436.64917 M 0.165939 0 32 (w) widthshow 504.677887 436.64917 M 0.165939 0 32 (ay its re-) widthshow 193.535995 448.649109 M 0.271561 0 32 (cei) widthshow 204.946136 448.649109 M 0.271561 0 32 (v) widthshow 209.796219 448.649109 M 0.271561 0 32 (e right after the message is de-queued from the port b) widthshow 426.151978 448.649109 M 0.271561 0 32 (ut prior to its being returned) widthshow 193.535995 460.649048 M 0.680237 0 32 (to the task. A send-once noti\336cation is sent to the destination port signifying the lost) widthshow (association between the message sent via the send-once right and the port.) 193.536 472.649 T 180 496.648926 M 1.136887 0 32 (The complete rules for manipulation of port rights are too complicated to be described) widthshow (here; refer to the ) 180.0 508.649 T 4 FF (K) 248.86 508.649 T (ernel Interface ) 255.18 508.649 T 3 FF (document.) 316.83 508.649 T 180 550.982117 360 3.024002 CR 0.25 SL 2 SC 540 552.49 M 180 552.49 L S 0 0 612 792 CR 7 (Times-Bold) 14 1 mymakefontmetric 7 FF (P) 180.0 546.315 T (ort Name Space) 188.274 546.315 T 3 FF 180 570.672729 M 0.975266 0 32 (Ports, themselv) widthshow 242.495346 570.672729 M 0.975266 0 32 (es, are not named. It is the port rights that are. A port right can only be) widthshow 180 582.672668 M 0.714951 0 32 (named by being contained within a port ) widthshow 4 FF 346.374664 582.672668 M 0.714951 0 32 (name space) widthshow 3 FF 394.019623 582.672668 M 0.714951 0 32 (. A port is speci\336ed by a port ) widthshow 4 FF 518.339233 582.672668 M 0.714951 0 32 (name) widthshow 3 FF 180 594.672607 M 0.959961 0 32 (which is an inde) widthshow 247.999969 594.672607 M 0.959961 0 32 (x into a port name space. Each task has associated with it a port name) widthshow (space.) 180.0 606.673 T (An entry in a port name space can ha) 180.0 630.672 T (v) 328.09 630.672 T (e four possible v) 332.94 630.672 T (alues:) 399.07 630.672 T 6 FF 180.0 648.672 T 3 FF (MA) 193.536 648.672 T (CH_POR) 209.246 648.672 T (T_NULL \321 No associated port right.) 246.987 648.672 T 6 FF 180.0 663.672 T 3 FF 193.535995 663.672363 M 2.199432 0 32 (MA) widthshow 209.246216 663.672363 M 2.199432 0 32 (CH_POR) widthshow 246.986542 663.672363 M 2.199432 0 32 (T_DEAD \321 A right w) widthshow 347.894348 663.672363 M 2.199432 0 32 (as associated with this name, b) widthshow 482.011597 663.672363 M 2.199432 0 32 (ut the port to) widthshow 193.535995 675.672302 M 0.524597 0 32 (which the right referred is no) widthshow 312.269135 675.672302 M 0.524597 0 32 (w dead. The port name is k) widthshow 423.906799 675.672302 M 0.524597 0 32 (ept in this state until e) widthshow 514.439819 675.672302 M 0.524597 0 32 (xplicit) widthshow grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 37 37 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (33 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (P) 72.0 55.824 T (ort Name Space) 77.319 55.824 T 0.25 SL 3.86 setmiterlimit 0 SC 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 85.535995 114.666626 M 0.183823 0 32 (action is tak) widthshow 134.133698 114.666626 M 0.183823 0 32 (en to a) widthshow 160.961456 114.666626 M 0.183823 0 32 (v) widthshow 165.761566 114.666626 M 0.183823 0 32 (oid reusing this name before the client task understands what hap-) widthshow (pened.) 85.536 126.667 T 4 (Times-Roman) 7 1 mymakefontmetric 4 FF 72.0 141.667 T 3 FF (a port right \321 A send-once, send or recei) 85.536 141.667 T (v) 251.076 141.667 T (e right for a port.) 255.926 141.667 T 4 FF 72.0 156.666 T 3 FF 85.535995 156.666443 M 0.917053 0 32 (a port set name \321 A name which acts lik) widthshow 258.939545 156.666443 M 0.917053 0 32 (e a recei) widthshow 293.833801 156.666443 M 0.917053 0 32 (v) widthshow 298.683899 156.666443 M 0.917053 0 32 (e right, b) widthshow 336.148102 156.666443 M 0.917053 0 32 (ut that allo) widthshow 380.512329 156.666443 M 0.917053 0 32 (ws recei) widthshow 414.219543 156.666443 M 0.917053 0 32 (ving) widthshow (from multiple ports. This is discussed in the ne) 85.536 168.666 T (xt section.) 272.886 168.666 T 72 192.666321 M 1.139984 0 32 (Each distinct right that a port name space contains does not necessarily ha) widthshow 381.539948 192.666321 M 1.139984 0 32 (v) widthshow 386.390015 192.666321 M 1.139984 0 32 (e a distinct) widthshow 72 204.66626 M 0.279266 0 32 (name in the port name space. Send-once rights al) widthshow 270.484192 204.66626 M 0.279266 0 32 (w) widthshow 277.604248 204.66626 M 0.279266 0 32 (ays consume a separate name for each) widthshow 72 216.666199 M 1.36264 0 32 (distinct right. Recei) widthshow 153.085419 216.666199 M 1.36264 0 32 (v) widthshow 157.935501 216.666199 M 1.36264 0 32 (e and send rights, though, to the same port coalesce. That is, if a) widthshow 72 228.666138 M 0.709946 0 32 (port name space holds three send rights for some port, it will ha) widthshow 335.00946 228.666138 M 0.709946 0 32 (v) widthshow 339.859558 228.666138 M 0.709946 0 32 (e a single name for all) widthshow 72 240.666077 M 0.636627 0 32 (three rights. A port name has an associated reference count for each type of right \(send-) widthshow 72 252.666016 M 0.791962 0 32 (once, send, recei) widthshow 139.974075 252.666016 M 0.791962 0 32 (v) widthshow 144.824158 252.666016 M 0.791962 0 32 (e, port set and dead name\) associated with the name. If the port name) widthshow 72 264.665955 M 0.510559 0 32 (space also holds the recei) widthshow 175.432388 264.665955 M 0.510559 0 32 (v) widthshow 180.282471 264.665955 M 0.510559 0 32 (e right, that recei) widthshow 249.324295 264.665955 M 0.510559 0 32 (v) widthshow 254.174377 264.665955 M 0.510559 0 32 (e right will ha) widthshow 311.336182 264.665955 M 0.510559 0 32 (v) widthshow 316.186249 264.665955 M 0.510559 0 32 (e the same name as the send) widthshow (right.) 72.0 276.666 T 72 300.665894 M 0.508652 0 32 (A name becomes dead when its associated port is destro) widthshow 301.157959 300.665894 M 0.508652 0 32 (yed. \(It follo) widthshow 352.195374 300.665894 M 0.508652 0 32 (ws that a task hold-) widthshow 72 312.665894 M 1.158707 0 32 (ing a dead name cannot be holding a recei) widthshow 249.309814 312.665894 M 1.158707 0 32 (v) widthshow 254.159897 312.665894 M 1.158707 0 32 (e right under that name as well.\) The dead) widthshow 72 324.665894 M 0.485687 0 32 (name only has a non-zero reference count for the number of send or send-once referenc-) widthshow 72 336.665863 M 0.769348 0 32 (es pre) widthshow 96.119492 336.665863 M 0.769348 0 32 (viously held by that name. A task can be noti\336ed \(a message sent to it\) when one) widthshow 72 348.665833 M 1.018707 0 32 (of its names becomes dead via ) widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 202.532257 348.665833 M 1.018707 0 32 (port_name_space ) widthshow 3 FF 277.15097 348.665833 M 1.018707 0 32 ([) widthshow 5 FF 280.480957 348.665833 M 1.018707 0 32 (port_name) widthshow 3 FF 323.810974 348.665833 M 1.018707 0 32 (]) widthshow 6 (Symbol) 10 1 mymakefontmetric 6 FF 327.140991 348.665833 M 1.018707 0 32 widthshow 1 FF 337.010986 348.665833 M 1.018707 0 32 ( mach_port_r) widthshow 396.449768 348.665833 M 1.018707 0 32 (equest_-) widthshow 72 360.665833 M 1.057892 0 32 (noti\336cation) widthshow 3 FF 120.339996 360.665833 M 1.057892 0 32 (. Recei) widthshow 148.91803 360.665833 M 1.057892 0 32 (ving this noti\336cation message increments the reference count for the) widthshow (dead name, to a) 72.0 372.666 T (v) 134.56 372.666 T (oid a race with an) 139.36 372.666 T (y threads manipulating the name.) 210.3 372.666 T 72 396.665802 M 0.595932 0 32 (Whene) widthshow 100.070145 396.665802 M 0.595932 0 32 (v) widthshow 104.920227 396.665802 M 0.595932 0 32 (er a task acquires a right \(by whate) widthshow 248.521912 396.665802 M 0.595932 0 32 (v) widthshow 253.371994 396.665802 M 0.595932 0 32 (er means\) it is assigned a port name subject) widthshow 72 408.665771 M 0.761368 0 32 (to the abo) widthshow 112.81282 408.665771 M 0.761368 0 32 (v) widthshow 117.662903 408.665771 M 0.761368 0 32 (e rules. Acquiring a right increments the name\325) widthshow 311.292786 408.665771 M 0.761368 0 32 (s reference count for the type) widthshow 72 420.665771 M 0.574524 0 32 (of that right. The reference count can be obtained with ) widthshow 5 FF 297.965271 420.665771 M 0.574524 0 32 (port_name_space ) widthshow 3 FF 372.139801 420.665771 M 0.574524 0 32 ([) widthshow 5 FF 375.469788 420.665771 M 0.574524 0 32 (port_name) widthshow 3 FF 418.799805 420.665771 M 0.574524 0 32 (]) widthshow 6 FF 422.129822 420.665771 M 0.574524 0 32 widthshow 1 FF (mach_port_get_r) 72.0 432.666 T (efs) 145.69 432.666 T 3 FF (.) 157.35 432.666 T 72 456.665741 M 2.60997 0 32 (Although a port name can be e) widthshow 210.259918 456.665741 M 2.60997 0 32 (xplicitly destro) widthshow 273.049927 456.665741 M 2.60997 0 32 (yed \() widthshow 5 FF 295.929932 456.665741 M 2.60997 0 32 (port_name_space ) widthshow 3 FF 372.139893 456.665741 M 2.60997 0 32 ([) widthshow 5 FF 375.46991 456.665741 M 2.60997 0 32 (port_name) widthshow 3 FF 418.799896 456.665741 M 2.60997 0 32 (]) widthshow 6 FF 422.129883 456.665741 M 2.60997 0 32 widthshow 1 FF 72 468.66571 M 0.786621 0 32 (mach_port_destr) widthshow 145.140106 468.66571 M 0.786621 0 32 (oy) widthshow 3 FF 155.140106 468.66571 M 0.786621 0 32 (\) thereby remo) widthshow 215.433441 468.66571 M 0.786621 0 32 (ving all references, port names are typically manipu-) widthshow 72 480.665649 M 1.442184 0 32 (lated by modifying the user reference count. ) widthshow 5 FF 261.4953 480.665649 M 1.442184 0 32 (port_name_space ) widthshow 3 FF 336.537506 480.665649 M 1.442184 0 32 ([) widthshow 5 FF 339.867493 480.665649 M 1.442184 0 32 (port_name) widthshow 3 FF 383.19751 480.665649 M 1.442184 0 32 (]) widthshow 6 FF 386.527527 480.665649 M 1.442184 0 32 widthshow 1 FF 400.339691 480.665649 M 1.442184 0 32 (mach_-) widthshow 72 492.665588 M 0.808258 0 32 (port_mod_r) widthshow 123.480103 492.665588 M 0.808258 0 32 (efs) widthshow 3 FF 135.140106 492.665588 M 0.808258 0 32 ( modi\336es the reference count for a speci\336ed right type associated with a) widthshow 72 504.665527 M 2.722855 0 32 (name. ) widthshow 5 FF 101.382858 504.665527 M 2.722855 0 32 (port_name_space ) widthshow 3 FF 177.705719 504.665527 M 2.722855 0 32 ([) widthshow 5 FF 181.035721 504.665527 M 2.722855 0 32 (port_name) widthshow 3 FF 224.365723 504.665527 M 2.722855 0 32 (]) widthshow 6 FF 227.695724 504.665527 M 2.722855 0 32 widthshow 1 FF 242.788574 504.665527 M 2.722855 0 32 (mach_port_deallocate) widthshow 3 FF 337.218567 504.665527 M 2.722855 0 32 ( is similar to ) widthshow 1 FF 400.339996 504.665527 M 2.722855 0 32 (mach_-) widthshow 72 516.665466 M 0.639954 0 32 (port_mod_r) widthshow 123.480103 516.665466 M 0.639954 0 32 (efs) widthshow 3 FF 135.140106 516.665466 M 0.639954 0 32 (, b) widthshow 145.58017 516.665466 M 0.639954 0 32 (ut it al) widthshow 172.320129 516.665466 M 0.639954 0 32 (w) widthshow 179.440186 516.665466 M 0.639954 0 32 (ays decrements the count by 1, and it will only decrement the) widthshow 72 528.665405 M 0.263321 0 32 (send \(or send-once\) reference count. This routine is useful for manipulating the reference) widthshow 72 540.665344 M 0.206223 0 32 (count for a port name that may ha) widthshow 208.493683 540.665344 M 0.206223 0 32 (v) widthshow 213.343765 540.665344 M 0.206223 0 32 (e become dead since the decision w) widthshow 357.221191 540.665344 M 0.206223 0 32 (as made to modify) widthshow 72 552.665283 M 0.977478 0 32 (the name. Options to ) widthshow 1 FF 161.739914 552.665283 M 0.977478 0 32 (mach_msg) widthshow 3 FF 207.289917 552.665283 M 0.977478 0 32 ( that actually mo) widthshow 277.012451 552.665283 M 0.977478 0 32 (v) widthshow 281.862518 552.665283 M 0.977478 0 32 (e a right \(and also ) widthshow 5 FF 360.899902 552.665283 M 0.977478 0 32 (port_name_space) widthshow 3 FF 72 564.665222 M 1.476593 0 32 ([) widthshow 5 FF 75.330002 564.665222 M 1.476593 0 32 (port_name) widthshow 3 FF 118.660004 564.665222 M 1.476593 0 32 (]) widthshow 6 FF 121.990005 564.665222 M 1.476593 0 32 widthshow 1 FF 135.836594 564.665222 M 1.476593 0 32 (mach_port_extract_right) widthshow 3 FF 243.586609 564.665222 M 1.476593 0 32 (\) can cause the name\325) widthshow 335.573303 564.665222 M 1.476593 0 32 (s reference count to be) widthshow (decremented. Port names are freed when all the reference counts go to zero.) 72.0 576.665 T 3 FF 72 600.665161 M 0.085831 0 32 (If a port name is freed and a dead-name noti\336cation is in ef) widthshow 309.390137 600.665161 M 0.085831 0 32 (fect for the name, a port-delet-) widthshow 72 612.665161 M 0.578491 0 32 (ed noti\336cation is generated. As such, a name with a dead-name noti\336cation in ef) widthshow 400.050537 612.665161 M 0.578491 0 32 (fect can) widthshow (be in only one of three states:) 72.0 624.665 T 4 FF 72.0 642.665 T 3 FF (naming a v) 85.536 642.665 T (alid right) 129.726 642.665 T 4 FF 72.0 657.665 T 3 FF 85.535995 657.6651 M 2.399216 0 32 (MA) widthshow 101.246216 657.6651 M 2.399216 0 32 (CH_POR) widthshow 138.986542 657.6651 M 2.399216 0 32 (T_DEAD, with a dead-name noti\336cation ha) widthshow 325.752747 657.6651 M 2.399216 0 32 (ving been sent when the) widthshow (name became dead) 85.536 669.665 T 4 FF 72.0 684.665 T 3 FF 85.535995 684.665039 M 2.028076 0 32 (MA) widthshow 101.246216 684.665039 M 2.028076 0 32 (CH_POR) widthshow 138.986542 684.665039 M 2.028076 0 32 (T_NULL, with a port-deleted noti\336cation ha) widthshow 327.237061 684.665039 M 2.028076 0 32 (ving been sent when the) widthshow (name became null) 85.536 696.665 T 52 593.998535 2 105.999878 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 38 38 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (34 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (P) 180.0 55.824 T (orts, Rights and Messages) 185.319 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 180 112.650665 M 0.067978 0 32 (Information about a name, in particular) widthshow 337.130127 112.650665 M 0.067978 0 32 (, the type of the name, can be obtained with ) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 514.999939 112.650665 M 0.067978 0 32 (port_-) widthshow 180 124.65062 M 2.056656 0 32 (name_space ) widthshow 3 FF 233.986664 124.65062 M 2.056656 0 32 ([) widthshow 4 FF 237.316666 124.65062 M 2.056656 0 32 (port_name) widthshow 3 FF 280.646667 124.65062 M 2.056656 0 32 (]) widthshow 5 (Symbol) 10 1 mymakefontmetric 5 FF 283.976685 124.65062 M 2.056656 0 32 widthshow 0 FF 298.40332 124.65062 M 2.056656 0 32 (mach_port_type) widthshow 3 FF 368.393311 124.65062 M 2.056656 0 32 (. The list of assigned names is obtained) widthshow 180 136.650558 M 0.322983 0 32 (with ) widthshow 4 FF 200.602982 136.650558 M 0.322983 0 32 (port_name_space ) widthshow 3 FF 274.52597 136.650558 M 0.322983 0 32 ([) widthshow 4 FF 277.855957 136.650558 M 0.322983 0 32 (port_name) widthshow 3 FF 321.185974 136.650558 M 0.322983 0 32 (]) widthshow 5 FF 324.515991 136.650558 M 0.322983 0 32 widthshow 0 FF 337.208954 136.650558 M 0.322983 0 32 (mach_port_names) widthshow 3 FF 416.088959 136.650558 M 0.322983 0 32 (. The name by which a right is) widthshow (kno) 180.0 148.65 T (wn can be changed with ) 194.75 148.65 T 4 FF (port_name_space ) 293.89 148.65 T 3 FF ([) 367.49 148.65 T 4 FF (port_name) 370.82 148.65 T 3 FF (]) 414.15 148.65 T 5 FF 417.48 148.65 T 0 FF (mach_port_r) 429.85 148.65 T (ename) 485.77 148.65 T 3 FF (.) 513.54 148.65 T 180 172.650436 M 1.598282 0 32 (Some status information can be obtained, gi) widthshow 365.159851 172.650436 M 1.598282 0 32 (v) widthshow 370.009918 172.650436 M 1.598282 0 32 (en a recei) widthshow 411.266632 172.650436 M 1.598282 0 32 (v) widthshow 416.116699 172.650436 M 1.598282 0 32 (e right name, with ) widthshow 4 FF 497.779846 172.650436 M 1.598282 0 32 (port_nam-) widthshow (e_space ) 180.0 184.65 T 3 FF ([) 214.71 184.65 T 4 FF (port_name) 218.04 184.65 T 3 FF (]) 261.37 184.65 T 5 FF 264.7 184.65 T 0 FF (mach_port_get_r) 277.07 184.65 T (ecei) 350.76 184.65 T (v) 366.76 184.65 T (e_status) 371.66 184.65 T 3 FF (.) 406.1 184.65 T 180 208.650314 M 1.31073 0 32 (Port names that name recei) widthshow 293.30307 208.650314 M 1.31073 0 32 (v) widthshow 298.153137 208.650314 M 1.31073 0 32 (e rights ha) widthshow 342.234741 208.650314 M 1.31073 0 32 (v) widthshow 347.084808 208.650314 M 1.31073 0 32 (e an associated mak) widthshow 430.617065 208.650314 M 1.31073 0 32 (e-send count, used for no-) widthshow 180 220.650253 M 1.589005 0 32 (more-sender noti\336cation processing. The mak) widthshow 369.83609 220.650253 M 1.589005 0 32 (e-send count is the k) widthshow 458.302185 220.650253 M 1.589005 0 32 (ernel\325) widthshow 481.072479 220.650253 M 1.589005 0 32 (s count of the) widthshow 180 232.650192 M 0.871277 0 32 (number of times a send right w) widthshow 309.557739 232.650192 M 0.871277 0 32 (as made from the recei) widthshow 403.872986 232.650192 M 0.871277 0 32 (v) widthshow 408.723083 232.650192 M 0.871277 0 32 (e right \(with a message element) widthshow 180 244.650131 M 1.497726 0 32 (that is a port right specifying the MA) widthshow 338.684326 244.650131 M 1.497726 0 32 (CH_MSG_TYPE_MAKE_SEND type descriptor) widthshow 180 256.650085 M 0.601227 0 32 (for ) widthshow 0 FF 194.76123 256.650085 M 0.601227 0 32 (mach_msg) widthshow 3 FF 240.311234 256.650085 M 0.601227 0 32 (\). This mak) widthshow 287.243744 256.650085 M 0.601227 0 32 (e-send count is set to zero when a port is created, and reset to) widthshow 180 268.650024 M 0.688629 0 32 (zero whene) widthshow 226.248779 268.650024 M 0.688629 0 32 (v) widthshow 231.098862 268.650024 M 0.688629 0 32 (er the recei) widthshow 276.646271 268.650024 M 0.688629 0 32 (v) widthshow 281.496338 268.650024 M 0.688629 0 32 (e right is transmitted in a message. It can also be changed with) widthshow 4 FF 180 280.649963 M 0.834274 0 32 (port_name_space ) widthshow 3 FF 254.43428 280.649963 M 0.834274 0 32 ([) widthshow 4 FF 257.764282 280.649963 M 0.834274 0 32 (port_name) widthshow 3 FF 301.094299 280.649963 M 0.834274 0 32 (]) widthshow 5 FF 304.424286 280.649963 M 0.834274 0 32 widthshow 0 FF 317.62854 280.649963 M 0.834274 0 32 (mach_port_set_mscount) widthshow 3 FF 422.058563 280.649963 M 0.834274 0 32 (. The mak) widthshow 463.897156 280.649963 M 0.834274 0 32 (e-send count is in-) widthshow 180 292.649902 M 1.143906 0 32 (cluded in the no-more-senders noti\336cation message. Note that a no-senders noti\336cation) widthshow 180 304.649841 M 0.192108 0 32 (indicates the lack of e) widthshow 267.818542 304.649841 M 0.192108 0 32 (xtant send rights; there may still be outstanding send-once rights. A) widthshow 180 316.64978 M 0.537643 0 32 (task can easily k) widthshow 247.332993 316.64978 M 0.537643 0 32 (eep track of the send-once rights since e) widthshow 411.07666 316.64978 M 0.537643 0 32 (v) widthshow 415.926758 316.64978 M 0.537643 0 32 (ery send-once right guarantees) widthshow (a message or send-once noti\336cation.) 180.0 328.65 T 3 FF 180 352.649658 M 0.203781 0 32 (Recei) widthshow 202.520142 352.649658 M 0.203781 0 32 (v) widthshow 207.370224 352.649658 M 0.203781 0 32 (ed messages are stamped with a sequence number) widthshow 408.066956 352.649658 M 0.203781 0 32 (, tak) widthshow 425.390778 352.649658 M 0.203781 0 32 (en from the port from which) widthshow 180 364.649597 M 1.519928 0 32 (the message w) widthshow 241.259918 364.649597 M 1.519928 0 32 (as recei) widthshow 272.789978 364.649597 M 1.519928 0 32 (v) widthshow 277.640076 364.649597 M 1.519928 0 32 (ed. \(Messages recei) widthshow 359.010071 364.649597 M 1.519928 0 32 (v) widthshow 363.860168 364.649597 M 1.519928 0 32 (ed from a port set are stamped with a se-) widthshow 180 376.649536 M 1.017258 0 32 (quence number from the appropriate member port.\) Sequence numbers placed into sent) widthshow 180 388.649475 M 1.337433 0 32 (messages are o) widthshow 242.504959 388.649475 M 1.337433 0 32 (v) widthshow 247.355042 388.649475 M 1.337433 0 32 (erwritten. Ne) widthshow 301.202637 388.649475 M 1.337433 0 32 (wly created ports start with a zero sequence number) widthshow 519.222351 388.649475 M 1.337433 0 32 (, and) widthshow 180 400.649414 M 1.107254 0 32 (the sequence number is reset to zero whene) widthshow 361.060944 400.649414 M 1.107254 0 32 (v) widthshow 365.911011 400.649414 M 1.107254 0 32 (er the port's recei) widthshow 437.702942 400.649414 M 1.107254 0 32 (v) widthshow 442.55304 400.649414 M 1.107254 0 32 (e right is mo) widthshow 496.004883 400.649414 M 1.107254 0 32 (v) widthshow 500.85495 400.649414 M 1.107254 0 32 (ed. It can) widthshow 3 FF 180 412.649353 M 3.457108 0 32 (also be set e) widthshow 238.821411 412.649353 M 3.457108 0 32 (xplicitly with ) widthshow 4 FF 301.855621 412.649353 M 3.457108 0 32 (port_name_space ) widthshow 3 FF 378.91272 412.649353 M 3.457108 0 32 ([) widthshow 4 FF 382.242737 412.649353 M 3.457108 0 32 (port_name) widthshow 3 FF 425.572754 412.649353 M 3.457108 0 32 (]) widthshow 5 FF 428.90274 412.649353 M 3.457108 0 32 widthshow 0 FF 438.772736 412.649353 M 3.457108 0 32 ( mach_port_set_seqno) widthshow 3 FF 537.499878 412.649353 M 3.457108 0 32 (.) widthshow 3 FF 180 424.649292 M 0.439301 0 32 (When a message is de-queued from the port, it is stamped with the port's sequence num-) widthshow 180 436.649231 M 0.253067 0 32 (ber and the port's sequence number is then incremented. The de-queue and increment op-) widthshow 180 448.64917 M 0.796387 0 32 (erations are atomic, so that multiple threads recei) widthshow 381.954865 448.64917 M 0.796387 0 32 (ving messages from a port can use the) widthshow 4 FF (msgh_seqno) 180.0 460.649 T 3 FF ( \336eld to reconstruct the original order of the messages. ) 229.44 460.649 T 3 FF 180 484.649048 M 0.075943 0 32 (Since port name spaces are bound to tasks, the) widthshow 366.257629 484.649048 M 0.075943 0 32 (y are created and destro) widthshow 461.421509 484.649048 M 0.075943 0 32 (yed with their o) widthshow 524.449463 484.649048 M 0.075943 0 32 (wn-) widthshow (ing task.) 180.0 496.649 T 180 538.982178 360 3.024002 CR 0.25 SL 2 SC 540 540.49 M 180 540.49 L S 0 0 612 792 CR 6 (Times-Bold) 14 1 mymakefontmetric 6 FF (P) 180.0 534.316 T (ort Sets) 188.274 534.316 T 3 FF 180 558.672852 M 0.937881 0 32 (A port set is a set of ports which can be treated as a single unit when recei) widthshow 491.464172 558.672852 M 0.937881 0 32 (ving a mes-) widthshow 180 570.672791 M 0.670654 0 32 (sage. A ) widthshow 0 FF 213.831314 570.672791 M 0.670654 0 32 (mach_msg) widthshow 3 FF 259.381317 570.672791 M 0.670654 0 32 ( recei) widthshow 281.732117 570.672791 M 0.670654 0 32 (v) widthshow 286.582214 570.672791 M 0.670654 0 32 (e operation is allo) widthshow 359.724304 570.672791 M 0.670654 0 32 (wed ag) widthshow 388.945007 570.672791 M 0.670654 0 32 (ainst a port name that either names a) widthshow 180 582.672729 M 0.705826 0 32 (recei) widthshow 199.180145 582.672729 M 0.705826 0 32 (v) widthshow 204.030228 582.672729 M 0.705826 0 32 (e right, or a port set. A port set contains a collection of recei) widthshow 453.186127 582.672729 M 0.705826 0 32 (v) widthshow 458.036194 582.672729 M 0.705826 0 32 (e rights. When a re-) widthshow 180 594.672668 M 1.514923 0 32 (cei) widthshow 191.410141 594.672668 M 1.514923 0 32 (v) widthshow 196.260223 594.672668 M 1.514923 0 32 (e operation is performed ag) widthshow 312.23996 594.672668 M 1.514923 0 32 (ainst a port set, a message will be recei) widthshow 479.909485 594.672668 M 1.514923 0 32 (v) widthshow 484.759583 594.672668 M 1.514923 0 32 (ed at random) widthshow 180 606.672607 M 0.728455 0 32 (from one of the ports in the set \(the \336rst to ha) widthshow 369.183105 606.672607 M 0.728455 0 32 (v) widthshow 374.033203 606.672607 M 0.728455 0 32 (e a message, if only one port has a mes-) widthshow 180 618.672546 M 0.842163 0 32 (sage queued\). Each of the recei) widthshow 308.91098 618.672546 M 0.842163 0 32 (v) widthshow 313.761047 618.672546 M 0.842163 0 32 (e rights in the set has its o) widthshow 423.016357 618.672546 M 0.842163 0 32 (wn name, and the set has its) widthshow 180 630.672485 M 0.75119 0 32 (o) widthshow 184.750137 630.672485 M 0.75119 0 32 (wn name. A recei) widthshow 257.283875 630.672485 M 0.75119 0 32 (v) widthshow 262.133942 630.672485 M 0.75119 0 32 (e ag) widthshow 279.215149 630.672485 M 0.75119 0 32 (ainst a port set reports the name of the recei) widthshow 460.406036 630.672485 M 0.75119 0 32 (v) widthshow 465.256104 630.672485 M 0.75119 0 32 (e right whose port) widthshow 180 642.672424 M 0.215256 0 32 (pro) widthshow 193.180084 642.672424 M 0.215256 0 32 (vided the message. A recei) widthshow 301.261261 642.672424 M 0.215256 0 32 (v) widthshow 306.111328 642.672424 M 0.215256 0 32 (e right can belong to only one port set. A task may not di-) widthshow (rectly recei) 180.0 654.672 T (v) 224.45 654.672 T (e from a recei) 229.3 654.672 T (v) 284.3 654.672 T (e right that is in a port set.) 289.15 654.672 T 180 678.672302 M 2.891083 0 32 (A port set is created with ) widthshow 4 FF 300.106506 678.672302 M 2.891083 0 32 (port_name_space ) widthshow 3 FF 376.597595 678.672302 M 2.891083 0 32 ([) widthshow 4 FF 379.927612 678.672302 M 2.891083 0 32 (port_name) widthshow 3 FF 423.257599 678.672302 M 2.891083 0 32 (]) widthshow 5 FF 426.587585 678.672302 M 2.891083 0 32 widthshow 0 FF 441.848694 678.672302 M 2.891083 0 32 (mach_port_allocate) widthshow 3 FF 526.278687 678.672302 M 2.891083 0 32 ( or) widthshow 4 FF 180 690.672241 M 1.38855 0 32 (port_name_space ) widthshow 3 FF 254.988556 690.672241 M 1.38855 0 32 ([) widthshow 4 FF 258.318542 690.672241 M 1.38855 0 32 (port_name) widthshow 3 FF 301.64856 690.672241 M 1.38855 0 32 (]) widthshow 5 FF 304.978577 690.672241 M 1.38855 0 32 widthshow 0 FF 318.737122 690.672241 M 1.38855 0 32 (mach_port_allocate_name) widthshow 3 FF 431.497131 690.672241 M 1.38855 0 32 (. It is destro) widthshow 482.782837 690.672241 M 1.38855 0 32 (yed by ) widthshow 4 FF 514.999939 690.672241 M 1.38855 0 32 (port_-) widthshow 558 105.984009 2 9.999985 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 39 39 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (35 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Message T) 72.0 55.824 T (ransmission) 112.078 55.824 T 0.25 SL 3.86 setmiterlimit 0 SC 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Italic) 10 1 mymakefontmetric 3 FF 72 114.666626 M 3.155975 0 32 (name_space ) widthshow 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 127.085983 114.666626 M 3.155975 0 32 ([) widthshow 3 FF 130.415985 114.666626 M 3.155975 0 32 (port_name) widthshow 4 FF 173.745987 114.666626 M 3.155975 0 32 (]) widthshow 5 (Symbol) 10 1 mymakefontmetric 5 FF 177.075989 114.666626 M 3.155975 0 32 widthshow 1 FF 192.601959 114.666626 M 3.155975 0 32 (mach_port_destr) widthshow 265.742065 114.666626 M 3.155975 0 32 (oy) widthshow 4 FF 275.742065 114.666626 M 3.155975 0 32 ( or ) widthshow 3 FF 295.384033 114.666626 M 3.155975 0 32 (port_name_space ) widthshow 4 FF 372.140015 114.666626 M 3.155975 0 32 ([) widthshow 3 FF 375.470001 114.666626 M 3.155975 0 32 (port_name) widthshow 4 FF 418.799988 114.666626 M 3.155975 0 32 (]) widthshow 5 FF 422.130005 114.666626 M 3.155975 0 32 widthshow 1 FF (mach_port_deallocate) 72.0 126.667 T 4 FF (.) 166.43 126.667 T 72 150.666504 M 1.159973 0 32 (Manipulations of port sets is done with ) widthshow 3 FF 238.729813 150.666504 M 1.159973 0 32 (port_name_space ) widthshow 4 FF 313.489807 150.666504 M 1.159973 0 32 ([) widthshow 3 FF 316.819794 150.666504 M 1.159973 0 32 (port_name) widthshow 4 FF 360.14978 150.666504 M 1.159973 0 32 (]) widthshow 5 FF 363.479797 150.666504 M 1.159973 0 32 widthshow 1 FF 377.009766 150.666504 M 1.159973 0 32 (mach_port_-) widthshow 72 162.666443 M 1.194641 0 32 (mo) widthshow 85.230057 162.666443 M 1.194641 0 32 (v) widthshow 90.130112 162.666443 M 1.194641 0 32 (e_member) widthshow 4 FF 134.560425 162.666443 M 1.194641 0 32 (. This call can add a member to a set, remo) widthshow 317.986938 162.666443 M 1.194641 0 32 (v) widthshow 322.837036 162.666443 M 1.194641 0 32 (e it from a set, or mo) widthshow 413.454956 162.666443 M 1.194641 0 32 (v) widthshow 418.305054 162.666443 M 1.194641 0 32 (e it) widthshow (from one set to another) 72.0 174.666 T (.) 164.21 174.666 T 72 198.666321 M 2.920868 0 32 (The membership of a port set can be found with ) widthshow 3 FF 295.618713 198.666321 M 2.920868 0 32 (port_name_space ) widthshow 4 FF 372.139587 198.666321 M 2.920868 0 32 ([) widthshow 3 FF 375.469574 198.666321 M 2.920868 0 32 (port_name) widthshow 4 FF 418.799561 198.666321 M 2.920868 0 32 (]) widthshow 5 FF 422.129578 198.666321 M 2.920868 0 32 widthshow 1 FF (mach_port_get_set_status) 72.0 210.666 T 4 FF (.) 183.09 210.666 T 72 252.999496 360 3.024002 CR 432 254.51 M 72 254.51 L S 0 0 612 792 CR 6 (Times-Bold) 14 1 mymakefontmetric 6 FF (Message T) 72.0 248.333 T (ransmission) 134.343 248.333 T 4 FF (The ) 72.0 272.69 T 1 FF (mach_msg) 90.05 272.69 T 4 FF ( system call sends and recei) 135.6 272.69 T (v) 246.16 272.69 T (es Mach messages.) 251.01 272.69 T 72 296.690063 M 0.782654 0 32 (The send operation queues a message to a port. The caller blocks until the message can) widthshow (be queued, unless one of the follo) 72.0 308.69 T (wing happens:) 206.45 308.69 T 7 (Times-Roman) 7 1 mymakefontmetric 7 FF 72.0 326.69 T 4 FF 85.535995 326.689941 M 1.518631 0 32 (The message w) widthshow 150.123322 326.689941 M 1.518631 0 32 (as being sent to a send-once right. These messages al) widthshow 375.871094 326.689941 M 1.518631 0 32 (w) widthshow 382.99115 326.689941 M 1.518631 0 32 (ays forcibly) widthshow (queue.) 85.536 338.69 T 7 FF 72.0 353.69 T 4 FF 85.535995 353.689819 M 0.522079 0 32 (The queue w) widthshow 138.130219 353.689819 M 0.522079 0 32 (as full and the caller speci\336ed the MA) widthshow 293.855011 353.689819 M 0.522079 0 32 (CH_SEND_NO) widthshow 357.895233 353.689819 M 0.522079 0 32 (TIFY option. This) widthshow 85.535995 365.689758 M 0.694122 0 32 (option will force the destination port to accept a single message \(returning an appro-) widthshow (priate status\), and send the caller a noti\336cation when the message is actually queued.) 85.536 377.69 T 7 FF 72.0 392.69 T 4 FF 85.535995 392.689636 M 2.218353 0 32 (The ) widthshow 1 FF 105.804352 392.689636 M 2.218353 0 32 (mach_msg) widthshow 4 FF 151.354355 392.689636 M 2.218353 0 32 ( operation w) widthshow 205.681122 392.689636 M 2.218353 0 32 (as aborted \() widthshow 1 FF 256.767822 392.689636 M 2.218353 0 32 (thr) widthshow 269.917938 392.689636 M 2.218353 0 32 (ead_abort) widthshow 4 FF 313.247925 392.689636 M 2.218353 0 32 (\). Note that, by def) widthshow 397.561401 392.689636 M 2.218353 0 32 (ault, the) widthshow 1 FF (mach_msg) 85.536 404.69 T 4 FF ( library routine retries operations that are interrupted.) 131.086 404.69 T 7 FF 72.0 419.69 T 4 FF (The send operation e) 85.536 419.69 T (xceeded its time-out v) 168.976 419.69 T (alue.) 257.326 419.69 T 7 FF 72.0 434.689 T 4 FF (The port w) 85.536 434.689 T (as destro) 129.316 434.689 T (yed.) 164.486 434.689 T 72 458.689392 M 0.383255 0 32 (The message carries a cop) widthshow 178.393097 458.689392 M 0.383255 0 32 (y of the caller\325) widthshow 237.583176 458.689392 M 0.383255 0 32 (s data. \(Data speci\336ed as out-of-line in the mes-) widthshow 72 470.689331 M 0.295563 0 32 (sage is passed as a virtual cop) widthshow 193.093445 470.689331 M 0.295563 0 32 (y) widthshow 197.443802 470.689331 M 0.295563 0 32 (.\) After the send, the caller can freely modify the message) widthshow 72 482.68927 M -0.173111 0 32 (b) widthshow 76.80011 482.68927 M -0.173111 0 32 (uf) widthshow 84.880249 482.68927 M -0.173111 0 32 (fer or the out-of-line memory ranges and the message contents will remain unchanged. ) widthshow 72 506.689209 M 1.238403 0 32 (Aside from the ob) widthshow 148.055298 506.689209 M 1.238403 0 32 (vious sending f) widthshow 211.54216 506.689209 M 1.238403 0 32 (ailures \(in) widthshow 252.650787 506.689209 M 1.238403 0 32 (v) widthshow 257.40094 506.689209 M 1.238403 0 32 (alid port rights or data formats, for e) widthshow 411.449829 506.689209 M 1.238403 0 32 (xam-) widthshow 72 518.689148 M 0.816605 0 32 (ple\), a message may also f) widthshow 181.513092 518.689148 M 0.816605 0 32 (ail to be queued because the send time-out v) widthshow 364.986084 518.689148 M 0.816605 0 32 (alue is e) widthshow 399.23938 518.689148 M 0.816605 0 32 (xceeded) widthshow 72 530.689087 M 0.518417 0 32 (or an interrupt \() widthshow 1 FF 136.595261 530.689087 M 0.518417 0 32 (thr) widthshow 149.745361 530.689087 M 0.518417 0 32 (ead_abort) widthshow 4 FF 193.075363 530.689087 M 0.518417 0 32 (\) occurred. In these situations, the k) widthshow 338.835938 530.689087 M 0.518417 0 32 (ernel tries to return the) widthshow 72 542.689026 M 0.622253 0 32 (message contents to the caller with a pseudo-recei) widthshow 276.335938 542.689026 M 0.622253 0 32 (v) widthshow 281.186035 542.689026 M 0.622253 0 32 (e operation. This pre) widthshow 365.562927 542.689026 M 0.622253 0 32 (v) widthshow 370.413025 542.689026 M 0.622253 0 32 (ents the loss of) widthshow 72 554.688965 M 1.958542 0 32 (port rights or memory which only e) widthshow 225.81134 554.688965 M 1.958542 0 32 (xist in the message, for e) widthshow 334.884155 554.688965 M 1.958542 0 32 (xample, a recei) widthshow 399.361389 554.688965 M 1.958542 0 32 (v) widthshow 404.211456 554.688965 M 1.958542 0 32 (e right) widthshow (which w) 72.0 566.689 T (as mo) 106.06 566.689 T (v) 129.52 566.689 T (ed into the message, or out-of-line memory sent with the de-allocate bit. ) 134.37 566.689 T 72 590.688843 M 0.664932 0 32 (The pseudo-recei) widthshow 141.555084 590.688843 M 0.664932 0 32 (v) widthshow 146.405167 590.688843 M 0.664932 0 32 (e operation is v) widthshow 209.630051 590.688843 M 0.664932 0 32 (ery similar to a normal recei) widthshow 325.734863 590.688843 M 0.664932 0 32 (v) widthshow 330.584961 590.688843 M 0.664932 0 32 (e operation. The pseudo-) widthshow 72 602.688782 M 0.166809 0 32 (recei) widthshow 91.180145 602.688782 M 0.166809 0 32 (v) widthshow 96.030228 602.688782 M 0.166809 0 32 (e handles the port rights in the message header as if the) widthshow 318.505249 602.688782 M 0.166809 0 32 (y were in the message body) widthshow 429.499634 602.688782 M 0.166809 0 32 (.) widthshow 72 614.688721 M 0.625305 0 32 (After the pseudo-recei) widthshow 162.410767 614.688721 M 0.625305 0 32 (v) widthshow 167.260849 614.688721 M 0.625305 0 32 (e, the message is ready to be resent. If the message is not resent,) widthshow 72 626.68866 M 1.555328 0 32 (note that out-of-line memory ranges may ha) widthshow 257.212097 626.68866 M 1.555328 0 32 (v) widthshow 262.062195 626.68866 M 1.555328 0 32 (e mo) widthshow 283.187592 626.68866 M 1.555328 0 32 (v) widthshow 288.037659 626.68866 M 1.555328 0 32 (ed and some port rights may ha) widthshow 422.709778 626.68866 M 1.555328 0 32 (v) widthshow 427.559845 626.68866 M 1.555328 0 32 (e) widthshow (changed names. ) 72.0 638.689 T 72 662.688538 M 0.784561 0 32 (The recei) widthshow 110.014709 662.688538 M 0.784561 0 32 (v) widthshow 114.864792 662.688538 M 0.784561 0 32 (e operation de-queues a message from a port. The recei) widthshow 342.716003 662.688538 M 0.784561 0 32 (ving task acquires the) widthshow 72 674.688477 M 0.303833 0 32 (port rights and out-of-line memory ranges carried in the message. The caller must supply) widthshow 72 686.688416 M 0.46524 0 32 (a b) widthshow 84.205353 686.688416 M 0.46524 0 32 (uf) widthshow 92.285492 686.688416 M 0.46524 0 32 (fer into which the header \(and an) widthshow 227.10704 686.688416 M 0.46524 0 32 (y in-line data\) is to be copied. If the message does) widthshow grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 40 40 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (36 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (P) 180.0 55.824 T (orts, Rights and Messages) 185.319 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 180 112.650635 M 0.951721 0 32 (not \336t, it is normally destro) widthshow 293.558655 112.650635 M 0.951721 0 32 (yed. An option \(MA) widthshow 377.674042 112.650635 M 0.951721 0 32 (CH_RCV_LARGE\), though, allo) widthshow 513.217651 112.650635 M 0.951721 0 32 (ws the) widthshow 180 124.650574 M 0.298691 0 32 (caller to recei) widthshow 234.767532 124.650574 M 0.298691 0 32 (v) widthshow 239.617615 124.650574 M 0.298691 0 32 (e an error) widthshow 278.125244 124.650574 M 0.298691 0 32 (, along with the b) widthshow 348.840088 124.650574 M 0.298691 0 32 (uf) widthshow 356.920227 124.650574 M 0.298691 0 32 (fer size that w) widthshow 414.086365 124.650574 M 0.298691 0 32 (ould be needed, so that another) widthshow (recei) 180.0 136.651 T (v) 199.18 136.651 T (e operation can be attempted with an appropriate sized b) 204.03 136.651 T (uf) 429.61 136.651 T (fer) 437.691 136.651 T (.) 448.241 136.651 T 180 160.650452 M 0.427399 0 32 (A recei) widthshow 209.327545 160.650452 M 0.427399 0 32 (v) widthshow 214.177628 160.650452 M 0.427399 0 32 (ed message can contain port rights and out-of-line memory) widthshow 453.017212 160.650452 M 0.427399 0 32 (. Recei) widthshow 480.964722 160.650452 M 0.427399 0 32 (v) widthshow 485.814819 160.650452 M 0.427399 0 32 (ed port rights) widthshow 180 172.650391 M 1.378174 0 32 (and memory should be consumed or de-allocated in some f) widthshow 428.653625 172.650391 M 1.378174 0 32 (ashion. Resource shortages) widthshow (that pre) 180.0 184.65 T (v) 210.02 184.65 T (ent the reception of a port right or out-of-line memory destro) 214.87 184.65 T (y that entity) 458.06 184.65 T (.) 505.191 184.65 T 180 208.650269 M 0.244217 0 32 (The recei) widthshow 217.474365 208.650269 M 0.244217 0 32 (v) widthshow 222.324448 208.650269 M 0.244217 0 32 (e operation can also specify a time-out v) widthshow 385.694122 208.650269 M 0.244217 0 32 (alue. It may also be aborted \() widthshow 0 FF 503.51944 208.650269 M 0.244217 0 32 (thr) widthshow 516.669556 208.650269 M 0.244217 0 32 (ead_-) widthshow (abort) 180.0 220.65 T 3 FF (\). These situations do not af) 203.33 220.65 T (fect the message that w) 314.18 220.65 T (ould ha) 407.39 220.65 T (v) 436.91 220.65 T (e been recei) 441.76 220.65 T (v) 489.261 220.65 T (ed.) 494.111 220.65 T 180 238.650177 M 1.345291 0 32 (There are tw) widthshow 233.120651 238.650177 M 1.345291 0 32 (o noti\336cations that can be requested as a result of a ) widthshow 0 FF 454.26886 238.650177 M 1.345291 0 32 (mach_msg) widthshow 3 FF 499.818878 238.650177 M 1.345291 0 32 ( call. The) widthshow 180 250.650162 M 1.139099 0 32 widthshow 180 262.650146 M 1.664917 0 32 (being forcibly sent with the MA) widthshow 316.524811 262.650146 M 1.664917 0 32 (CH_SEND_NO) widthshow 380.565033 262.650146 M 1.664917 0 32 (TIFY option. The other noti\336cation is) widthshow 180 274.650146 M 2.102921 0 32 (not generated by ) widthshow 0 FF 255.458771 274.650146 M 2.102921 0 32 (mach_msg) widthshow 3 FF 301.008789 274.650146 M 2.102921 0 32 (, b) widthshow 312.911804 274.650146 M 2.102921 0 32 (ut is requested by the MA) widthshow 426.626648 274.650146 M 2.102921 0 32 (CH_RCV_NO) widthshow 485.116852 274.650146 M 2.102921 0 32 (TIFY option.) widthshow 180 286.650116 M 0.294601 0 32 (This option causes the reply port right that is recei) widthshow 383.211548 286.650116 M 0.294601 0 32 (v) widthshow 388.061646 286.650116 M 0.294601 0 32 (ed to automatically ha) widthshow 477.345581 286.650116 M 0.294601 0 32 (v) widthshow 482.195648 286.650116 M 0.294601 0 32 (e a dead name) widthshow 180 298.650085 M 1.215897 0 32 (noti\336cation requested for it \(as if by ) widthshow 0 FF 334.881287 298.650085 M 1.215897 0 32 (mach_port_r) widthshow 390.801392 298.650085 M 1.215897 0 32 (equest_noti\336cation) widthshow 3 FF 471.361389 298.650085 M 1.215897 0 32 (\). This latter op-) widthshow 3 FF 180 310.650085 M 1.014969 0 32 (tion is an optimization for a certain class of RPC interactions. The dead name noti\336ca-) widthshow 180 322.650085 M 0.319366 0 32 (tion on the reply port name allo) widthshow 307.766357 322.650085 M 0.319366 0 32 (ws the recei) widthshow 355.915222 322.650085 M 0.319366 0 32 (v) widthshow 360.76532 322.650085 M 0.319366 0 32 (er of the message to be informed in a timely) widthshow 180 334.650055 M 0.463257 0 32 (manner of the death of the requesting client. Ho) widthshow 374.806213 334.650055 M 0.463257 0 32 (we) widthshow 386.21637 334.650055 M 0.463257 0 32 (v) widthshow 391.066437 334.650055 M 0.463257 0 32 (er) widthshow 398.436646 334.650055 M 0.463257 0 32 (, since the reply right is typically a) widthshow 180 346.650024 M 0.012238 0 32 (send-once right, sending the reply will destro) widthshow 360.783508 346.650024 M 0.012238 0 32 (y the right and generate a port-deleted noti\336-) widthshow 180 358.650024 M 1.366608 0 32 (cation instead. An optimization to cancel this noti\336cation is pro) widthshow 446.029541 358.650024 M 1.366608 0 32 (vided by the MA) widthshow 517.779602 358.650024 M 1.366608 0 32 (CH_-) widthshow (SEND_CANCEL option to ) 180.0 370.65 T 0 FF (mach_msg) 291.95 370.65 T 3 FF (.) 337.5 370.65 T 180 394.649994 M 0.359985 0 32 (Message operations are only atomic with respect to the manipulation of the port rights in) widthshow (message headers.) 180.0 406.65 T 558 303.983429 2 105.999878 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 41 41 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 2 SL 3.86 setmiterlimit 0 G 432 45 M 72 45 L S 2 SC 432 342 M 72 342 L S 0.25 SL 432 720 M 72 720 L S 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (37 ) widthshow 0 0 612 792 CR 1 G 72 99 360 225 NF 0 G 2 (Times-Roman) 12 1 mymakefontmetric 2 FF 72 114.999969 M 1.19989 0 (CHAPTER 5) ashow 3 (Times-Roman) 24 1 mymakefontmetric 3 FF 180 114.999969 M -0.479736 0 (V) ashow 195.409058 114.999969 M -0.479736 0 (irtual Memory ) ashow 180 144.999924 M -0.479736 0 (Management) ashow 1 G 72 360 360 344.015991 NF 0 G 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 72 366.666626 M 1.548538 0 32 (Mach is well kno) widthshow 145.555756 366.666626 M 1.548538 0 32 (wn for its virtual memory design, one that cleanly layers the virtual) widthshow 72 378.666565 M 0.814972 0 32 (memory system into a machine dependent and a machine independent portion. The ma-) widthshow 72 390.666504 M 0.968094 0 32 (chine dependent portion pro) widthshow 187.234375 390.666504 M 0.968094 0 32 (vides a simple interf) widthshow 271.418701 390.666504 M 0.968094 0 32 (ace for v) widthshow 308.085052 390.666504 M 0.968094 0 32 (alidating, in) widthshow 356.43335 390.666504 M 0.968094 0 32 (v) widthshow 361.183502 390.666504 M 0.968094 0 32 (alidating and set-) widthshow 72 402.666443 M 1.7733 0 32 (ting the access rights for pages of virtual memory \(maintaining the hardw) widthshow 385.526367 402.666443 M 1.7733 0 32 (are address) widthshow 72 414.666382 M 0.019073 0 32 (maps\). The machine independent portion pro) widthshow 251.915466 414.666382 M 0.019073 0 32 (vides support for logical address maps \(map-) widthshow 72 426.666321 M 1.281387 0 32 (ping a virtual address space\), memory ranges within this map, and the interf) widthshow 391.11673 426.666321 M 1.281387 0 32 (ace to the) widthshow 72 438.66626 M 0.399963 0 32 (backing storage \(memory objects\) for these ranges via the e) widthshow 313.999786 438.66626 M 0.399963 0 32 (xternal memory management) widthshow (interf) 72.0 450.666 T (ace.) 93.56 450.666 T 72 474.666138 M 0.534515 0 32 (The virtual memory system is designed for uniprocessors and shared memory multi-pro-) widthshow 72 486.666077 M 1.331512 0 32 (cessors of a moderate number of processors. It has been ported to non-uniform access) widthshow 72 498.666016 M 0.889969 0 32 (memory architectures, although optimal support for these architectures, as well as more) widthshow (comple) 72.0 510.666 T (x mapped hardw) 101.29 510.666 T (are \(such as virtually addressed caches\) is still being in) 167.84 510.666 T (v) 387.12 510.666 T (estig) 391.97 510.666 T (ated.) 410.811 510.666 T 72 534.665894 M 0.857849 0 32 (High performance is a feature of the Mach virtual memory design. Much of this results) widthshow 72 546.665833 M 1.878235 0 32 (from its ef) widthshow 117.166611 546.665833 M 1.878235 0 32 widthshow 204.001419 546.665833 M 1.878235 0 32 (ge, sparse address spaces, shared memory) widthshow 380.192993 546.665833 M 1.878235 0 32 (, and virtual) widthshow (cop) 72.0 558.666 T (y memory optimizations.) 86.34 558.666 T 72 582.66571 M -0.002365 0 32 (Finally) widthshow 99.690353 582.66571 M -0.002365 0 32 (, the virtual memory system allo) widthshow 228.868668 582.66571 M -0.002365 0 32 (ws clients to pro) widthshow 294.541656 582.66571 M -0.002365 0 32 (vide the backing storage for mem-) widthshow (ory ranges, thereby de\336ning the semantics that apply to such ranges.) 72.0 594.666 T 72 636.998901 360 3.024002 CR 432 638.51 M 72 638.51 L S 0 0 612 792 CR 5 (Times-Bold) 14 1 mymakefontmetric 5 FF (V) 72.0 632.332 T (irtual Addr) 81.59 632.332 T (ess Spaces) 150.176 632.332 T 4 FF 72 656.689514 M 0.877792 0 32 (A virtual address space de\336nes the set of v) widthshow 249.292496 656.689514 M 0.877792 0 32 (alid virtual addresses that a thread e) widthshow 397.709351 656.689514 M 0.877792 0 32 (x) widthshow 402.559448 656.689514 M 0.877792 0 32 (ecuting) widthshow 72 668.689453 M 1.369965 0 32 (within the task o) widthshow 142.250031 668.689453 M 1.369965 0 32 (wning the virtual address space is allo) widthshow 302.419983 668.689453 M 1.369965 0 32 (wed to reference. A virtual ad-) widthshow (dress space is named by its o) 72.0 680.689 T (wning task.) 187.29 680.689 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 42 42 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (38 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (V) 180.0 55.824 T (irtual Memory Management) 186.165 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 180 112.650635 M 1.224594 0 32 (A virtual address space consists of a sparsely populated inde) widthshow 432.771454 112.650635 M 1.224594 0 32 (x) widthshow 437.621521 112.650635 M 1.224594 0 32 (ed set of memory pages.) widthshow 180 124.650574 M 0.591385 0 32 (The k) widthshow 203.541443 124.650574 M 0.591385 0 32 (ernel internally groups virtually contiguous sets of pages that all ha) widthshow 478.115417 124.650574 M 0.591385 0 32 (v) widthshow 482.965515 124.650574 M 0.591385 0 32 (e the same at-) widthshow 180 136.650513 M 1.727753 0 32 (trib) widthshow 193.690109 136.650513 M 1.727753 0 32 (utes \(backing abstract memory object, inheritance, protection and other properties\)) widthshow 180 148.650452 M 0.026886 0 32 (into internal entities called memory re) widthshow 332.464539 148.650452 M 0.026886 0 32 (gions. Memory re) widthshow 403.748383 148.650452 M 0.026886 0 32 (gions are named only by their vir-) widthshow 180 160.650391 M 0.560837 0 32 (tual address ranges within their containing address space. V) widthshow 422.497314 160.650391 M 0.560837 0 32 (arious operations and system) widthshow 180 172.65033 M 0.489197 0 32 (mechanisms are sensiti) widthshow 272.938538 172.65033 M 0.489197 0 32 (v) widthshow 277.788635 172.65033 M 0.489197 0 32 (e to the identities of memory re) widthshow 406.113892 172.65033 M 0.489197 0 32 (gions, b) widthshow 438.073181 172.65033 M 0.489197 0 32 (ut most user accesses are) widthshow 180 184.650269 M 0.158035 0 32 (not so af) widthshow 214.50621 184.650269 M 0.158035 0 32 (fected, and can span memory re) widthshow 342.326477 184.650269 M 0.158035 0 32 (gions freely) widthshow 389.32489 184.650269 M 0.158035 0 32 (. The k) widthshow 417.591003 184.650269 M 0.158035 0 32 (ernel is free to split and mer) widthshow 530.559326 184.650269 M 0.158035 0 32 (ge) widthshow 180 196.650208 M 0.257828 0 32 (memory re) widthshow 223.707916 196.650208 M 0.257828 0 32 (gions as it sees \336t; the client vie) widthshow 352.762848 196.650208 M 0.257828 0 32 (w of its address space is as a set of pages. The) widthshow 180 208.650146 M 0.46489 0 32 (only call that is sensiti) widthshow 271.059692 208.650146 M 0.46489 0 32 (v) widthshow 275.90979 208.650146 M 0.46489 0 32 (e to memory re) widthshow 337.974548 208.650146 M 0.46489 0 32 (gions is ) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 372.244324 208.650146 M 0.46489 0 32 (virtual_addr) widthshow 422.434509 208.650146 M 0.46489 0 32 (ess_space ) widthshow 3 FF 465.389404 208.650146 M 0.46489 0 32 ([) widthshow 4 FF 468.719421 208.650146 M 0.46489 0 32 (memory_addr) widthshow 524.449585 208.650146 M 0.46489 0 32 (ess) widthshow 3 FF 536.669617 208.650146 M 0.46489 0 32 (]) widthshow 5 (Symbol) 10 1 mymakefontmetric 5 FF 180 220.650085 M 0.777618 0 32 widthshow 0 FF 193.147614 220.650085 M 0.777618 0 32 (vm_r) widthshow 215.737717 220.650085 M 0.777618 0 32 (egion) widthshow 3 FF 238.517715 220.650085 M 0.777618 0 32 (. This call locates the re) widthshow 337.235901 220.650085 M 0.777618 0 32 (gion \322near\323 a gi) widthshow 402.908905 220.650085 M 0.777618 0 32 (v) widthshow 407.758972 220.650085 M 0.777618 0 32 (en address, and returns informa-) widthshow 180 232.650024 M 0.419189 0 32 (tion about that memory re) widthshow 285.40686 232.650024 M 0.419189 0 32 (gion. Since memory re) widthshow 377.614502 232.650024 M 0.419189 0 32 (gions are purely a k) widthshow 458.06134 232.650024 M 0.419189 0 32 (ernel internal notion) widthshow 180 244.649963 M 1.621506 0 32 (\(b) widthshow 188.130112 244.649963 M 1.621506 0 32 (ut af) widthshow 207.551758 244.649963 M 1.621506 0 32 (fected by ) widthshow 0 FF 250.224777 244.649963 M 1.621506 0 32 (vm_map) widthshow 3 FF 287.444763 244.649963 M 1.621506 0 32 ( calls, as well as by changing protection and inheritance at-) widthshow (trib) 180.0 256.65 T (utes\), the result of this call can change from in) 193.69 256.65 T (v) 378.81 256.65 T (ocation to in) 383.61 256.65 T (v) 433.211 256.65 T (ocation.) 438.011 256.65 T 180 280.649841 M 0.549957 0 32 (A virtual address space is created when a task is created, and destro) widthshow 456.699585 280.649841 M 0.549957 0 32 (yed when the task is) widthshow 180 292.64978 M 0.695343 0 32 (destro) widthshow 204.340057 292.64978 M 0.695343 0 32 (yed. When a ne) widthshow 268.376221 292.64978 M 0.695343 0 32 (w task is created \(ignoring inheritance\), its address space is empty) widthshow 180 304.649719 M 0.652847 0 32 (and must be b) widthshow 237.588654 304.649719 M 0.652847 0 32 (uilt through manipulations of the virtual address space before the task can) widthshow 180 316.649658 M 0.457794 0 32 (ha) widthshow 189.240112 316.649658 M 0.457794 0 32 (v) widthshow 194.090195 316.649658 M 0.457794 0 32 (e threads set into e) widthshow 270.201477 316.649658 M 0.457794 0 32 (x) widthshow 275.051544 316.649658 M 0.457794 0 32 (ecution. An option, though, to the ) widthshow 0 FF 415.298309 316.649658 M 0.457794 0 32 (task_cr) widthshow 446.778412 316.649658 M 0.457794 0 32 (eate) widthshow 3 FF 463.988403 316.649658 M 0.457794 0 32 ( call allo) widthshow 499.094147 316.649658 M 0.457794 0 32 (ws for the) widthshow 180 328.649597 M 0.947296 0 32 (ne) widthshow 189.19014 328.649597 M 0.947296 0 32 (w task to \322inherit\323 ranges of memory from the prototype task used in the create call.) widthshow 180 340.649536 M 1.226196 0 32 (The k) widthshow 204.176254 340.649536 M 1.226196 0 32 (ernel function ) widthshow 4 FF 264.948669 340.649536 M 1.226196 0 32 (virtual_addr) widthshow 315.138855 340.649536 M 1.226196 0 32 (ess_space ) widthshow 3 FF 358.855042 340.649536 M 1.226196 0 32 ([) widthshow 4 FF 362.185059 340.649536 M 1.226196 0 32 (memory_r) widthshow 403.135132 340.649536 M 1.226196 0 32 (ang) widthshow 418.035217 340.649536 M 1.226196 0 32 (e) widthshow 3 FF 422.47522 340.649536 M 1.226196 0 32 (]) widthshow 4 FF 425.805206 340.649536 M 1.226196 0 32 ( ) widthshow 5 FF 429.531403 340.649536 M 1.226196 0 32 widthshow 0 FF 443.127594 340.649536 M 1.226196 0 32 (vm_inherit) widthshow 3 FF 490.347595 340.649536 M 1.226196 0 32 ( can change) widthshow 180 352.649475 M 0.407639 0 32 (the inheritance properties for a memory range, to allo) widthshow 396.571289 352.649475 M 0.407639 0 32 (w or disallo) widthshow 444.356689 352.649475 M 0.407639 0 32 (w inheritance. The pos-) widthshow (sibilities for inheritance are:) 180.0 364.649 T 6 (Times-Roman) 7 1 mymakefontmetric 6 FF 180.0 382.649 T 3 FF (VM_INHERIT_NONE \321 The range is left unde\336ned in the ne) 193.536 382.649 T (w task.) 446.296 382.649 T 6 FF 180.0 397.649 T 3 FF 193.535995 397.649292 M 0.243942 0 32 (VM_INHERIT_COPY \321 The range is copied \(with cop) widthshow 422.05365 397.649292 M 0.243942 0 32 (y optimizations\) into the ne) widthshow 532.779541 397.649292 M 0.243942 0 32 (w) widthshow (task at the time of task creation.) 193.536 409.649 T 6 FF 180.0 424.649 T 3 FF (VM_INHERIT_SHARE \321 The ne) 193.536 424.649 T (w and old tasks share access to the memory range.) 334.656 424.649 T 180 448.649109 M 0.584259 0 32 (A range of memory can ha) widthshow 289.631409 448.649109 M 0.584259 0 32 (v) widthshow 294.481506 448.649109 M 0.584259 0 32 (e distinct semantics associated with it through the actions of) widthshow 180 460.649048 M 0.45993 0 32 (a memory manager) widthshow 257.57019 460.649048 M 0.45993 0 32 (. When a ne) widthshow 306.460114 460.649048 M 0.45993 0 32 (w memory range is established in a virtual address space,) widthshow 180 472.648987 M 0.383301 0 32 (an abstract memory object is speci\336ed \(possibly by def) widthshow 402.936462 472.648987 M 0.383301 0 32 (ault\) that represents the semantics) widthshow 180 484.648926 M 0.472107 0 32 (of the memory range, by being associated with a task \(a memory manager\) that pro) widthshow 518.889648 484.648926 M 0.472107 0 32 (vides) widthshow 180 496.648865 M 0.576401 0 32 (those semantics. No k) widthshow 269.399261 496.648865 M 0.576401 0 32 (ernel calls e) widthshow 318.16217 496.648865 M 0.576401 0 32 (xist for a task to directly af) widthshow 429.130707 496.648865 M 0.576401 0 32 (fect the semantics associat-) widthshow 180 508.648804 M 0.779984 0 32 (ed with its memory ranges. A task has such control only by virtue of choosing memory) widthshow 180 520.648743 M 1.381638 0 32 (managers that pro) widthshow 254.263367 520.648743 M 1.381638 0 32 (vide the functionality desired, or by sending messages directly to its) widthshow (memory managers to direct their actions.) 180.0 532.649 T 4 FF 180 556.648621 M 0.979034 0 32 (virtual_addr) widthshow 230.190201 556.648621 M 0.979034 0 32 (ess_space ) widthshow 3 FF 273.659241 556.648621 M 0.979034 0 32 ([) widthshow 4 FF 276.989258 556.648621 M 0.979034 0 32 (memory_r) widthshow 317.939331 556.648621 M 0.979034 0 32 (ang) widthshow 332.839386 556.648621 M 0.979034 0 32 (e) widthshow 3 FF 337.279388 556.648621 M 0.979034 0 32 (]) widthshow 4 FF 340.609375 556.648621 M 0.979034 0 32 ( ) widthshow 5 FF 344.08844 556.648621 M 0.979034 0 32 widthshow 0 FF 357.437439 556.648621 M 0.979034 0 32 (vm_map) widthshow 3 FF 394.657471 556.648621 M 0.979034 0 32 ( is the basic call to establish a ne) widthshow 532.779907 556.648621 M 0.979034 0 32 (w) widthshow 180 568.64856 M 0.589142 0 32 (range of virtual memory) widthshow 278.597778 568.64856 M 0.589142 0 32 (. This call speci\336es the details of the memory range \(placement,) widthshow 180 580.648499 M 0.429947 0 32 (size, protection, inheritance, object of) widthshow 332.269958 580.648499 M 0.429947 0 32 (fset\). The signi\336cant parameter to this call is a port) widthshow 180 592.648438 M 0.263977 0 32 (naming an abstract memory object that backs the storage for the range. A null port speci-) widthshow 180 604.648376 M 0.196335 0 32 widthshow 259.759308 604.648376 M 0.196335 0 32 (s def) widthshow 279.015686 604.648376 M 0.196335 0 32 (ault memory manager is to be used. The def) widthshow 456.286438 604.648376 M 0.196335 0 32 (ault memory manger) widthshow 180 616.648315 M 0.853271 0 32 (pro) widthshow 193.180084 616.648315 M 0.853271 0 32 (vides initially zero-\336lled storage that is paged ag) widthshow 393.80304 616.648315 M 0.853271 0 32 (ainst the system\325) widthshow 462.179871 616.648315 M 0.853271 0 32 (s paging space and) widthshow 180 628.648254 M 2.168686 0 32 (which will not persist between system boot-loads. ) widthshow 4 FF 397.390808 628.648254 M 2.168686 0 32 (virtual_addr) widthshow 447.580994 628.648254 M 2.168686 0 32 (ess_space ) widthshow 3 FF 492.239685 628.648254 M 2.168686 0 32 ([) widthshow 4 FF 495.569702 628.648254 M 2.168686 0 32 (memory_r-) widthshow 180 640.648193 M 0.573273 0 32 (ang) widthshow 194.900055 640.648193 M 0.573273 0 32 (e) widthshow 3 FF 199.340057 640.648193 M 0.573273 0 32 (]) widthshow 4 FF 202.670059 640.648193 M 0.573273 0 32 ( ) widthshow 5 FF 205.743332 640.648193 M 0.573273 0 32 widthshow 0 FF 218.6866 640.648193 M 0.573273 0 32 (vm_allocate) widthshow 3 FF 269.786621 640.648193 M 0.573273 0 32 ( can be vie) widthshow 314.29657 640.648193 M 0.573273 0 32 (wed as a simpli\336ed form of the ) widthshow 0 FF 445.239502 640.648193 M 0.573273 0 32 (vm_map) widthshow 3 FF 482.459473 640.648193 M 0.573273 0 32 ( call when the) widthshow (def) 180.0 652.648 T (ault memory manager is desired.) 192.67 652.648 T 180 676.648071 M 0.275375 0 32 (Random ranges of memory space can be made in) widthshow 378.423248 676.648071 M 0.275375 0 32 (v) widthshow 383.173401 676.648071 M 0.275375 0 32 (alid with ) widthshow 4 FF 421.50415 676.648071 M 0.275375 0 32 (virtual_addr) widthshow 471.694336 676.648071 M 0.275375 0 32 (ess_space ) widthshow 3 FF 514.459717 676.648071 M 0.275375 0 32 ([) widthshow 4 FF 517.789734 676.648071 M 0.275375 0 32 (mem-) widthshow (ory_r) 180.0 688.648 T (ang) 202.07 688.648 T (e) 216.97 688.648 T 3 FF (]) 221.41 688.648 T 4 FF ( ) 224.74 688.648 T 5 FF 227.24 688.648 T 0 FF (vm_deallocate) 239.61 688.648 T 3 FF (.) 300.71 688.648 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 43 43 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (39 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (V) 72.0 55.824 T (irtual Addr) 78.165 55.824 T (ess Spaces) 122.257 55.824 T 0.25 SL 3.86 setmiterlimit 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 72 114.666656 M 0.762436 0 32 (FIGURE 5 sho) widthshow 133.275009 114.666656 M 0.762436 0 32 (ws the client visible virtual memory structures. Sho) widthshow 344.462219 114.666656 M 0.762436 0 32 (wn are three memory) widthshow 72 126.666611 M 0.825653 0 32 (ranges \(sets of pages\), tw) widthshow 176.562683 126.666611 M 0.825653 0 32 (o of which ha) widthshow 233.549759 126.666611 M 0.825653 0 32 (v) widthshow 238.399841 126.666611 M 0.825653 0 32 (e the same backing abstract memory object b) widthshow 424.219543 126.666611 M 0.825653 0 32 (ut) widthshow 72 138.66655 M 1.68663 0 32 (possibly dif) widthshow 120.386765 138.66655 M 1.68663 0 32 (fering inheritance or protection attrib) widthshow 275.233398 138.66655 M 1.68663 0 32 (utes. One of the memory cache / ab-) widthshow (stract memory object pairs is sho) 72.0 150.666 T (wn in detail with the associated memory manager task.) 203.68 150.666 T 72 595.650391 M 0.088501 0 32 (Aside from the ob) widthshow 144.605591 595.650391 M 0.088501 0 32 (vious hardw) widthshow 193.75415 595.650391 M 0.088501 0 32 (are memory accesses allo) widthshow 295.67981 595.650391 M 0.088501 0 32 (wed \(as gi) widthshow 336.70697 595.650391 M 0.088501 0 32 (v) widthshow 341.557037 595.650391 M 0.088501 0 32 (en by the range of v) widthshow 421.449707 595.650391 M 0.088501 0 32 (al-) widthshow 72 607.650391 M 0.97995 0 32 (id addresses and the protection attrib) widthshow 223.619873 607.650391 M 0.97995 0 32 (utes for those ranges\), the k) widthshow 338.949707 607.650391 M 0.97995 0 32 (ernel also supports e) widthshow 423.669617 607.650391 M 0.97995 0 32 (x-) widthshow 72 619.650269 M 2.987244 0 32 (plicit memory manipulations. The operations supported ag) widthshow 324.023499 619.650269 M 2.987244 0 32 (ainst a span of a virtual) widthshow (address space are the follo) 72.0 631.65 T (wing:) 177.27 631.65 T 4 (Times-Roman) 7 1 mymakefontmetric 4 FF 72.0 649.65 T 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 85.535995 649.650146 M 0.849258 0 32 (virtual_addr) widthshow 135.726196 649.650146 M 0.849258 0 32 (ess_space ) widthshow 3 FF 179.06546 649.650146 M 0.849258 0 32 ([) widthshow 5 FF 182.395462 649.650146 M 0.849258 0 32 (memory_r) widthshow 223.345551 649.650146 M 0.849258 0 32 (ang) widthshow 238.245605 649.650146 M 0.849258 0 32 (e) widthshow 3 FF 242.685608 649.650146 M 0.849258 0 32 (]) widthshow 5 FF 246.01561 649.650146 M 0.849258 0 32 ( ) widthshow 6 (Symbol) 10 1 mymakefontmetric 6 FF 249.364868 649.650146 M 0.849258 0 32 widthshow 1 FF 262.584106 649.650146 M 0.849258 0 32 (vm_copy) widthshow 3 FF 300.914124 649.650146 M 0.849258 0 32 ( \321 Cop) widthshow 334.182678 649.650146 M 0.849258 0 32 (y a memory range from) widthshow (one place in an virtual address space to another) 85.536 661.65 T (.) 273.826 661.65 T 4 FF 72.0 676.65 T 5 FF 85.535995 676.650024 M 1.798889 0 32 (virtual_addr) widthshow 135.726196 676.650024 M 1.798889 0 32 (ess_space ) widthshow 3 FF 180.015091 676.650024 M 1.798889 0 32 ([) widthshow 5 FF 183.345093 676.650024 M 1.798889 0 32 (memory_r) widthshow 224.295181 676.650024 M 1.798889 0 32 (ang) widthshow 239.195236 676.650024 M 1.798889 0 32 (e) widthshow 3 FF 243.635239 676.650024 M 1.798889 0 32 (]) widthshow 5 FF 246.96524 676.650024 M 1.798889 0 32 ( ) widthshow 6 FF 251.26413 676.650024 M 1.798889 0 32 widthshow 1 FF 265.433014 676.650024 M 1.798889 0 32 (vm_machine_attrib) widthshow 349.113129 676.650024 M 1.798889 0 32 (ute) widthshow 3 FF 362.443115 676.650024 M 1.798889 0 32 ( \321 Set machine) widthshow (speci\336c hardw) 85.536 688.65 T (are properties for the memory range.) 143.476 688.65 T 63 153.999802 378 420.984009 CR 1 G 63 153.999802 378 420.984009 NF 3 SL 0 SC 0.6667 G 197.97 504.9 M 195.37 510.07 L 216 513.99 L 200.58 499.73 L F 197.98 504.91 M 126 469 L S 321.47 400.95 M 325.18 396.52 L 305.99 387.99 L 317.75 405.39 L F 360 433 M 321.48 400.96 L S 268.53 405.25 M 273.48 408.25 L 278.99 387.99 L 263.58 402.25 L F 252 433 M 268.54 405.26 L S 1 G 72 549.999817 360 27 NF 72 549.999817 360 13.031998 CR 0.25 SL 2 SC 0 G 432 556.52 M 144 556.52 L S 0 SC 135 556.52 M 72 556.52 L S 63 153.999802 378 420.984009 CR 7 (Helvetica-Bold) 9 1 mymakefontmetric 7 FF (FIGURE 5) 72.0 569.032 T 2 FF (V) 144.0 569.032 T (irtual Memory Structur) 150.165 569.032 T (es) 241.984 569.032 T 207.413025 228.787338 116.634018 1 NF 8 (Times-Roman) 14 1 mymakefontmetric 8 FF (virtual address space) 207.413 227.388 T 1 SL 18 72 207.999802 360 99 RS 369 162.999802 63 27 N 389.22583 182.290863 22.554001 1 NF (task) 389.226 180.892 T 362.09 181.81 M 369 172 L 357.94 176.66 L S 330.91 198.19 M 324 208 L 335.05 203.34 L S 324 208 M 369 172 L S 4 SL 234 184.93 M 227.38 184.93 L 234 208 L 240.62 184.93 L F 234 184.93 M 234 163 L S 3 FF (virtual addr) 178.136 178.831 T (\(inde) 241.136 178.816 T (x\)) 261.536 178.816 T 1 SL 432 235 M 72 235 L S 264.996338 361.287933 82.026016 1 NF 8 FF (memory cache) 264.996 359.889 T 288.896484 379.016541 34.216003 1 NF (object) 288.896 377.617 T 243 342.999817 126 45 N 356.69 331.46 M 360 343 L 363.31 331.46 L S 360 343 M 360 307 L S 3 FF (abstract memory) 88.044 445.415 T (object port) 99.98 461.232 T 3 SL 72 432.999817 99 36 N (memory cache) 353.212 445.415 T (name port) 362.369 461.232 T 333 432.999817 99 36 N (memory cache) 222.712 445.415 T (control port) 228.536 461.232 T 202.5 432.999817 99 36 N 233.174072 514.152222 46.662003 1 NF 8 FF (memory) 233.174 512.753 T 219.380859 532.152222 74.256012 1 NF (manager task) 219.381 530.753 T 1 SL 216 495.999817 81 45 N 405.15 425.59 M 403.02 428.12 L 413.99 432.99 L 407.27 423.05 L F 405.16 425.59 M 360 388 L S 128 429.54 M 127.01 426.38 L 117 432.99 L 128.99 432.69 L F 128.01 429.55 M 261 388 L S 252 480.53 M 255.31 480.53 L 252 469 L 248.69 480.53 L F 252 496 M 252 480.53 L S 367.92 474.63 M 369.54 477.51 L 377.99 468.99 L 366.31 471.74 L F 297 514 M 367.94 474.64 L S 0.5 SL 105.46 511.82 M 105.46 515.12 L 117 511.82 L 105.46 508.51 L F 105.46 511.82 M 72 511.82 L S 3 SL 0.6667 G 96.81 538.82 M 96.81 544.6 L 117 538.82 L 96.81 533.03 L F 96.81 538.82 M 72 538.82 L S 0 G 3 FF (send right) 135.0 511.816 T (recei) 135.0 538.816 T (v) 154.18 538.816 T (e right) 159.03 538.816 T 9 (Times-Roman) 12 1 mymakefontmetric 9 FF (memory range) 104.684 249.044 T 3 FF (inheritance) 117.292 264.328 T 1 SL 90 235.73 M 90 307 L S 189 307 M 189 235.73 L S (protection) 119.23 280.077 T 189 254.13 M 90 254.13 L S 189 269.88 M 90 269.88 L S 140.69 331.46 M 144 343 L 147.31 331.46 L S 144 343 M 144 307 L S 93.996338 361.287933 82.026016 1 NF 8 FF (memory cache) 93.996 359.889 T 117.896484 379.016541 34.216003 1 NF (object) 117.896 377.617 T 72 342.999817 126 45 N 257.69 331.46 M 261 343 L 264.31 331.46 L S 261 343 M 261 307 L S 189 285.63 M 90 285.63 L S 3 FF (system properties) 104.384 295.831 T 9 FF (memory range) 329.684 248.316 T 3 FF (inheritance) 342.292 263.601 T 315 235 M 315 306.27 L S 414 306.27 M 414 235 L S (protection) 344.23 279.35 T 414 253.4 M 315 253.4 L S 414 269.15 M 315 269.15 L S 414 284.9 M 315 284.9 L S (system properties) 329.384 295.104 T 9 FF (memory range) 230.684 248.316 T 3 FF (inheritance) 243.292 263.601 T 216 235 M 216 306.27 L S 315 306.27 M 315 235 L S (protection) 245.23 279.35 T 315 253.4 M 216 253.4 L S 315 269.15 M 216 269.15 L S 315 284.9 M 216 284.9 L S (system properties) 230.384 295.104 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 44 44 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 2 SC 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (40 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (V) 180.0 55.824 T (irtual Memory Management) 186.165 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 7 1 mymakefontmetric 3 FF 180.0 112.651 T 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 193.535995 112.650635 M 1.311646 0 32 (virtual_addr) widthshow 243.726196 112.650635 M 1.311646 0 32 (ess_space ) widthshow 5 (Times-Roman) 10 1 mymakefontmetric 5 FF 287.527832 112.650635 M 1.311646 0 32 ([) widthshow 4 FF 290.857849 112.650635 M 1.311646 0 32 (memory_r) widthshow 331.807922 112.650635 M 1.311646 0 32 (ang) widthshow 346.708008 112.650635 M 1.311646 0 32 (e) widthshow 5 FF 351.14801 112.650635 M 1.311646 0 32 (]) widthshow 4 FF 354.477997 112.650635 M 1.311646 0 32 ( ) widthshow 6 (Symbol) 10 1 mymakefontmetric 6 FF 358.289642 112.650635 M 1.311646 0 32 widthshow 0 FF 371.971283 112.650635 M 1.311646 0 32 (vm_pr) widthshow 400.121399 112.650635 M 1.311646 0 32 (otect) widthshow 5 FF 420.661377 112.650635 M 1.311646 0 32 ( \321 Set the allo) widthshow 485.658112 112.650635 M 1.311646 0 32 (wed accesses) widthshow 193.535995 124.650574 M 1.401062 0 32 (for a memory range. Each memory range has a current and a maximum protection) widthshow 193.535995 136.650513 M 0.545654 0 32 (mask. The memory manager for a range can specify the maximum protections for all) widthshow 193.535995 148.650452 M 0.298187 0 32 (users of a range of pages; each task then has its o) widthshow 392.906219 148.650452 M 0.298187 0 32 (wn pri) widthshow 418.784546 148.650452 M 0.298187 0 32 (v) widthshow 423.534668 148.650452 M 0.298187 0 32 (ate maximum protection v) widthshow 529.449402 148.650452 M 0.298187 0 32 (al-) widthshow (ue to further restrict the allo) 193.536 160.65 T (wed permissions, as well as its current protection mask.) 305.206 160.65 T 3 FF 180.0 175.65 T 4 FF (virtual_addr) 193.536 175.65 T (ess_space ) 243.726 175.65 T 5 FF ([) 286.216 175.65 T 4 FF (memory_r) 289.546 175.65 T (ang) 330.496 175.65 T (e) 345.396 175.65 T 5 FF (]) 349.836 175.65 T 4 FF ( ) 353.166 175.65 T 6 FF 355.666 175.65 T 0 FF (vm_r) 368.036 175.65 T (ead) 390.626 175.65 T 5 FF ( \321 Cop) 405.626 175.65 T (y out a memory range.) 437.197 175.65 T 3 FF 180.0 190.65 T 4 FF 193.535995 190.650269 M 0.831833 0 32 (host_contr) widthshow 235.866241 190.650269 M 0.831833 0 32 (ol ) widthshow 5 FF 246.978073 190.650269 M 0.831833 0 32 (\() widthshow 4 FF 250.308075 190.650269 M 0.831833 0 32 (virtual_addr) widthshow 300.498291 190.650269 M 0.831833 0 32 (ess_space ) widthshow 5 FF 343.820129 190.650269 M 0.831833 0 32 ([) widthshow 4 FF 347.150116 190.650269 M 0.831833 0 32 (memory_r) widthshow 388.10022 190.650269 M 0.831833 0 32 (ang) widthshow 403.000244 190.650269 M 0.831833 0 32 (e) widthshow 5 FF 407.440247 190.650269 M 0.831833 0 32 (]\)) widthshow 4 FF 414.100281 190.650269 M 0.831833 0 32 ( ) widthshow 6 FF 417.432098 190.650269 M 0.831833 0 32 widthshow 0 FF 430.633911 190.650269 M 0.831833 0 32 (vm_wir) widthshow 463.22403 190.650269 M 0.831833 0 32 (e) widthshow 5 FF 467.664032 190.650269 M 0.831833 0 32 ( \321 \322W) widthshow 497.807922 190.650269 M 0.831833 0 32 (ire\323 \(force) widthshow 193.535995 202.650208 M 0.013962 0 32 (to be and stay resident\) a range of memory) widthshow 364.068054 202.650208 M 0.013962 0 32 (. The ability to set the pageability of memo-) widthshow (ry is a pri) 193.536 214.65 T (vile) 231.336 214.65 T (ged operation and so it requires the host control port.) 246.186 214.65 T 3 FF 180.0 229.65 T 4 FF (virtual_addr) 193.536 229.65 T (ess_space ) 243.726 229.65 T 5 FF ([) 286.216 229.65 T 4 FF (memory_r) 289.546 229.65 T (ang) 330.496 229.65 T (e) 345.396 229.65 T 5 FF (]) 349.836 229.65 T 4 FF ( ) 353.166 229.65 T 6 FF 355.666 229.65 T 0 FF (vm_write) 368.036 229.65 T 5 FF ( \321 Cop) 408.576 229.65 T (y in a memory range.) 440.146 229.65 T 180 271.983337 360 3.024002 CR 0.25 SL 2 SC 540 273.5 M 180 273.5 L S 0 0 612 792 CR 7 (Times-Bold) 14 1 mymakefontmetric 7 FF (Memory Objects) 180.0 267.317 T 5 FF 180 291.67395 M 0.317795 0 32 (The Mach k) widthshow 228.855652 291.67395 M 0.317795 0 32 (ernel allo) widthshow 266.413574 291.67395 M 0.317795 0 32 (ws user mode tasks to pro) widthshow 371.452637 291.67395 M 0.317795 0 32 (vide the semantics associated with the act) widthshow 5 FF 180 303.673889 M 0.757095 0 32 (of referencing portions of a virtual address space. It does this by allo) widthshow 462.945312 303.673889 M 0.757095 0 32 (wing the speci\336ca-) widthshow 5 FF 180 315.673828 M 1.266129 0 32 (tion of an abstract ) widthshow 4 FF 259.494507 315.673828 M 1.266129 0 32 (memory object) widthshow 5 FF 319.910645 315.673828 M 1.266129 0 32 ( that represents the non-resident state of the memory) widthshow 180 327.673767 M 0.35228 0 32 (ranges back) widthshow 227.732346 327.673767 M 0.35228 0 32 (ed by this memory object. The task that implements this memory object \(that) widthshow 180 339.673706 M 0.540649 0 32 (responds to messages sent to the port that names the memory object\) is called a ) widthshow 4 FF 507.789764 339.673706 M 0.540649 0 32 (memory) widthshow (mana) 180.0 351.674 T (g) 202.12 351.674 T (er) 207.02 351.674 T 5 FF (.) 214.8 351.674 T 8 (Times-Bold) 12 1 mymakefontmetric 8 FF (Basic Manipulation) 180.0 383.007 T 5 FF 180 399.673523 M 1.338531 0 32 (Manipulation of a virtual address space by a user mode task tak) widthshow 448.743927 399.673523 M 1.338531 0 32 (es the follo) widthshow 495.611145 399.673523 M 1.338531 0 32 (wing basic) widthshow (form:) 180.0 411.673 T 3 FF 180.0 429.673 T 5 FF 193.535995 429.673401 M 0.305252 0 32 (A task establishes a ne) widthshow 285.04715 429.673401 M 0.305252 0 32 (w memory range, specifying a port to name the memory object) widthshow (that backs that range \() 193.536 441.673 T 4 FF (virtual_addr) 281.846 441.673 T (ess_space ) 332.036 441.673 T 5 FF ([) 374.526 441.673 T 4 FF (memory_r) 377.856 441.673 T (ang) 418.806 441.673 T (e) 433.706 441.673 T 5 FF (]) 438.146 441.673 T 4 FF ( ) 441.476 441.673 T 6 FF 443.976 441.673 T 0 FF (vm_map) 456.346 441.673 T 5 FF (\).) 493.566 441.673 T 3 FF 180.0 456.673 T 5 FF 193.535995 456.673279 M 0.47168 0 32 (The task attempts to reference a portion of this memory range \(most lik) widthshow 484.606232 456.673279 M 0.47168 0 32 (ely simply by) widthshow 193.535995 468.673218 M 1.736404 0 32 (touching it\). Since that portion does not yet e) widthshow 387.547302 468.673218 M 1.736404 0 32 (xist in memory) widthshow 450.930481 468.673218 M 1.736404 0 32 (, the referencing task) widthshow 193.535995 480.673157 M 1.540222 0 32 (tak) widthshow 205.656052 480.673157 M 1.540222 0 32 (es a page not resident f) widthshow 305.177246 480.673157 M 1.540222 0 32 (ault. The k) widthshow 351.207733 480.673157 M 1.540222 0 32 (ernel sends a message to the range\325) widthshow 500.969391 480.673157 M 1.540222 0 32 (s abstract) widthshow 193.535995 492.673096 M 0.751144 0 32 (memory object requesting the missing data. The reply from the abstract memory ob-) widthshow (ject resolv) 193.536 504.673 T (es the requesting task\325) 234.766 504.673 T (s page f) 323.366 504.673 T (ault.) 354.366 504.673 T 3 FF 180.0 519.673 T 5 FF 193.535995 519.672974 M 0.351059 0 32 (Ev) widthshow 204.496078 519.672974 M 0.351059 0 32 (entually) widthshow 236.066437 519.672974 M 0.351059 0 32 (, the resident pages of the memory range, with v) widthshow 431.996124 519.672974 M 0.351059 0 32 (alues possibly modi\336ed by) widthshow 193.535995 531.672913 M 0.898773 0 32 (client tasks, are e) widthshow 264.852478 531.672913 M 0.898773 0 32 (victed from memory) widthshow 348.210388 531.672913 M 0.898773 0 32 (. P) widthshow 359.519226 531.672913 M 0.898773 0 32 (ages are sent in messages to the range\325) widthshow 519.940979 531.672913 M 0.898773 0 32 (s ab-) widthshow (stract memory object for their disposition.) 193.536 543.673 T 3 FF 180.0 558.673 T 5 FF 193.535995 558.672791 M 0.931702 0 32 (The client task de-establishes the memory range \() widthshow 4 FF 398.62793 558.672791 M 0.931702 0 32 (virtual_addr) widthshow 448.818115 558.672791 M 0.931702 0 32 (ess_space ) widthshow 5 FF 492.239838 558.672791 M 0.931702 0 32 ([) widthshow 4 FF 495.569824 558.672791 M 0.931702 0 32 (memory_r-) widthshow 193.535995 570.672729 M 0.156433 0 32 (ang) widthshow 208.43605 570.672729 M 0.156433 0 32 (e) widthshow 5 FF 212.876053 570.672729 M 0.156433 0 32 (]) widthshow 4 FF 216.206055 570.672729 M 0.156433 0 32 ( ) widthshow 6 FF 218.862488 570.672729 M 0.156433 0 32 widthshow 0 FF 231.388916 570.672729 M 0.156433 0 32 (vm_deallocate) widthshow 5 FF 292.488922 570.672729 M 0.156433 0 32 (\). When all mappings of this memory object are gone, the ab-) widthshow (stract memory object is terminated.) 193.536 582.673 T 180 606.672607 M 0.824966 0 32 (The k) widthshow 203.775024 606.672607 M 0.824966 0 32 (ernel should be vie) widthshow 281.820068 606.672607 M 0.824966 0 32 (wed as using main memory as a \(directly accessible\) cache for) widthshow 180 618.672546 M 0.676376 0 32 (the contents of the v) widthshow 263.555664 618.672546 M 0.676376 0 32 (arious memory objects. The portion of this cache that contains resi-) widthshow 180 630.672485 M 0.629349 0 32 (dent pages for a memory object is referred to as the ) widthshow 4 FF 394.922852 630.672485 M 0.629349 0 32 (memory cac) widthshow 443.99231 630.672485 M 0.629349 0 32 (he) widthshow 5 FF 453.432312 630.672485 M 0.629349 0 32 ( object. The k) widthshow 510.210419 630.672485 M 0.629349 0 32 (ernel is) widthshow 180 642.672424 M 1.446075 0 32 (in) widthshow 187.380219 642.672424 M 1.446075 0 32 (v) widthshow 192.180328 642.672424 M 1.446075 0 32 (olv) widthshow 204.81041 642.672424 M 1.446075 0 32 (ed in a dialog with the v) widthshow 309.897003 642.672424 M 1.446075 0 32 (arious memory managers to maintain this cache, \336lling) widthshow 180 654.672363 M 0.083923 0 32 (and \337ushing this cache as the k) widthshow 304.833618 654.672363 M 0.083923 0 32 (ernel sees \336t. This dialog consists, in general, of asynchro-) widthshow 180 666.672302 M 0.397827 0 32 (nous messages, as the k) widthshow 276.201355 666.672302 M 0.397827 0 32 (ernel cannot be stalled by a memory manager) widthshow 460.486389 666.672302 M 0.397827 0 32 (, and memory man-) widthshow 180 678.672241 M 0.45665 0 32 (agers wish the maximum possible concurrenc) widthshow 364.603333 678.672241 M 0.45665 0 32 (y in their operations. The messages sent by) widthshow grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 45 45 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (41 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Memory Objects) 72.0 55.824 T 0.25 SL 3.86 setmiterlimit 0 SC 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 72 114.666626 M 0.21637 0 32 (the k) widthshow 91.836426 114.666626 M 0.21637 0 32 (ernel are sent via routines labeled as \322Serv) widthshow 263.431122 114.666626 M 0.21637 0 32 (er Interf) widthshow 296.027557 114.666626 M 0.21637 0 32 (aces\323 in the ) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 345.82666 114.666626 M 0.21637 0 32 (K) widthshow 352.146851 114.666626 M 0.21637 0 32 (ernel Interface) widthshow 3 FF 411.513245 114.666626 M 0.21637 0 32 ( doc-) widthshow (ument; messages sent by the memory managers are labelled as normal message functions.) 72.0 126.667 T 72 150.666504 M 0.580704 0 32 (The abstract memory object port speci\336ed in the client\325) widthshow 297.725952 150.666504 M 0.580704 0 32 (s ) widthshow 1 FF 304.696655 150.666504 M 0.580704 0 32 (vm_map) widthshow 3 FF 341.916656 150.666504 M 0.580704 0 32 ( call names a memory) widthshow 72 162.666443 M 0.712692 0 32 (manager task that implements the abstract memory object. Each abstract memory object) widthshow 72 174.666382 M 0.763809 0 32 (has an associated resident k) widthshow 185.485306 174.666382 M 0.763809 0 32 (ernel memory cache object that represents the cache of resi-) widthshow 72 186.666321 M 0.774612 0 32 (dent pages for that memory object. This memory cache object has an associated control) widthshow 72 198.66626 M 0.687973 0 32 (port which is supplied to the memory manager so that it may control the memory cache) widthshow 72 210.666199 M 0.16597 0 32 (object \(mostly to respond to k) widthshow 192.449905 210.666199 M 0.16597 0 32 (ernel requests on behalf of the object\). The k) widthshow 372.797729 210.666199 M 0.16597 0 32 (ernel also gen-) widthshow 72 222.666138 M 1.262924 0 32 (erates a name port for this memory cache object for use by client tasks to refer to the) widthshow 72 234.666077 M 2.233307 0 32 (memory cache object. It is this name port that is returned by ) widthshow 4 FF 341.819702 234.666077 M 2.233307 0 32 (virtual_addr) widthshow 392.009888 234.666077 M 2.233307 0 32 (ess_space) widthshow 3 FF 72 246.666016 M 1.195786 0 32 ([) widthshow 4 FF 75.330002 246.666016 M 1.195786 0 32 (memory_addr) widthshow 131.060211 246.666016 M 1.195786 0 32 (ess) widthshow 3 FF 143.280212 246.666016 M 1.195786 0 32 (]) widthshow 4 FF 146.610214 246.666016 M 1.195786 0 32 ( ) widthshow 5 (Symbol) 10 1 mymakefontmetric 5 FF 150.306 246.666016 M 1.195786 0 32 widthshow 1 FF 163.87178 246.666016 M 1.195786 0 32 (vm_r) widthshow 186.461884 246.666016 M 1.195786 0 32 (egion) widthshow 3 FF 209.241882 246.666016 M 1.195786 0 32 (. If an abstract memory object is mapped by tasks on) widthshow 72 258.665955 M 0.498734 0 32 (more than one host, there will be that man) widthshow 244.429962 258.665955 M 0.498734 0 32 (y control and name ports, one for the memory) widthshow (cache object on each host.) 72.0 270.666 T 72 294.665833 M 0.516891 0 32 (Each page in the memory cache object represents some of) widthshow 308.282196 294.665833 M 0.516891 0 32 (fset within the abstract memo-) widthshow 72 306.665771 M 1.554596 0 32 (ry object. This memory object of) widthshow 211.173126 306.665771 M 1.554596 0 32 (fset is the object of) widthshow 293.241638 306.665771 M 1.554596 0 32 (fset speci\336ed by the client in the) widthshow 1 FF 72 318.66571 M 0.012314 0 32 (vm_map) widthshow 3 FF 109.220001 318.66571 M 0.012314 0 32 ( call plus an inte) widthshow 174.669342 318.66571 M 0.012314 0 32 (gral multiple of the length of a page. Note that a client can spec-) widthshow 72 330.665649 M 0.879974 0 32 (ify an arbitrary of) widthshow 145.200073 330.665649 M 0.879974 0 32 (fset to ) widthshow 1 FF 174.180023 330.665649 M 0.879974 0 32 (vm_map) widthshow 3 FF 211.400024 330.665649 M 0.879974 0 32 (. Thus, a memory object may ha) widthshow 345.349976 330.665649 M 0.879974 0 32 (v) widthshow 350.200073 330.665649 M 0.879974 0 32 (e multiple copies of) widthshow 72 342.665619 M 0.892563 0 32 (its data in memory) widthshow 148.748047 342.665619 M 0.892563 0 32 (, for dif) widthshow 180.553314 342.665619 M 0.892563 0 32 (ferent of) widthshow 215.346024 342.665619 M 0.892563 0 32 (fset v) widthshow 237.928726 342.665619 M 0.892563 0 32 (alues speci\336ed by its clients. \(It is planned that) widthshow (this feature be remo) 72.0 354.666 T (v) 151.55 354.666 T (ed, restricting the client\325) 156.4 354.666 T (s of) 253.61 354.666 T (fsets to page boundaries.\)) 268.081 354.666 T 6 (Times-Bold) 12 1 mymakefontmetric 6 FF (New and Old Memory Managers) 72.0 385.999 T 3 FF 72 402.665558 M 0.118286 0 32 (Mach pro) widthshow 110.568375 402.665558 M 0.118286 0 32 (vides backw) widthshow 160.296722 402.665558 M 0.118286 0 32 (ard compatibility for \322old form\323 memory managers that do not sup-) widthshow 72 414.665497 M 0.374557 0 32 (port certain mechanisms that ha) widthshow 200.498352 414.665497 M 0.374557 0 32 (v) widthshow 205.348434 414.665497 M 0.374557 0 32 (e since been added. An old form memory manager does) widthshow (not ha) 72.0 426.665 T (v) 96.52 426.665 T (e support for:) 101.37 426.665 T 7 (Times-Roman) 7 1 mymakefontmetric 7 FF 72.0 444.665 T 3 FF (Multi-page operations) 85.536 444.665 T 7 FF 72.0 459.665 T 3 FF 85.536 459.665 T (w\)) 217.756 459.665 T 7 FF 72.0 474.665 T 3 FF (Message replies from data supply and attrib) 85.536 474.665 T (ute changes) 260.306 474.665 T 3 FF 72 498.665192 M -0.009308 0 32 (Because of these dif) widthshow 152.532227 498.665192 M -0.009308 0 32 (ferences in le) widthshow 205.573761 498.665192 M -0.009308 0 32 (v) widthshow 210.423843 498.665192 M -0.009308 0 32 (el of support, old memory managers use dif) widthshow 384.528839 498.665192 M -0.009308 0 32 (ferent inter-) widthshow 72 510.665131 M 0.178375 0 32 (f) widthshow 75.230057 510.665131 M 0.178375 0 32 (aces and recei) widthshow 131.416962 510.665131 M 0.178375 0 32 (v) widthshow 136.267044 510.665131 M 0.178375 0 32 (e dif) widthshow 154.24556 510.665131 M 0.178375 0 32 (ferent messages from the k) widthshow 262.609131 510.665131 M 0.178375 0 32 (ernel than do ne) widthshow 327.044403 510.665131 M 0.178375 0 32 (w memory managers. The) widthshow 72 522.665039 M 0.604248 0 32 (k) widthshow 76.900055 522.665039 M 0.604248 0 32 (ernel dif) widthshow 110.854446 522.665039 M 0.604248 0 32 (ferentiates between ne) widthshow 201.223099 522.665039 M 0.604248 0 32 (w and old memory managers on the basis of the form of) widthshow 72 534.665039 M 0.457794 0 32 (the \322I\325m ready\323 message sent to the k) widthshow 225.344635 534.665039 M 0.457794 0 32 (ernel as a response to the k) widthshow 335.741455 534.665039 M 0.457794 0 32 (ernel\325) widthshow 358.51178 534.665039 M 0.457794 0 32 (s ) widthshow 1 FF 365.359558 534.665039 M 0.457794 0 32 (memory_objec-) widthshow 72 546.664917 M 0.417938 0 32 (t_init) widthshow 3 FF 94.779999 546.664917 M 0.417938 0 32 ( message \(discussed belo) widthshow 196.043961 546.664917 M 0.417938 0 32 (w\). Ne) widthshow 223.422043 546.664917 M 0.417938 0 32 (w form memory managers reply with ) widthshow 1 FF 377.569702 546.664917 M 0.417938 0 32 (memory_ob-) widthshow (ject_r) 72.0 558.665 T (eady) 96.8 558.665 T 3 FF (; old form managers reply with ) 116.8 558.665 T 1 FF (memory_object_set_attrib) 243.45 558.665 T (utes) 355.99 558.665 T 3 FF (.) 373.21 558.665 T 6 FF (Memory Management Initialization) 72.0 589.998 T 3 FF 72 606.664795 M 0.607452 0 32 (When an abstract memory object is mapped on a gi) widthshow 282.457214 606.664795 M 0.607452 0 32 (v) widthshow 287.307312 606.664795 M 0.607452 0 32 (en host for the \336rst time, the k) widthshow 412.009521 606.664795 M 0.607452 0 32 (ernel) widthshow 3 FF 72 618.664734 M 0.144958 0 32 (sends a message to its abstract memory object \() widthshow 4 FF 263.1297 618.664734 M 0.144958 0 32 (abstr) widthshow 283.539764 618.664734 M 0.144958 0 32 (act_memory_object ) widthshow 5 FF 365.054749 618.664734 M 0.144958 0 32 widthshow 1 FF 377.569702 618.664734 M 0.144958 0 32 (memory_ob-) widthshow 72 630.664673 M 1.184998 0 32 (ject_init) widthshow 3 FF 106.990005 630.664673 M 1.184998 0 32 (\). This message informs the memory manager that the object is being mapped) widthshow 72 642.664612 M 0.326614 0 32 (on a ne) widthshow 101.283371 642.664612 M 0.326614 0 32 (w host. The message carries the names of the k) widthshow 292.412964 642.664612 M 0.326614 0 32 (ernel generated memory cache ob-) widthshow (ject control port and the memory object name port.) 72.0 654.665 T 3 FF 72 678.66449 M 0.032425 0 32 (If the memory manager responds with ) widthshow 4 FF 227.164566 678.66449 M 0.032425 0 32 (memory_cac) widthshow 278.104675 678.66449 M 0.032425 0 32 (he_object_contr) widthshow 342.644897 678.66449 M 0.032425 0 32 (ol ) widthshow 5 FF 352.957336 678.66449 M 0.032425 0 32 widthshow 1 FF 365.359741 678.66449 M 0.032425 0 32 (memory_objec-) widthshow 72 690.664429 M 1.794205 0 32 (t_r) widthshow 84.590103 690.664429 M 1.794205 0 32 (eady) widthshow 3 FF 103.94046 690.664429 M 1.794205 0 32 (, this indicates to the k) widthshow 202.811539 690.664429 M 1.794205 0 32 (ernel that this is a \322ne) widthshow 298.462708 690.664429 M 1.794205 0 32 (w form\323 memory manager) widthshow 409.65564 690.664429 M 1.794205 0 32 (. The) widthshow 52 377.998932 2 12 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 46 46 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (42 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (V) 180.0 55.824 T (irtual Memory Management) 186.165 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 0 FF 180 112.650635 M 1.01593 0 32 (memory_object_r) widthshow 255.900116 112.650635 M 1.01593 0 32 (eady) widthshow 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 275.900116 112.650635 M 1.01593 0 32 ( call also allo) widthshow 331.748047 112.650635 M 1.01593 0 32 (ws the speci\336cation of the \322object cache\323 attrib) widthshow 527.779663 112.650635 M 1.01593 0 32 (ute) widthshow 180 124.650574 M 2.031631 0 32 (and the cop) widthshow 230.063324 124.650574 M 2.031631 0 32 (y strate) widthshow 261.105042 124.650574 M 2.031631 0 32 (gy \(discussed belo) widthshow 338.798462 124.650574 M 2.031631 0 32 (w\). These attrib) widthshow 405.701843 124.650574 M 2.031631 0 32 (utes may later be changed with) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 180 136.650513 M 3.899841 0 32 (memory_cac) widthshow 230.940094 136.650513 M 3.899841 0 32 (he_object_contr) widthshow 295.480347 136.650513 M 3.899841 0 32 (ol ) widthshow 5 (Symbol) 10 1 mymakefontmetric 5 FF 309.660187 136.650513 M 3.899841 0 32 widthshow 0 FF 325.930023 136.650513 M 3.899841 0 32 (memory_object_change_attrib) widthshow 456.81015 136.650513 M 3.899841 0 32 (utes ) widthshow 3 FF 480.429993 136.650513 M 3.899841 0 32 (and e) widthshow 505.559937 136.650513 M 3.899841 0 32 (xamined) widthshow (with ) 180.0 148.65 T 4 FF (memory_cac) 200.28 148.65 T (he_object_contr) 251.22 148.65 T (ol ) 315.76 148.65 T 5 FF 326.04 148.65 T 0 FF (memory_object_get_attrib) 338.41 148.65 T (utes) 452.06 148.65 T 3 FF (. ) 469.28 148.65 T 180 172.650391 M 0.726929 0 32 (Alternately) widthshow 224.340363 172.650391 M 0.726929 0 32 (, the memory manager can respond with the old call ) widthshow 4 FF 441.84967 172.650391 M 0.726929 0 32 (memory_cac) widthshow 492.789764 172.650391 M 0.726929 0 32 (he_object_-) widthshow 180 184.65033 M 1.614944 0 32 (contr) widthshow 200.660248 184.65033 M 1.614944 0 32 (ol ) widthshow 5 FF 212.555191 184.65033 M 1.614944 0 32 widthshow 0 FF 226.540131 184.65033 M 1.614944 0 32 (memory_object_set_attrib) widthshow 339.080261 184.65033 M 1.614944 0 32 (utes) widthshow 3 FF 356.300262 184.65033 M 1.614944 0 32 (, which can also set the \322object cache\323 and) widthshow 180 196.650269 M 0.877945 0 32 (cop) widthshow 194.340057 196.650269 M 0.877945 0 32 (y strate) widthshow 224.228088 196.650269 M 0.877945 0 32 (gy attrib) widthshow 258.516144 196.650269 M 0.877945 0 32 (utes. This call also allo) widthshow 353.718079 196.650269 M 0.877945 0 32 (ws a \322ready\323 attrib) widthshow 431.402039 196.650269 M 0.877945 0 32 (ute to be set; doing so has) widthshow 180 208.650208 M 0.692093 0 32 (the same ef) widthshow 226.674332 208.650208 M 0.692093 0 32 (fect as ) widthshow 0 FF 256.37854 208.650208 M 0.692093 0 32 (memory_object_r) widthshow 332.278625 208.650208 M 0.692093 0 32 (eady) widthshow 3 FF 352.278625 208.650208 M 0.692093 0 32 ( b) widthshow 360.270844 208.650208 M 0.692093 0 32 (ut indicates to the k) widthshow 441.269287 208.650208 M 0.692093 0 32 (ernel that this is an \322old) widthshow (form\323 memory manager) 180.0 220.65 T (.) 276.09 220.65 T 180 244.650085 M 1.120636 0 32 (These calls inform the k) widthshow 281.032593 244.650085 M 1.120636 0 32 (ernel that the memory manager is no) widthshow 434.146576 244.650085 M 1.120636 0 32 (w ready to respond to re-) widthshow 3 FF (quests on behalf of this memory object.) 180.0 256.65 T 6 (Times-Bold) 12 1 mymakefontmetric 6 FF (Basic P) 180.0 287.983 T (age Manipulation) 217.548 287.983 T 3 FF 180 304.649902 M 0.082169 0 32 (The k) widthshow 203.032227 304.649902 M 0.082169 0 32 (ernel requests data for memory with ) widthshow 4 FF 350.715271 304.649902 M 0.082169 0 32 (abstr) widthshow 371.125336 304.649902 M 0.082169 0 32 (act_memory_object ) widthshow 5 FF 452.577515 304.649902 M 0.082169 0 32 widthshow 0 FF 465.029663 304.649902 M 0.082169 0 32 (memory_object_-) widthshow 180 316.649841 M 1.770782 0 32 (data_r) widthshow 208.150101 316.649841 M 1.770782 0 32 (equest) widthshow 3 FF 235.370102 316.649841 M 1.770782 0 32 (. It will only request single pages from old form memory managers b) widthshow 532.219604 316.649841 M 1.770782 0 32 (ut) widthshow 3 FF 180 328.64978 M 1.280624 0 32 (may request multiple pages from a ne) widthshow 337.963898 328.64978 M 1.280624 0 32 (w form manager) widthshow 406.06546 328.64978 M 1.280624 0 32 (. \(It has been proposed to add a) widthshow 3 FF 180 340.649719 M 0.329926 0 32 (ne) widthshow 189.19014 340.649719 M 0.329926 0 32 (w attrib) widthshow 220.150177 340.649719 M 0.329926 0 32 (ute \(to ) widthshow 0 FF 249.14003 340.649719 M 0.329926 0 32 (memory_object_set_attrib) widthshow 361.680176 340.649719 M 0.329926 0 32 (utes) widthshow 3 FF 378.900146 340.649719 M 0.329926 0 32 (\) that w) widthshow 410.010071 340.649719 M 0.329926 0 32 (ould allo) widthshow 445.370117 340.649719 M 0.329926 0 32 (w an old form manager) widthshow (to request the k) 180.0 352.65 T (ernel to send multi-page requests.\)) 241.28 352.65 T 180 376.649597 M 0.366592 0 32 (The memory manager supplies the requested data with ) widthshow 4 FF 404.002747 376.649597 M 0.366592 0 32 (memory_cac) widthshow 454.942871 376.649597 M 0.366592 0 32 (he_object_contr) widthshow 519.483093 376.649597 M 0.366592 0 32 (ol ) widthshow 5 FF 530.1297 376.649597 M 0.366592 0 32 widthshow 0 FF 180 388.649536 M 1.286575 0 32 (memory_object_data_supply) widthshow 3 FF 303.880005 388.649536 M 1.286575 0 32 ( \(ne) widthshow 320.186707 388.649536 M 1.286575 0 32 (w form\) or ) widthshow 4 FF 369.866455 388.649536 M 1.286575 0 32 (memory_cac) widthshow 420.806549 388.649536 M 1.286575 0 32 (he_object_contr) widthshow 485.346802 388.649536 M 1.286575 0 32 (ol ) widthshow 5 FF 496.913391 388.649536 M 1.286575 0 32 widthshow 3 FF 506.783386 388.649536 M 1.286575 0 32 ( ) widthshow 0 FF 510.569946 388.649536 M 1.286575 0 32 (memo-) widthshow 180 400.649475 M 0.473938 0 32 (ry_object_data_pr) widthshow 259.250122 400.649475 M 0.473938 0 32 (o) widthshow 264.150146 400.649475 M 0.473938 0 32 (vided) widthshow 3 FF 287.490173 400.649475 M 0.473938 0 32 ( \(old form\). These calls also supply the maximum allo) widthshow 508.155762 400.649475 M 0.473938 0 32 (wed ac-) widthshow 3 FF 180 412.649414 M 0.199966 0 32 (cesses for the data. If the memory manager cannot supply the data because of some error) widthshow 537.499756 412.649414 M 0.199966 0 32 (,) widthshow 180 424.649353 M 2.523193 0 32 (it responds with ) widthshow 4 FF 253.959579 424.649353 M 2.523193 0 32 (memory_cac) widthshow 304.899658 424.649353 M 2.523193 0 32 (he_object_contr) widthshow 369.439941 424.649353 M 2.523193 0 32 (ol ) widthshow 5 FF 382.243103 424.649353 M 2.523193 0 32 widthshow 3 FF 392.113098 424.649353 M 2.523193 0 32 ( ) widthshow 0 FF 397.136292 424.649353 M 2.523193 0 32 (memory_object_data_err) widthshow 505.806427 424.649353 M 2.523193 0 32 (or) widthshow 3 FF 514.696716 424.649353 M 2.523193 0 32 (. This) widthshow 180 436.649292 M 0.219269 0 32 (causes the k) widthshow 228.6586 436.649292 M 0.219269 0 32 (ernel to cause an) widthshow 296.086487 436.649292 M 0.219269 0 32 (y threads w) widthshow 342.525085 436.649292 M 0.219269 0 32 (aiting for this data to tak) widthshow 441.571503 436.649292 M 0.219269 0 32 (e memory f) widthshow 488.010101 436.649292 M 0.219269 0 32 (ailure e) widthshow 517.789429 436.649292 M 0.219269 0 32 (xcep-) widthshow 180 448.649231 M 0.521042 0 32 (tions. The memory manager can alternately reply with ) widthshow 4 FF 403.848358 448.649231 M 0.521042 0 32 (memory_cac) widthshow 454.788452 448.649231 M 0.521042 0 32 (he_object_contr) widthshow 519.328735 448.649231 M 0.521042 0 32 (ol ) widthshow 5 FF 530.129761 448.649231 M 0.521042 0 32 widthshow 0 FF 180 460.64917 M 0.24295 0 32 (memory_object_data_una) widthshow 291.400146 460.64917 M 0.24295 0 32 (v) widthshow 296.300201 460.64917 M 0.24295 0 32 (ailable) widthshow 3 FF 324.640198 460.64917 M 0.24295 0 32 (. In this case, the k) widthshow 400.465027 460.64917 M 0.24295 0 32 (ernel supplies the missing data) widthshow 0 FF 524.206787 460.64917 M 0.24295 0 32 (, ) widthshow 3 FF 529.449768 460.64917 M 0.24295 0 32 (ei-) widthshow 180 472.649109 M 0.258789 0 32 (ther zeroes, or a cop) widthshow 261.735229 472.649109 M 0.258789 0 32 (y of data in the case where the k) widthshow 392.555603 472.649109 M 0.258789 0 32 (ernel w) widthshow 422.424469 472.649109 M 0.258789 0 32 (as performing an object cop) widthshow 534.999695 472.649109 M 0.258789 0 32 (y) widthshow (\(discussed belo) 180.0 484.649 T (w\).) 241.13 484.649 T 3 FF 180 508.648987 M 0.736877 0 32 (When the k) widthshow 227.473816 508.648987 M 0.736877 0 32 (ernel decides to \337ush some memory pages belonging to this memory object,) widthshow 180 520.648926 M 0.652618 0 32 (the modi\336ed pages are sent as out-of-line data in a message to the memory manager via) widthshow 4 FF 180 532.648865 M 0.366547 0 32 (abstr) widthshow 200.41008 532.648865 M 0.366547 0 32 (act_memory_object ) widthshow 5 FF 282.146637 532.648865 M 0.366547 0 32 widthshow 0 FF 294.883179 532.648865 M 0.366547 0 32 (memory_object_data_r) widthshow 394.673279 532.648865 M 0.366547 0 32 (etur) widthshow 412.293396 532.648865 M 0.366547 0 32 (n) widthshow 3 FF 417.853394 532.648865 M 0.366547 0 32 ( \(ne) widthshow 433.240051 532.648865 M 0.366547 0 32 (w form\) or ) widthshow 4 FF 480.159729 532.648865 M 0.366547 0 32 (abstr) widthshow 500.569794 532.648865 M 0.366547 0 32 (act_mem-) widthshow 180 544.648804 M 1.308975 0 32 (ory_object ) widthshow 5 FF 226.578979 544.648804 M 1.308975 0 32 widthshow 0 FF 240.25795 544.648804 M 1.308975 0 32 (memory_object_data_write) widthshow 3 FF 357.997986 544.648804 M 1.308975 0 32 ( \(old form\). In this process, the k) widthshow 498.430847 544.648804 M 1.308975 0 32 (ernel con-) widthshow 3 FF 180 556.648743 M 0.71579 0 32 (v) widthshow 184.850082 556.648743 M 0.71579 0 32 (erts the ph) widthshow 227.891693 556.648743 M 0.71579 0 32 (ysical memory pages from being resident pages associated with the memory) widthshow 180 568.648682 M 0.262222 0 32 (object to being \322normal\323 pages associated with the def) widthshow 400.287842 568.648682 M 0.262222 0 32 (ault memory manager) widthshow 488.022614 568.648682 M 0.262222 0 32 (. In this w) widthshow 528.709351 568.648682 M 0.262222 0 32 (ay) widthshow 537.499695 568.648682 M 0.262222 0 32 (,) widthshow 180 580.648621 M 1.886902 0 32 (if the memory manager cannot mo) widthshow 327.314606 580.648621 M 1.886902 0 32 (v) widthshow 332.164673 580.648621 M 1.886902 0 32 (e these pages to their destination in a reasonable) widthshow 180 592.64856 M 2.474136 0 32 (time, the k) widthshow 227.348328 592.64856 M 2.474136 0 32 (ernel can e) widthshow 275.35675 592.64856 M 2.474136 0 32 (vict these \322normal\323 pages using the def) widthshow 447.291626 592.64856 M 2.474136 0 32 (ault memory manager) widthshow 180 604.648499 M 1.069977 0 32 (\(which will page them to paging storage\) while still allo) widthshow 413.529938 604.648499 M 1.069977 0 32 (wing the memory manager ac-) widthshow 180 616.648438 M 0.759079 0 32 (cess to them. Normally) widthshow 274.397583 616.648438 M 0.759079 0 32 (, though, the memory manager will cop) widthshow 436.612122 616.648438 M 0.759079 0 32 (y these pages some) widthshow 515.569519 616.648438 M 0.759079 0 32 (where) widthshow 180 628.648376 M 0.815659 0 32 (\(probably send them to some de) widthshow 311.868439 628.648376 M 0.815659 0 32 (vice or \336le system\) and then use ) widthshow 0 FF 448.948059 628.648376 M 0.815659 0 32 (vm_deallocate) widthshow 3 FF 510.048065 628.648376 M 0.815659 0 32 ( to free) widthshow (them from its address space, as one w) 180.0 640.648 T (ould an) 330.98 640.648 T (y out-of-line memory recei) 360.55 640.648 T (v) 468.33 640.648 T (ed.) 473.18 640.648 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 47 47 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (43 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Memory Objects) 72.0 55.824 T 0.25 SL 3.86 setmiterlimit 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Bold) 12 1 mymakefontmetric 3 FF (Memory Object T) 72.0 116.0 T (ermination) 163.537 116.0 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 72 132.66658 M 1.701508 0 32 (When all tasks remo) widthshow 158.884613 132.66658 M 1.701508 0 32 (v) widthshow 163.734695 132.66658 M 1.701508 0 32 (e their mappings for the memory object, the k) widthshow 360.276825 132.66658 M 1.701508 0 32 (ernel informs the) widthshow 72 144.66655 M 0.727112 0 32 (memory manager with ) widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 167.221344 144.66655 M 0.727112 0 32 (abstr) widthshow 187.631424 144.66655 M 0.727112 0 32 (act_memory_object ) widthshow 6 (Symbol) 10 1 mymakefontmetric 6 FF 269.728546 144.66655 M 0.727112 0 32 widthshow 1 FF 282.825653 144.66655 M 0.727112 0 32 (memory_object_terminate) widthshow 4 FF 396.115662 144.66655 M 0.727112 0 32 ( \(c.f. ob-) widthshow 72 156.666534 M 0.378601 0 32 (ject cacheability belo) widthshow 157.48735 156.666534 M 0.378601 0 32 (w\). The k) widthshow 196.744614 156.666534 M 0.378601 0 32 (ernel e) widthshow 223.80336 156.666534 M 0.378601 0 32 (victs all pages of the object \(unless the object has a) widthshow 4 FF 72 168.666519 M 0.105591 0 32 (cop) widthshow 86.340057 168.666519 M 0.105591 0 32 (y strate) widthshow 115.455734 168.666519 M 0.105591 0 32 (gy of MEMOR) widthshow 176.127274 168.666519 M 0.105591 0 32 (Y_OBJECT_COPY_TEMPORAR) widthshow 315.48761 168.666519 M 0.105591 0 32 (Y\) prior to actually terminat-) widthshow 4 FF (ing the memory cache object \(and sending the terminate message\).) 72.0 180.667 T 72 204.666458 M 0.059845 0 32 (Alternati) widthshow 107.30014 204.666458 M 0.059845 0 32 (v) widthshow 112.150223 204.666458 M 0.059845 0 32 (ely) widthshow 123.720581 204.666458 M 0.059845 0 32 (, the memory manager can call ) widthshow 5 FF 249.879669 204.666458 M 0.059845 0 32 (memory_cac) widthshow 300.819763 204.666458 M 0.059845 0 32 (he_object_contr) widthshow 365.360016 204.666458 M 0.059845 0 32 (ol ) widthshow 6 FF 375.69986 204.666458 M 0.059845 0 32 widthshow 4 FF 385.569855 204.666458 M 0.059845 0 32 ( ) widthshow 1 FF 388.1297 204.666458 M 0.059845 0 32 (memory_-) widthshow 72 216.666397 M 1.371613 0 32 (object_destr) widthshow 124.580109 216.666397 M 1.371613 0 32 (oy) widthshow 4 FF 134.580109 216.666397 M 1.371613 0 32 ( to e) widthshow 154.393417 216.666397 M 1.371613 0 32 (xplicitly shut do) widthshow 221.896774 216.666397 M 1.371613 0 32 (wn the memory object. All resident pages are dis-) widthshow 72 228.666336 M 1.932098 0 32 (carded and no more acti) widthshow 175.558548 228.666336 M 1.932098 0 32 (vity will be allo) widthshow 244.164978 228.666336 M 1.932098 0 32 (wed for the memory object. The k) widthshow 392.017639 228.666336 M 1.932098 0 32 (ernel will) widthshow 72 240.666275 M 0.661621 0 32 (respond with ) widthshow 5 FF 127.763245 240.666275 M 0.661621 0 32 (abstr) widthshow 148.173325 240.666275 M 0.661621 0 32 (act_memory_object ) widthshow 6 FF 230.204956 240.666275 M 0.661621 0 32 widthshow 1 FF 243.236572 240.666275 M 0.661621 0 32 (memory_object_terminate) widthshow 4 FF 356.526611 240.666275 M 0.661621 0 32 (. De-allocating the) widthshow 72 252.666214 M 0.785751 0 32 (abstract memory object port also has this ef) widthshow 251.390411 252.666214 M 0.785751 0 32 (fect \(although, ob) widthshow 323.632019 252.666214 M 0.785751 0 32 (viously) widthshow 352.432373 252.666214 M 0.785751 0 32 (, no terminate mes-) widthshow (sage can be sent in this case\). In either case, the k) 72.0 264.666 T (ernel discards all pages.) 269.9 264.666 T 4 FF 72 288.666077 M 0.21228 0 32 (One of the object attrib) widthshow 165.409241 288.666077 M 0.21228 0 32 (utes set when the memory object is initialized by ) widthshow 1 FF 365.359772 288.666077 M 0.21228 0 32 (memory_objec-) widthshow 72 300.666016 M 4.434235 0 32 (t_r) widthshow 84.590103 300.666016 M 4.434235 0 32 (eady) widthshow 4 FF 104.590103 300.666016 M 4.434235 0 32 ( or ) widthshow 1 FF 126.788574 300.666016 M 4.434235 0 32 (memory_object_set_attrib) widthshow 239.328705 300.666016 M 4.434235 0 32 (utes) widthshow 4 FF 256.548706 300.666016 M 4.434235 0 32 (, or thereafter altered by ) widthshow 1 FF 377.569885 300.666016 M 4.434235 0 32 (memory_ob-) widthshow 72 312.665955 M 5.406601 0 32 (ject_change_attrib) widthshow 151.780121 312.665955 M 5.406601 0 32 (utes) widthshow 4 FF 169.000122 312.665955 M 5.406601 0 32 ( or ) widthshow 1 FF 193.143326 312.665955 M 5.406601 0 32 (memory_object_set_attrib) widthshow 305.683472 312.665955 M 5.406601 0 32 (utes) widthshow 4 FF 322.903442 312.665955 M 5.406601 0 32 (, is the \322object cache\323) widthshow 72 324.665894 M 1.06842 0 32 (attrib) widthshow 92.91011 324.665894 M 1.06842 0 32 (ute. W) widthshow 120.238754 324.665894 M 1.06842 0 32 (ith this attrib) widthshow 173.2957 324.665894 M 1.06842 0 32 (ute set, instead of terminating a memory object when all map-) widthshow 72 336.665833 M 0.263519 0 32 (pings are remo) widthshow 131.807129 336.665833 M 0.263519 0 32 (v) widthshow 136.657211 336.665833 M 0.263519 0 32 (ed \(thereby e) widthshow 189.134399 336.665833 M 0.263519 0 32 (victing all cache pages\), the memory object is entered into a) widthshow 72 348.665771 M 1.637833 0 32 (\(small\) k) widthshow 109.367889 348.665771 M 1.637833 0 32 (ernel object cache. If some task maps the object during this time, the object) widthshow 72 360.66571 M 0.292465 0 32 (stays ali) widthshow 104.542603 360.66571 M 0.292465 0 32 (v) widthshow 109.392685 360.66571 M 0.292465 0 32 (e \(with no additional ) widthshow 1 FF 196.112549 360.66571 M 0.292465 0 32 (memory_object_init) widthshow 4 FF 282.202576 360.66571 M 0.292465 0 32 ( message\). If no task maps the object) widthshow 72 372.665649 M 1.492615 0 32 (before the object lea) widthshow 157.63797 372.665649 M 1.492615 0 32 (v) widthshow 162.488052 372.665649 M 1.492615 0 32 (es the object cache, it is then terminated. If the object cache at-) widthshow 72 384.665588 M 0.473557 0 32 (trib) widthshow 85.690109 384.665588 M 0.473557 0 32 (ute is cleared while the memory object is in this un-mapped state, the memory object) widthshow 72 396.665527 M 0.766602 0 32 (will be promptly terminated. Since this attrib) widthshow 256.11972 396.665527 M 0.766602 0 32 (ute change can ha) widthshow 329.579651 396.665527 M 0.766602 0 32 (v) widthshow 334.429749 396.665527 M 0.766602 0 32 (e this ef) widthshow 367.373077 396.665527 M 0.766602 0 32 (fect, ) widthshow 1 FF 388.1297 396.665527 M 0.766602 0 32 (memory_-) widthshow 72 408.665466 M 2.456207 0 32 (object_change_attrib) widthshow 162.340118 408.665466 M 2.456207 0 32 (utes) widthshow 4 FF 179.56012 408.665466 M 2.456207 0 32 ( can optionally return a reply \() widthshow 5 FF 315.937378 408.665466 M 2.456207 0 32 (r) widthshow 319.457581 408.665466 M 2.456207 0 32 (eply_port ) widthshow 6 FF 362.743774 408.665466 M 2.456207 0 32 widthshow 1 FF 377.570007 408.665466 M 2.456207 0 32 (memory_ob-) widthshow (ject_change_completed) 72.0 420.665 T 4 FF (\) which can be used for synchronization.) 171.42 420.665 T 3 FF (Pr) 72.0 451.999 T (ecious P) 84.444 451.999 T (ages) 125.988 451.999 T 4 FF 72 468.665314 M 0.953064 0 32 (In the basic data management protocol, the k) widthshow 257.981506 468.665314 M 0.953064 0 32 (ernel only returns to the memory manager) widthshow 72 480.665253 M 0.760681 0 32 (pages that ha) widthshow 125.531479 480.665253 M 0.760681 0 32 (v) widthshow 130.381561 480.665253 M 0.760681 0 32 (e been modi\336ed while in the ph) widthshow 260.995667 480.665253 M 0.760681 0 32 (ysical memory cache. When e) widthshow 384.028564 480.665253 M 0.760681 0 32 (victed, pure) widthshow 4 FF 72 492.665192 M 1.023285 0 32 (\(un-modi\336ed\) pages are discarded on the assumption that the memory manager holds a) widthshow 4 FF 72 504.665131 M 0.295898 0 32 (cop) widthshow 86.340057 504.665131 M 0.295898 0 32 (y) widthshow 90.690414 504.665131 M 0.295898 0 32 (. F) widthshow 101.396393 504.665131 M 0.295898 0 32 (or the e) widthshow 131.828278 504.665131 M 0.295898 0 32 (xample of a mapped \336le memory manager that uses disk \(\336les\) as backing) widthshow 72 516.665039 M 1.12999 0 32 (store and for which space is al) widthshow 199.76001 516.665039 M 1.12999 0 32 (w) widthshow 206.880066 516.665039 M 1.12999 0 32 (ays allocated on backing storage for each page, this is) widthshow 72 528.665039 M 0.835754 0 32 (the most reasonable approach. Ho) widthshow 210.893173 528.665039 M 0.835754 0 32 (we) widthshow 222.303314 528.665039 M 0.835754 0 32 (v) widthshow 227.153397 528.665039 M 0.835754 0 32 (er) widthshow 234.523621 528.665039 M 0.835754 0 32 (, for managers that use virtual memory as back-) widthshow 72 540.664917 M 0.411377 0 32 (ing store \(as does the netw) widthshow 180.32695 540.664917 M 0.411377 0 32 (ork shared memory serv) widthshow 278.331177 540.664917 M 0.411377 0 32 (er or other specialized serv) widthshow 387.566772 540.664917 M 0.411377 0 32 (ers\), this is) widthshow 72 552.664917 M 0.632431 0 32 (inef) widthshow 87.30014 552.664917 M 0.632431 0 32 widthshow 229.864792 552.664917 M 0.632431 0 32 (ernel hold the page while it is in use. By specify-) widthshow 4 FF 72 564.664795 M 0.64064 0 32 (ing a page as \322precious\323 when supplying it to the k) widthshow 282.166473 564.664795 M 0.64064 0 32 (ernel, the memory manager need not) widthshow 72 576.664795 M 0.217972 0 32 (hold a cop) widthshow 113.996002 576.664795 M 0.217972 0 32 (y; the k) widthshow 144.332001 576.664795 M 0.217972 0 32 (ernel commits to returning the page when e) widthshow 319.187958 576.664795 M 0.217972 0 32 (victed. This ability to speci-) widthshow 72 588.664673 M 0.256195 0 32 (fy pages as precious is made a) widthshow 194.417297 588.664673 M 0.256195 0 32 (v) widthshow 199.167435 588.664673 M 0.256195 0 32 (ailable to ne) widthshow 248.309967 588.664673 M 0.256195 0 32 (w form memory managers as an option to the) widthshow 1 FF 72 600.664673 M 0.424988 0 32 (memory_object_data_supply) widthshow 4 FF 195.880005 600.664673 M 0.424988 0 32 ( call. The memory manager can be informed of the accep-) widthshow 72 612.664551 M 0.535278 0 32 (tance of these pages by requesting a reply from the data supply call. This reply) widthshow 393.504272 612.664551 M 0.535278 0 32 (, ) widthshow 5 FF 399.039551 612.664551 M 0.535278 0 32 (r) widthshow 402.559753 612.664551 M 0.535278 0 32 (eply_to) widthshow 6 FF 72 624.664551 M 0.686218 0 32 widthshow 1 FF 85.056213 624.664551 M 0.686218 0 32 (memory_object_supply_completed) widthshow 4 FF 233.926224 624.664551 M 0.686218 0 32 ( indicates which pages were accepted. The reply) widthshow 72 636.664429 M 0.836639 0 32 (will follo) widthshow 109.536774 636.664429 M 0.836639 0 32 (w all data return messages resulting from rejected supplied pages. The ) widthshow 1 FF 402.569824 636.664429 M 0.836639 0 32 (memo-) widthshow 72 648.664429 M 1.704941 0 32 (ry_object_data_r) widthshow 145.690109 648.664429 M 1.704941 0 32 (etur) widthshow 163.310196 648.664429 M 1.704941 0 32 (n) widthshow 4 FF 168.870193 648.664429 M 1.704941 0 32 ( messages will return both modi\336ed pages as well as precious) widthshow (pages \(with a \337ag indicating the case\).) 72.0 660.664 T 52 161.999863 2 9.999985 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 48 48 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (44 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (V) 180.0 55.824 T (irtual Memory Management) 186.165 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Bold) 12 1 mymakefontmetric 3 FF (Dir) 180.0 113.984 T (ect Cache Manipulation) 197.112 113.984 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 180 130.650589 M 0.420685 0 32 (Sometimes the memory manager needs to force \337ush pages, or to alter protections or the) widthshow 180 142.650528 M 2.228699 0 32 (lik) widthshow 190.460052 142.650528 M 2.228699 0 32 (e. This is done with the ) widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 299.662231 142.650528 M 2.228699 0 32 (memory_cac) widthshow 350.602356 142.650528 M 2.228699 0 32 (he_object_contr) widthshow 415.142578 142.650528 M 2.228699 0 32 (ol ) widthshow 6 (Symbol) 10 1 mymakefontmetric 6 FF 427.651306 142.650528 M 2.228699 0 32 widthshow 4 FF 437.521301 142.650528 M 2.228699 0 32 ( ) widthshow 0 FF 442.25 142.650528 M 2.228699 0 32 (memory_object_lock_-) widthshow 180 154.650467 M 0.580673 0 32 (r) widthshow 184.260101 154.650467 M 0.580673 0 32 (equest) widthshow 4 FF 211.480103 154.650467 M 0.580673 0 32 ( call. This call informs the k) widthshow 327.354187 154.650467 M 0.580673 0 32 (ernel of the operations to be performed. When com-) widthshow 180 166.650406 M 1.06105 0 32 (pleted, the k) widthshow 231.182159 166.650406 M 1.06105 0 32 (ernel replies with ) widthshow 5 FF 306.295319 166.650406 M 1.06105 0 32 (r) widthshow 309.815521 166.650406 M 1.06105 0 32 (eply_port ) widthshow 6 FF 351.706573 166.650406 M 1.06105 0 32 widthshow 4 FF 361.576569 166.650406 M 1.06105 0 32 ( ) widthshow 0 FF 365.137634 166.650406 M 1.06105 0 32 (memory_object_lock_completed) widthshow 4 FF 503.437622 166.650406 M 1.06105 0 32 ( \(using a) widthshow (reply port named in the ) 180.0 178.65 T 0 FF (memory_object_lock_r) 275.82 178.65 T (equest) 374.5 178.65 T 4 FF ( call\).) 401.72 178.65 T 180 202.650284 M 0.797729 0 32 (The main purpose of ) widthshow 0 FF 268.730927 202.650284 M 0.797729 0 32 (memory_object_lock_r) widthshow 367.411041 202.650284 M 0.797729 0 32 (equest) widthshow 4 FF 394.631042 202.650284 M 0.797729 0 32 ( is to support memory management) widthshow 180 214.650223 M 0.860748 0 32 (protocols that in) widthshow 246.321716 214.650223 M 0.860748 0 32 (v) widthshow 251.121826 214.650223 M 0.860748 0 32 (olv) widthshow 263.751892 214.650223 M 0.860748 0 32 (e setting and re) widthshow 326.904297 214.650223 M 0.860748 0 32 (v) widthshow 331.704407 214.650223 M 0.860748 0 32 (oking access to pages \(such as distrib) widthshow 486.08902 214.650223 M 0.860748 0 32 (uted memory) widthshow 180 226.650162 M 0.5233 0 32 (serv) widthshow 196.510086 226.650162 M 0.5233 0 32 (ers, or transaction protected memory\). If a thread attempts to access a page in a w) widthshow 530.559692 226.650162 M 0.5233 0 32 (ay) widthshow 180 238.650101 M 1.78299 0 32 (not currently permitted \(as established by the permissions set with ) widthshow 0 FF 465.029907 238.650101 M 1.78299 0 32 (memory_object_-) widthshow 180 250.65004 M 2.206604 0 32 (data_pr) widthshow 213.710098 250.65004 M 2.206604 0 32 (o) widthshow 218.610153 250.65004 M 2.206604 0 32 (vided) widthshow 4 FF 241.95015 250.65004 M 2.206604 0 32 ( or ) widthshow 0 FF 259.693359 250.65004 M 2.206604 0 32 (memory_object_data_supply) widthshow 4 FF 383.573364 250.65004 M 2.206604 0 32 (\), the k) widthshow 415.936646 250.65004 M 2.206604 0 32 (ernel sends a message to the) widthshow 4 FF 180 262.649963 M 2.786636 0 32 (memory manager with ) widthshow 5 FF 281.399902 262.649963 M 2.786636 0 32 (abstr) widthshow 301.809998 262.649963 M 2.786636 0 32 (act_memory_object ) widthshow 6 FF 385.966644 262.649963 M 2.786636 0 32 widthshow 0 FF 401.123291 262.649963 M 2.786636 0 32 (memory_object_data_unlock) widthshow 4 FF 525.553284 262.649963 M 2.786636 0 32 (. If) widthshow 180 274.649902 M 3.092194 0 32 (the memory manager honors this request, it responds with ) widthshow 0 FF 442.249756 274.649902 M 3.092194 0 32 (memory_object_lock_-) widthshow 180 286.649841 M 0.065308 0 32 (r) widthshow 184.260101 286.649841 M 0.065308 0 32 (equest) widthshow 4 FF 211.480103 286.649841 M 0.065308 0 32 ( to specify the ne) widthshow 279.811462 286.649841 M 0.065308 0 32 (w allo) widthshow 304.346924 286.649841 M 0.065308 0 32 (wed permissions. W) widthshow 385.457764 286.649841 M 0.065308 0 32 (ith a single client, the memory manag-) widthshow 180 298.64978 M 7.808258 0 32 (er can refuse the request by ha) widthshow 348.269684 298.64978 M 7.808258 0 32 (ving the k) widthshow 403.786255 298.64978 M 7.808258 0 32 (ernel \337ush the range \(with) widthshow 0 FF 180 310.649719 M 0.148956 0 32 (memory_object_lock_r) widthshow 278.680115 310.649719 M 0.148956 0 32 (equest) widthshow 4 FF 305.900116 310.649719 M 0.148956 0 32 (\) and then, when the k) widthshow 395.414978 310.649719 M 0.148956 0 32 (ernel re-fetches the data, the memo-) widthshow (ry manager can respond with) 180.0 322.65 T 0 FF ( memory_object_data_err) 296.08 322.65 T (or) 407.25 322.65 T 4 FF (.) 416.14 322.65 T 180 346.649597 M 0.248947 0 32 (A ) widthshow 0 FF 189.968948 346.649597 M 0.248947 0 32 (memory_object_lock_r) widthshow 288.649048 346.649597 M 0.248947 0 32 (equest) widthshow 4 FF 315.86908 346.649597 M 0.248947 0 32 ( sequence can also be started on the memory manager\325) widthshow 536.109924 346.649597 M 0.248947 0 32 (s) widthshow 180 358.649536 M 0.445282 0 32 (initiati) widthshow 205.870132 358.649536 M 0.445282 0 32 (v) widthshow 210.720215 358.649536 M 0.445282 0 32 (e. The call can require the k) widthshow 324.641968 358.649536 M 0.445282 0 32 (ernel to return all modi\336ed \(or precious\) pages to the) widthshow 180 370.649475 M 0.083801 0 32 (manager \(most lik) widthshow 252.837662 370.649475 M 0.083801 0 32 (ely also requiring the k) widthshow 345.282928 370.649475 M 0.083801 0 32 (ernel to re) widthshow 385.740662 370.649475 M 0.083801 0 32 (v) widthshow 390.540771 370.649475 M 0.083801 0 32 (ok) widthshow 400.440857 370.649475 M 0.083801 0 32 (e write permission\) when the man-) widthshow 180 382.649414 M 0.494644 0 32 (ager needs the most recent cop) widthshow 305.393311 382.649414 M 0.494644 0 32 (y of the pages. The memory manager can also require the) widthshow (k) 180.0 394.649 T (ernel to \337ush the pages altogether from its memory cache.) 184.9 394.649 T 3 FF (Summary of P) 180.0 425.983 T (age Manipulations) 253.872 425.983 T 4 FF (The v) 180.0 442.649 T (arious page manipulations can be summarized in the follo) 202.8 442.649 T (wing set of \336gures.) 433.63 442.649 T 180 466.6492 M 1.278641 0 32 (A page starts in the ) widthshow 0 FF 266.10321 466.6492 M 1.278641 0 32 (e) widthshow 4 FF 270.543213 466.6492 M 1.278641 0 32 ( state \(empty\321not in memory\). The only allo) widthshow 461.453857 466.6492 M 1.278641 0 32 (wed actions on the) widthshow 180 478.649139 M 0.634186 0 32 (page in this state are for a thread to attempt an access of the page to read \(\322peek\323\) or to) widthshow 180 490.649078 M 0.511398 0 32 (write \(\322pok) widthshow 226.231461 490.649078 M 0.511398 0 32 (e\323\). Either action causes the k) widthshow 348.098511 490.649078 M 0.511398 0 32 (ernel to request the page. The k) widthshow 476.867004 490.649078 M 0.511398 0 32 (ernel will mak) widthshow 535.559814 490.649078 M 0.511398 0 32 (e) widthshow 180 502.649017 M 0.580704 0 32 (no other request of the manager until the manager responds to the data request message.) widthshow 180 514.648926 M 0.349304 0 32 (Once in memory) widthshow 247.258972 514.648926 M 0.349304 0 32 (, there are man) widthshow 307.576965 514.648926 M 0.349304 0 32 (y transitions that can be caused by both the client and the) widthshow (manager) 180.0 526.649 T (. The page may be e) 213.88 526.649 T (victed from an) 294.16 526.649 T (y state \(unless the page is wired\).) 352.331 526.649 T (Once a page is in memory) 180.0 550.649 T (, there are \336v) 284.05 550.649 T (e state v) 336.66 550.649 T (ariables that determine its disposition.) 369.181 550.649 T 7 (Times-Roman) 7 1 mymakefontmetric 7 FF 180.0 568.649 T 4 FF 193.535995 568.648804 M 0.719528 0 32 (If the page is ) widthshow 5 FF 250.844116 568.648804 M 0.719528 0 32 (wir) widthshow 263.814331 568.648804 M 0.719528 0 32 (ed) widthshow 4 FF 273.254333 568.648804 M 0.719528 0 32 (, it will not be e) widthshow 339.38208 568.648804 M 0.719528 0 32 (victed. Since e) widthshow 399.171295 568.648804 M 0.719528 0 32 (viction is only k) widthshow 465.95993 568.648804 M 0.719528 0 32 (ernel-initiated, the) widthshow 193.535995 580.648682 M 0.724869 0 32 (presence of the ) widthshow 5 FF 258.740601 580.648682 M 0.724869 0 32 (wir) widthshow 271.710815 580.648682 M 0.724869 0 32 (ed) widthshow 4 FF 281.150818 580.648682 M 0.724869 0 32 ( bit can be vie) widthshow 339.900452 580.648682 M 0.724869 0 32 (wed as if the k) widthshow 401.019958 580.648682 M 0.724869 0 32 (ernel w) widthshow 431.354919 580.648682 M 0.724869 0 32 (as not inclined to e) widthshow 509.554504 580.648682 M 0.724869 0 32 (vict the) widthshow (page an) 193.536 592.649 T (yw) 224.206 592.649 T (ay and so is not re\337ected in the state diagrams.) 236.326 592.649 T 7 FF 180.0 607.649 T 5 FF 193.535995 607.64856 M 0.78331 0 32 (Pr) widthshow 203.166199 607.64856 M 0.78331 0 32 (ecious) widthshow 4 FF 228.716202 607.64856 M 0.78331 0 32 ( pages af) widthshow 265.572968 607.64856 M 0.78331 0 32 (fect the process of cleaning and e) widthshow 403.312988 607.64856 M 0.78331 0 32 (victing pages. This state does not) widthshow 193.535995 619.64856 M 0.826645 0 32 (af) widthshow 201.056137 619.64856 M 0.826645 0 32 (fect the transitions, only the actions tak) widthshow 362.846069 619.64856 M 0.826645 0 32 (en by the transitions and so is not re\337ected) widthshow (in the transition diagrams.) 193.536 631.648 T 7 FF 180.0 646.648 T 4 FF (The page may be modi\336ed \(m\).) 193.536 646.648 T 7 FF 180.0 661.648 T 4 FF (The page permits some type of access \(n \(none\), r \(read\) or w \(read/write\)\).) 193.536 661.648 T 7 FF 180.0 676.648 T 4 FF (The page w) 193.536 676.648 T (ants more access than it currently has.) 240.086 676.648 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 49 49 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (45 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Memory Objects) 72.0 55.824 T 0.25 SL 3.86 setmiterlimit 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 72 114.666626 M 0.572083 0 32 (Aside from the page-in states, the v) widthshow 217.102646 114.666626 M 0.572083 0 32 (arious states are labeled with a triple <) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 375.32724 114.666626 M 0.572083 0 32 (modi\336ed) widthshow 3 FF 409.767242 114.666626 M 0.572083 0 32 (, ) widthshow 4 FF 415.339325 114.666626 M 0.572083 0 32 (cur-) widthshow (r) 72.0 126.667 T (ent access) 75.52 126.667 T 3 FF (, ) 116.34 126.667 T 4 FF (desir) 121.34 126.667 T (ed access) 140.97 126.667 T 3 FF (>.) 179.01 126.667 T 3 FF 72 144.66658 M 0.426102 0 32 (FIGURE 6 sho) widthshow 132.602341 144.66658 M 0.426102 0 32 (ws the v) widthshow 166.534683 144.66658 M 0.426102 0 32 (arious states and transitions associated with the page-in path. The) widthshow (transitions are as follo) 72.0 156.667 T (ws:) 160.35 156.667 T 5 (Times-Roman) 7 1 mymakefontmetric 5 FF 72.0 491.682 T 3 FF 85.535995 491.682495 M 1.156342 0 32 (1\321Some thread \322peeks\323 at the page. The k) widthshow 266.820465 491.682495 M 1.156342 0 32 (ernel sends a ) widthshow 1 FF 324.439514 491.682495 M 1.156342 0 32 (memory_object_data_r) widthshow 424.229614 491.682495 M 1.156342 0 32 (e-) widthshow (quest) 85.536 503.682 T 3 FF ( \(read access\) message to the manager) 108.316 503.682 T (.) 260.486 503.682 T 5 FF 72.0 518.682 T 3 FF 85.535995 518.682373 M 1.505737 0 32 (2\321Alternately) widthshow 144.876358 518.682373 M 1.505737 0 32 (, some thread \322pok) widthshow 224.833633 518.682373 M 1.505737 0 32 (es\323 at the page. The k) widthshow 318.902405 518.682373 M 1.505737 0 32 (ernel sends a ) widthshow 1 FF 377.569611 518.682373 M 1.505737 0 32 (memory_ob-) widthshow (ject_data_r) 85.536 530.682 T (equest) 134.226 530.682 T 3 FF ( \(write access\) message to the manager) 161.446 530.682 T (.) 316.956 530.682 T 5 FF 72.0 545.682 T 3 FF 85.535995 545.682251 M 1.394455 0 32 (3\321After requesting a page with read access b) widthshow 279.207336 545.682251 M 1.394455 0 32 (ut before recei) widthshow 339.496399 545.682251 M 1.394455 0 32 (ving one, some thread) widthshow 85.535995 557.68219 M 0.966904 0 32 widthshow 104.876053 557.68219 M 0.966904 0 32 (es\323 the page. The k) widthshow 185.563736 557.68219 M 0.966904 0 32 (ernel does not send a ne) widthshow 285.958405 557.68219 M 0.966904 0 32 (w data request message, nor an un-) widthshow 85.535995 569.682129 M 0.215225 0 32 (lock request at this time. The state of the page when the page is supplied, though, will) widthshow (be af) 85.536 581.682 T (fected \(as to what access is desired\).) 104.996 581.682 T 5 FF 72.0 596.682 T 3 FF 85.535995 596.682007 M 1.447678 0 32 (4\321The manager supplies the page \() widthshow 1 FF 237.464401 596.682007 M 1.447678 0 32 (memory_object_data_supply) widthshow 3 FF 361.344421 596.682007 M 1.447678 0 32 ( or ) widthshow 1 FF 377.569763 596.682007 M 1.447678 0 32 (memory_ob-) widthshow 85.535995 608.681946 M 0.522614 0 32 (ject_data_pr) widthshow 139.786102 608.681946 M 0.522614 0 32 (o) widthshow 144.686157 608.681946 M 0.522614 0 32 (vided) widthshow 3 FF 168.026154 608.681946 M 0.522614 0 32 (\) specifying no access. The k) widthshow 286.619293 608.681946 M 0.522614 0 32 (ernel will send a ) widthshow 1 FF 357.029755 608.681946 M 0.522614 0 32 (memory_object_-) widthshow (data_unlock ) 85.536 620.682 T 3 FF (message requesting read access.) 140.826 620.682 T 5 FF 72.0 635.682 T 3 FF (5\321The manager supplies the page with read access. The k) 85.536 635.682 T (ernel simply accepts it.) 320.376 635.682 T 5 FF 72.0 650.682 T 3 FF 85.535995 650.681763 M 0.123367 0 32 (6a\321The manager responds with ) widthshow 1 FF 218.77948 650.681763 M 0.123367 0 32 (memory_object_data_una) widthshow 330.179626 650.681763 M 0.123367 0 32 (v) widthshow 335.079681 650.681763 M 0.123367 0 32 (ailable) widthshow 3 FF 363.419678 650.681763 M 0.123367 0 32 (. The k) widthshow 391.616455 650.681763 M 0.123367 0 32 (ernel gen-) widthshow (erates a writable page.) 85.536 662.682 T 5 FF 72.0 677.682 T 3 FF 85.535995 677.681641 M 1.063644 0 32 (6b\321The manager supplies the page with write access. The k) widthshow 338.288879 677.681641 M 1.063644 0 32 (ernel accepts the page,) widthshow (marking it as writable.) 85.536 689.682 T 63 159.999847 378 317.015991 CR 1 G 63 159.999847 378 317.015991 NF 72 447.999847 360 27 NF 72 447.999847 360 13.031998 CR 0 G 432 454.52 M 144 454.52 L S 0 SC 135 454.52 M 72 454.52 L S 63 159.999847 378 317.015991 CR 6 (Helvetica-Bold) 9 1 mymakefontmetric 6 FF (FIGURE 6) 72.0 467.032 T 2 FF (P) 144.0 467.032 T (age-in T) 149.409 467.032 T (ransitions) 180.496 467.032 T 0.5 SL 0 360 32.39978 15.882111 251.998901 319.879883 AS 1 FF (e) 249.78 322.837 T 0 360 32.39978 15.882111 276.298737 303.997803 AS (wait-w) 261.863 306.955 T 0 360 32.39978 15.882111 227.699066 303.997803 AS (wait-r) 214.653 306.955 T 0 360 32.39978 15.882111 211.499176 224.587234 AS 200.855865 219.289032 8.330002 1 NF 1 FF (m) 200.856 227.544 T 1 FF (,r) 209.186 227.544 T (,r) 215.206 227.544 T 0 360 32.39978 15.882111 162.899506 303.997803 AS 151.236908 298.699585 8.330002 1 NF 1 FF (m) 151.237 306.955 T 1 FF (,n,r) 159.567 306.955 T 0 360 32.39978 15.882111 341.098297 303.997803 AS 327.21524 298.699585 8.330002 1 NF 1 FF (m) 327.215 306.955 T 1 FF (,w) 335.545 306.955 T (,w) 344.716 306.955 T 0 360 32.39978 15.882111 211.499176 383.408325 AS ( ) 198.026 386.366 T 200.526276 378.110138 8.330002 1 NF 1 FF (m) 200.526 386.366 T 1 FF (,n,n) 208.856 386.366 T 0 360 32.39978 15.882111 300.598572 224.587234 AS 288.56488 219.289032 8.330002 1 NF 1 FF (m) 288.565 227.544 T 1 FF (,r) 296.895 227.544 T (,w) 302.915 227.544 T 0 360 32.39978 15.882111 300.598572 383.408325 AS 287.545593 378.110138 8.330002 1 NF 1 FF (m) 287.546 386.366 T 1 FF (,n,w) 295.876 386.366 T 0 360 32.39978 15.882111 179.099396 176.940903 AS (m,r) 168.456 179.898 T (,r) 182.807 179.898 T 0 360 32.39978 15.882111 106.19989 303.997803 AS (m,n,r) 94.537 306.955 T 0 360 32.401978 15.882111 397.799011 303.997803 AS (m,w) 383.915 306.955 T (,w) 401.415 306.955 T 0 360 32.39978 15.88623 179.099396 431.056732 AS (m,n,n) 166.876 434.012 T 0 360 32.39978 15.882111 332.998352 176.940903 AS (m,r) 320.965 179.898 T (,w) 335.315 179.898 T 0 360 32.39978 15.88623 332.998352 431.056732 AS (m,n,w) 319.945 434.012 T 224.28 317.94 M 226.67 315.64 L 216.24 309.61 L 221.89 320.25 L F 180 36 39.109512 20.534103 235.798996 309.612854 AS 279.72 317.94 M 282.11 320.25 L 287.75 309.61 L 277.33 315.64 L F 144 36 39.109512 20.534103 268.198792 309.612854 AS 253.31 298.38 M 253.31 301.69 L 264.84 298.38 L 253.31 295.08 L F 253.31 298.38 M 239.15 298.38 L S 3 FF (1) 223.202 326.181 T (2) 271.801 326.177 T (3) 247.501 294.417 T 190.63 304 M 190.63 300.69 L 179.1 304 L 190.63 307.31 L F 190.63 304 M 211.5 304 L S 212.32 244.03 M 215.62 243.79 L 211.49 232.53 L 209.03 244.27 L F 212.33 244.03 M 216.24 298.38 L S 298.35 243.84 M 301.6 244.48 L 300.59 232.52 L 295.11 243.2 L F 298.36 243.84 M 287.75 298.38 L S 313.36 304 M 313.36 307.31 L 324.9 304 L 313.36 300.69 L F 313.36 304 M 292.5 304 L S 270 90 153.773788 184.253403 304.585938 296.056702 AS 352.08 285.24 M 348.31 285.37 L 352.55 298.38 L 355.85 285.1 L F 0 82 95.934296 188.905396 304.585938 298.382721 AS (4) 198.902 302.358 T (5) 203.399 262.653 T (6 a, b) 296.101 199.12 T (7) 300.599 272.508 T (8 a, b) 297.063 302.354 T (9) 354.727 356.555 T 234.88 334.55 M 237.97 335.77 L 239.15 323.78 L 231.79 333.33 L F 123 237 52.597397 39.579285 212.855164 323.787415 AS 267.27 335.3 M 270.36 333.94 L 262.53 324.54 L 264.18 336.66 L F 0 237 58.383087 39.5793 291.733521 324.543701 AS 0 90 118.276062 81.962341 290.447815 346.365448 AS 328.54 380.91 M 327.82 377.54 L 316.79 383.4 L 329.25 384.28 L F 90 69 65.574783 74.08577 316.798462 346.365448 AS (10) 179.099 342.063 T (11) 324.003 342.063 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 50 50 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 2 SC 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (46 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (V) 180.0 55.824 T (irtual Memory Management) 186.165 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 7 1 mymakefontmetric 3 FF 180.0 112.651 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 193.535995 112.650635 M 1.0672 0 32 (7\321The manager supplies the page with read access. The k) widthshow 437.980896 112.650635 M 1.0672 0 32 (ernel will send a ) widthshow 0 FF 510.569702 112.650635 M 1.0672 0 32 (memo-) widthshow (ry_object_data_unlock) 193.536 124.651 T 4 FF ( message requesting write access.) 291.866 124.651 T 3 FF 180.0 139.651 T 4 FF 193.535995 139.650513 M 0.123367 0 32 (8a\321The manager responds with ) widthshow 0 FF 326.77948 139.650513 M 0.123367 0 32 (memory_object_data_una) widthshow 438.179626 139.650513 M 0.123367 0 32 (v) widthshow 443.079681 139.650513 M 0.123367 0 32 (ailable) widthshow 4 FF 471.419678 139.650513 M 0.123367 0 32 (. The k) widthshow 499.616455 139.650513 M 0.123367 0 32 (ernel gen-) widthshow (erates a writable page.) 193.536 151.65 T 3 FF 180.0 166.65 T 4 FF (8b\321The manager supplies the page with write access. The k) 193.536 166.65 T (ernel simply accepts it.) 436.716 166.65 T 3 FF 180.0 181.65 T 4 FF 193.535995 181.65033 M 0.511047 0 32 (9\321The manager supplies the page with no access. The k) widthshow 425.765503 181.65033 M 0.511047 0 32 (ernel will send a ) widthshow 0 FF 496.1297 181.65033 M 0.511047 0 32 (memory_-) widthshow (object_data_unlock) 193.536 193.65 T 4 FF ( message requesting write access.) 277.426 193.65 T 3 FF 180.0 208.65 T 4 FF 193.535995 208.650208 M 2.124176 0 32 (10 and 11\321The manager responds with ) widthshow 0 FF 369.031067 208.650208 M 2.124176 0 32 (memory_object_data_err) widthshow 477.701172 208.650208 M 2.124176 0 32 (or) widthshow 4 FF 486.591492 208.650208 M 2.124176 0 32 (. All threads) widthshow (w) 193.536 220.65 T (aiting for the page tak) 200.656 220.65 T (e memory access e) 288.316 220.65 T (xceptions.) 363.416 220.65 T 180 244.650085 M 0.825729 0 32 (The follo) widthshow 217.515869 244.650085 M 0.825729 0 32 (wing \336gures sho) widthshow 285.027466 244.650085 M 0.825729 0 32 (w the state transitions for ) widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 392.756104 244.650085 M 0.825729 0 32 (loc) widthshow 404.776245 244.650085 M 0.825729 0 32 (k) widthshow 4 FF 409.216248 244.650085 M 0.825729 0 32 ( \(change allo) widthshow 462.267822 244.650085 M 0.825729 0 32 (wed accesses\) and/) widthshow 4 FF 180 256.650024 M 1.943588 0 32 (or ) widthshow 5 FF 192.77359 256.650024 M 1.943588 0 32 (clean) widthshow 4 FF 214.433594 256.650024 M 1.943588 0 32 ( \(return clean page copies\) operations. \() widthshow 5 FF 384.655151 256.650024 M 1.943588 0 32 (Flush) widthshow 4 FF 407.43515 256.650024 M 1.943588 0 32 ( operations al) widthshow 465.102386 256.650024 M 1.943588 0 32 (w) widthshow 472.222443 256.650024 M 1.943588 0 32 (ays transition to) widthshow (state ) 180.0 268.65 T 0 FF (e) 200.83 268.65 T 4 FF (.\)) 205.27 268.65 T 4 FF 180 292.649963 M 0.606949 0 32 (FIGURE 7 sho) widthshow 240.964035 292.649963 M 0.606949 0 32 (ws the manager initiated ) widthshow 5 FF 343.931824 292.649963 M 0.606949 0 32 (loc) widthshow 355.951965 292.649963 M 0.606949 0 32 (k) widthshow 4 FF 360.391968 292.649963 M 0.606949 0 32 ( and/or ) widthshow 5 FF 392.155853 292.649963 M 0.606949 0 32 (clean) widthshow 4 FF 413.815857 292.649963 M 0.606949 0 32 ( transitions \() widthshow 0 FF 465.029755 292.649963 M 0.606949 0 32 (memory_object_-) widthshow 180 304.649963 M 1.66069 0 32 (lock_r) widthshow 207.0401 304.649963 M 1.66069 0 32 (equest) widthshow 4 FF 234.260101 304.649963 M 1.66069 0 32 (\) when the page is in an un-modi\336ed state. FIGURE 8 sho) widthshow 484.477844 304.649963 M 1.66069 0 32 (ws the corre-) widthshow (sponding transitions for initially modi\336ed states.) 180.0 316.65 T 4 FF 180 657.665894 M 0.391312 0 32 (A ) widthshow 5 FF 190.111313 657.665894 M 0.391312 0 32 (loc) widthshow 202.131424 657.665894 M 0.391312 0 32 (k) widthshow 4 FF 206.571426 657.665894 M 0.391312 0 32 ( request causes the k) widthshow 290.236755 657.665894 M 0.391312 0 32 (ernel to for) widthshow 335.26947 657.665894 M 0.391312 0 32 (get what accesses it had before \(or had requested\);) widthshow 180 669.665771 M 0.983536 0 32 (the threads currently taking adv) widthshow 310.32428 669.665771 M 0.983536 0 32 (antage of the old access and those w) widthshow 462.349121 669.665771 M 0.983536 0 32 (aiting for more ac-) widthshow 180 681.665771 M 0.838547 0 32 (cess will ag) widthshow 228.287125 681.665771 M 0.838547 0 32 (ain attempt to access the page, possibly causing ne) widthshow 437.215637 681.665771 M 0.838547 0 32 (w unlock messages to be) widthshow 180 693.665649 M 0.774567 0 32 (generated. As such, some of the transitions here are short-li) widthshow 424.171265 693.665649 M 0.774567 0 32 (v) widthshow 429.021362 693.665649 M 0.774567 0 32 (ed; for e) widthshow 463.74057 693.665649 M 0.774567 0 32 (xample, the transi-) widthshow 171 319.983215 378 317.015991 CR 1 G 171 319.983215 378 317.015991 NF 180 607.983215 360 27 NF 180 607.983215 360 13.031998 CR 0.25 SL 2 SC 0 G 540 614.5 M 252 614.5 L S 0 SC 243 614.5 M 180 614.5 L S 171 319.983215 378 317.015991 CR 6 (Helvetica-Bold) 9 1 mymakefontmetric 6 FF (FIGURE 7) 180.0 627.015 T 2 FF (Lock, Clean T) 252.0 627.015 T (ransitions\321un-modi\336ed states) 306.091 627.015 T 1 SL 0 360 32.39978 15.882111 359.998901 479.863281 AS 0 FF (e) 357.78 482.821 T 0 360 32.39978 15.882111 384.298737 463.981171 AS (wait-w) 369.863 466.938 T 0 360 32.39978 15.882111 335.699066 463.981171 AS (wait-r) 322.653 466.938 T 0 360 32.39978 15.882111 319.499176 384.570618 AS 308.855865 379.2724 8.330002 1 NF 0 FF (m) 308.856 387.528 T 0 FF (,r) 317.186 387.528 T (,r) 323.206 387.528 T 0 360 32.39978 15.882111 270.899506 463.981171 AS 259.236908 458.682983 8.330002 1 NF 0 FF (m) 259.237 466.938 T 0 FF (,n,r) 267.567 466.938 T 0 360 32.39978 15.882111 449.098297 463.981171 AS 435.21524 458.682983 8.330002 1 NF 0 FF (m) 435.215 466.938 T 0 FF (,w) 443.545 466.938 T (,w) 452.716 466.938 T 0 360 32.39978 15.882111 319.499176 543.391724 AS ( ) 306.026 546.349 T 308.526276 538.093506 8.330002 1 NF 0 FF (m) 308.526 546.349 T 0 FF (,n,n) 316.856 546.349 T 0 360 32.39978 15.882111 408.598572 384.570618 AS 396.56488 379.2724 8.330002 1 NF 0 FF (m) 396.565 387.528 T 0 FF (,r) 404.895 387.528 T (,w) 410.915 387.528 T 0 360 32.39978 15.882111 408.598572 543.391724 AS 395.545593 538.093506 8.330002 1 NF 0 FF (m) 395.546 546.349 T 0 FF (,n,w) 403.876 546.349 T 0 360 32.39978 15.882111 287.099396 336.924286 AS (m,r) 276.456 339.882 T (,r) 290.807 339.882 T 0 360 32.39978 15.882111 214.19989 463.981171 AS (m,n,r) 202.537 466.938 T 0 360 32.401978 15.882111 505.799011 463.981171 AS (m,w) 491.915 466.938 T (,w) 509.415 466.938 T 0 360 32.39978 15.88623 287.099396 591.0401 AS (m,n,n) 274.876 593.995 T 0 360 32.39978 15.882111 440.998352 336.924286 AS (m,r) 428.965 339.882 T (,w) 443.315 339.882 T 0 360 32.39978 15.88623 440.998352 591.0401 AS (m,n,w) 427.945 593.995 T 333.62 395.92 M 336.87 396.51 L 335.69 384.57 L 330.37 395.32 L F 310.11 526.42 M 306.85 525.83 L 308.04 537.77 L 313.36 527.01 L F 310.11 526.43 M 333.63 395.92 L S 444.41 445.5 M 441.39 446.84 L 449.1 456.04 L 447.44 444.16 L F 444.41 445.5 M 420.05 390.19 L S 427.44 475 M 429 477.92 L 437.63 469.59 L 425.89 472.08 L F 318.23 532.36 M 316.68 529.44 L 308.04 537.77 L 319.78 535.28 L F 318.23 532.37 M 427.46 475.01 L S 453.38 478.63 M 455.97 480.69 L 460.56 469.6 L 450.79 476.57 L F 453.38 478.63 M 408.6 535.45 L S 2 SC 325.64 402.27 M 328.44 400.51 L 319.49 392.51 L 322.84 404.03 L F 325.65 402.27 M 408.6 535.45 L S 341.3 533.31 M 338.41 531.7 L 335.7 543.39 L 344.19 534.91 L F 341.3 533.31 M 420.05 390.19 L S 0 SC 344.53 391.98 M 346.66 389.44 L 335.69 384.57 L 342.41 394.51 L F 428.79 462.18 M 426.67 464.72 L 437.63 469.59 L 430.92 459.65 L F 428.8 462.19 M 344.54 391.98 L S 2 SC 312.45 401.64 M 315.07 403.66 L 319.49 392.51 L 309.83 399.62 L F 312.46 401.65 M 270.9 456.04 L S 437.56 456.04 M 437.56 459.35 L 449.1 456.04 L 437.56 452.73 L F 437.56 456.04 M 270.9 456.04 L S 328.78 534.15 M 326.14 536.13 L 335.7 543.39 L 331.43 532.17 L F 328.79 534.16 M 270.9 456.04 L S 347.16 542.13 M 346.8 538.84 L 335.69 543.38 L 347.52 545.41 L F 347.17 542.14 M 408.6 535.45 L S 331.03 392.24 M 330.95 388.94 L 319.5 392.51 L 331.11 395.55 L F 331.03 392.25 M 420.05 390.19 L S grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 51 51 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (47 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Memory Objects) 72.0 55.824 T 0.25 SL 3.86 setmiterlimit 0 SC 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 63 99 378 603 CR 63 99 378 603 NF 72 672.984009 360 27 NF 72 672.984009 360 13.031998 CR 0 G 432 679.5 M 144 679.5 L S 0 SC 135 679.5 M 72 679.5 L S 63 99 378 603 CR 3 (Helvetica-Bold) 9 1 mymakefontmetric 3 FF (FIGURE 8) 72.0 692.016 T 2 FF (Lock, no clean \(upper\); Clean \(lo) 144.0 692.016 T (wer\) T) 270.909 692.016 T (ransitions\321modi\336ed states) 295.984 692.016 T 1 SL 0 360 32.39978 15.882111 251.998901 283.864044 AS 1 FF (e) 249.78 286.821 T 0 360 32.39978 15.882111 276.298737 267.981934 AS (wait-w) 261.863 270.939 T 0 360 32.39978 15.882111 227.699066 267.981934 AS (wait-r) 214.653 270.939 T 0 360 32.39978 15.882111 211.499176 188.571381 AS 200.855865 183.273178 8.330002 1 NF 1 FF (m) 200.856 191.529 T 1 FF (,r) 209.186 191.529 T (,r) 215.206 191.529 T 0 360 32.39978 15.882111 162.899506 267.981934 AS 151.236908 262.683716 8.330002 1 NF 1 FF (m) 151.237 270.939 T 1 FF (,n,r) 159.567 270.939 T 0 360 32.39978 15.882111 341.098297 267.981934 AS 327.21524 262.683716 8.330002 1 NF 1 FF (m) 327.215 270.939 T 1 FF (,w) 335.545 270.939 T (,w) 344.716 270.939 T 0 360 32.39978 15.882111 211.499176 347.392487 AS ( ) 198.026 350.35 T 200.526276 342.094299 8.330002 1 NF 1 FF (m) 200.526 350.35 T 1 FF (,n,n) 208.856 350.35 T 0 360 32.39978 15.882111 300.598572 188.571381 AS 288.56488 183.273178 8.330002 1 NF 1 FF (m) 288.565 191.529 T 1 FF (,r) 296.895 191.529 T (,w) 302.915 191.529 T 0 360 32.39978 15.882111 300.598572 347.392487 AS 287.545593 342.094299 8.330002 1 NF 1 FF (m) 287.546 350.35 T 1 FF (,n,w) 295.876 350.35 T 0 360 32.39978 15.882111 179.099396 140.925049 AS (m,r) 168.456 143.882 T (,r) 182.807 143.882 T 0 360 32.39978 15.882111 106.19989 267.981934 AS (m,n,r) 94.537 270.939 T 0 360 32.401978 15.882111 397.799011 267.981934 AS (m,w) 383.915 270.939 T (,w) 401.415 270.939 T 0 360 32.39978 15.88623 179.099396 395.040894 AS (m,n,n) 166.876 397.996 T 0 360 32.39978 15.882111 332.998352 140.925049 AS (m,r) 320.965 143.882 T (,w) 335.315 143.882 T 0 360 32.39978 15.88623 332.998352 395.040894 AS (m,n,w) 319.945 397.996 T 270 90 297.123169 193.575073 258.758881 260.03894 AS 396.75 248.24 M 393.37 248.54 L 397.79 260.04 L 400.13 247.94 L F 0 83 278.070923 193.575073 258.762451 260.03894 AS 391.94 250.1 M 389.09 251.77 L 397.79 260.04 L 394.79 248.42 L F 391.95 250.1 M 333 148.87 L S 386.48 285.22 M 389.26 287.01 L 392.71 275.52 L 383.69 283.44 L F 386.49 285.23 M 316.8 395.04 L S 194.01 152.39 M 197.3 152.75 L 195.29 140.92 L 190.73 152.02 L F 168.92 377.94 M 165.63 377.58 L 167.64 389.41 L 172.21 378.31 L F 168.93 377.96 M 194.02 152.39 L S 204.74 147.55 M 206.64 144.84 L 195.29 140.92 L 202.84 150.25 L F 376.88 266.97 M 374.98 269.67 L 386.33 273.59 L 378.78 264.26 L F 376.9 266.97 M 204.74 147.55 L S 177.81 383.97 M 176.25 381.06 L 167.64 389.41 L 179.37 386.89 L F 376.16 279.03 M 377.71 281.94 L 386.33 273.59 L 374.6 276.11 L F 376.17 279.03 M 177.82 383.99 L S 2 SC 168.92 150.76 M 171.74 149.04 L 162.9 140.92 L 166.09 152.49 L F 168.92 150.76 M 316.8 395.04 L S 158.28 151.49 M 161.31 152.82 L 162.9 140.92 L 155.24 150.17 L F 158.28 151.49 M 110.2 262.36 L S 196.47 379.52 M 193.63 377.82 L 190.55 389.41 L 199.31 381.21 L F 196.47 379.52 M 333 148.87 L S 202.07 389.93 M 202.22 386.62 L 190.55 389.41 L 201.93 393.23 L F 202.08 389.94 M 316.8 395.04 L S 184.34 379.69 M 181.55 381.48 L 190.55 389.42 L 187.13 377.91 L F 184.34 379.7 M 110.2 262.36 L S 209.77 144.05 M 209.9 140.75 L 198.25 143.6 L 209.64 147.36 L F 209.78 144.06 M 333 148.87 L S 3 SL 0 SC 0.6667 G 441 404.98 M 63 404.98 L S 0.5 SL 0 G 0 360 32.39978 15.882111 251.998901 556.864014 AS (e) 249.78 559.821 T 0 360 32.39978 15.882111 276.298737 540.981934 AS (wait-w) 261.863 543.939 T 0 360 32.39978 15.882111 227.699066 540.981934 AS (wait-r) 214.653 543.939 T 0 360 32.39978 15.882111 211.499176 461.571381 AS 200.855865 456.273193 8.330002 1 NF 1 FF (m) 200.856 464.529 T 1 FF (,r) 209.186 464.529 T (,r) 215.206 464.529 T 0 360 32.39978 15.882111 162.899506 540.981934 AS 151.236908 535.683716 8.330002 1 NF 1 FF (m) 151.237 543.939 T 1 FF (,n,r) 159.567 543.939 T 0 360 32.39978 15.882111 341.098297 540.981934 AS 327.21524 535.683716 8.330002 1 NF 1 FF (m) 327.215 543.939 T 1 FF (,w) 335.545 543.939 T (,w) 344.716 543.939 T 0 360 32.39978 15.882111 211.499176 620.392456 AS ( ) 198.026 623.35 T 200.526276 615.094299 8.330002 1 NF 1 FF (m) 200.526 623.35 T 1 FF (,n,n) 208.856 623.35 T 0 360 32.39978 15.882111 300.598572 461.571381 AS 288.56488 456.273193 8.330002 1 NF 1 FF (m) 288.565 464.529 T 1 FF (,r) 296.895 464.529 T (,w) 302.915 464.529 T 0 360 32.39978 15.882111 300.598572 620.392456 AS 287.545593 615.094299 8.330002 1 NF 1 FF (m) 287.546 623.35 T 1 FF (,n,w) 295.876 623.35 T 0 360 32.39978 15.882111 179.099396 413.925049 AS (m,r) 168.456 416.882 T (,r) 182.807 416.882 T 0 360 32.39978 15.882111 106.19989 540.981934 AS (m,n,r) 94.537 543.939 T 0 360 32.401978 15.882111 397.799011 540.981934 AS (m,w) 383.915 543.939 T (,w) 401.415 543.939 T 0 360 32.39978 15.88623 179.099396 668.040894 AS (m,n,n) 166.876 670.996 T 0 360 32.39978 15.882111 332.998352 413.925049 AS (m,r) 320.965 416.882 T (,w) 335.315 416.882 T 0 360 32.39978 15.88623 332.998352 668.040894 AS (m,n,w) 319.945 670.996 T 1 SL 340.25 521.51 M 336.95 521.76 L 341.09 533.02 L 343.55 521.27 L F 340.26 521.53 M 333 421.87 L S 338.75 560.2 M 341.99 560.87 L 341.09 548.91 L 335.51 559.53 L F 338.76 560.22 M 316.8 668.04 L S 187.26 469.84 M 189.64 472.14 L 195.29 461.56 L 184.89 467.54 L F 187.27 469.85 M 120.94 537.68 L S 270 90 152.719498 179.323471 194.014435 535.366577 AS 328.31 522.87 M 324.73 523.25 L 329.63 535.35 L 331.88 522.49 L F 0 82 271.256073 179.323471 194.015442 535.366577 AS 2 SC 228.71 604.77 M 225.84 603.12 L 222.95 614.76 L 231.57 606.42 L F 228.71 604.78 M 333 421.87 L S 320.79 527.95 M 318.66 530.48 L 329.63 535.35 L 322.91 525.41 L F 320.8 527.96 M 190.55 419.54 L S 195.02 608.85 M 191.72 608.93 L 195.3 620.38 L 198.33 608.77 L F 195.03 608.86 M 190.55 419.54 L S 227.47 459.57 M 229.03 456.66 L 217.29 454.15 L 225.92 462.49 L F 227.48 459.59 M 381.6 540.98 L S 233.39 609.86 M 231.99 606.86 L 222.95 614.75 L 234.79 612.85 L F 233.4 609.88 M 381.6 540.98 L S 201.18 471.47 M 204.03 469.78 L 195.29 461.55 L 198.34 473.16 L F 201.19 471.49 M 316.8 668.04 L S 331.46 555.26 M 333.29 558.02 L 341.09 548.9 L 329.64 552.5 L F 331.48 555.28 M 167.64 662.42 L S 193.71 472.99 M 196.99 473.44 L 195.29 461.56 L 190.43 472.53 L F 193.71 473 M 167.64 662.42 L S 205.41 443.81 M 202.6 445.56 L 211.49 453.62 L 208.22 442.07 L F 205.42 443.83 M 190.55 419.54 L S 187.52 611.85 M 185.07 614.08 L 195.29 620.37 L 189.96 609.62 L F 187.52 611.87 M 117.65 535.37 L S 192.36 634.59 M 194.83 636.79 L 200.04 625.98 L 189.89 632.39 L F 192.37 634.62 M 167.64 662.42 L S 210.88 629.91 M 212.01 626.8 L 200.04 625.98 L 209.76 633.02 L F 210.89 629.93 M 316.8 668.04 L S 228.39 450.98 M 227.48 447.8 L 217.3 454.15 L 229.3 454.16 L F 228.39 450.98 M 333 421.87 L S 364.82 542.56 M 364.51 539.27 L 353.34 543.66 L 365.13 545.86 L F 364.82 542.57 M 381.6 540.98 L S grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 52 52 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (48 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (V) 180.0 55.824 T (irtual Memory Management) 186.165 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 180 112.650635 M 0.844528 0 32 (tion from <) widthshow 0 FF 227.329056 112.650635 M 0.844528 0 32 (m,r) widthshow 241.679565 112.650635 M 0.844528 0 32 (,w) widthshow 3 FF 251.399567 112.650635 M 0.844528 0 32 (> to <) widthshow 0 FF 277.148621 112.650635 M 0.844528 0 32 (m,n,n) widthshow 3 FF 301.598633 112.650635 M 0.844528 0 32 (> will probably be follo) widthshow 399.806885 112.650635 M 0.844528 0 32 (wed by a thread \322pok) widthshow 488.615051 112.650635 M 0.844528 0 32 (e\323, changing) widthshow 180 124.650574 M 0.724945 0 32 (to state <) widthshow 0 FF 218.19989 124.650574 M 0.724945 0 32 (m,n,w) widthshow 3 FF 244.309891 124.650574 M 0.724945 0 32 (>. The lock request itself will recei) widthshow 388.189697 124.650574 M 0.724945 0 32 (v) widthshow 393.039795 124.650574 M 0.724945 0 32 (e a ) widthshow 0 FF 408.36969 124.650574 M 0.724945 0 32 (memory_object_lock_complet-) widthshow 180 136.650513 M 0.371399 0 32 (ed) widthshow 3 FF 190 136.650513 M 0.371399 0 32 ( message. The ) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 250.544205 136.650513 M 0.371399 0 32 (clean) widthshow 3 FF 272.204224 136.650513 M 0.371399 0 32 ( transitions are v) widthshow 339.548492 136.650513 M 0.371399 0 32 (ery much similar to the simple lock requests. The) widthshow 180 148.650452 M 0.558395 0 32 (big dif) widthshow 206.698532 148.650452 M 0.558395 0 32 (ference is that \(copies of\) modi\336ed \(and possibly precious pages\) will be returned) widthshow 180 160.650391 M 0.735657 0 32 (to the manager \() widthshow 0 FF 247.46698 160.650391 M 0.735657 0 32 (memory_object_data_r) widthshow 347.25708 160.650391 M 0.735657 0 32 (etur) widthshow 364.877197 160.650391 M 0.735657 0 32 (n) widthshow 3 FF 370.437195 160.650391 M 0.735657 0 32 ( or ) widthshow 0 FF 385.238495 160.650391 M 0.735657 0 32 (memory_object_data_write) widthshow 3 FF 502.978516 160.650391 M 0.735657 0 32 (\) prior to) widthshow 180 172.65033 M 1.678696 0 32 (the ) widthshow 0 FF 196.398697 172.65033 M 1.678696 0 32 (memory_object_lock_completed) widthshow 3 FF 334.69873 172.65033 M 1.678696 0 32 ( message. Note that the ) widthshow 4 FF 438.632202 172.65033 M 1.678696 0 32 (clean) widthshow 3 FF 460.292206 172.65033 M 1.678696 0 32 ( operation remo) widthshow 526.819702 172.65033 M 1.678696 0 32 (v) widthshow 531.6698 172.65033 M 1.678696 0 32 (es) widthshow (the modi\336ed \337ag from the page.) 180.0 184.65 T 180 208.650284 M 0.346298 0 32 (FIGURE 9 sho) widthshow 240.442734 208.650284 M 0.346298 0 32 (ws the v) widthshow 274.215454 208.650284 M 0.346298 0 32 (arious k) widthshow 306.401825 208.650284 M 0.346298 0 32 (ernel-initiated transitions resulting from \322peek\323 or \322pok) widthshow 531.11969 208.650284 M 0.346298 0 32 (e\323) widthshow 3 FF 180 220.650269 M 0.1353 0 32 (operations by clients. The dotted lines sho) widthshow 349.161926 220.650269 M 0.1353 0 32 (w k) widthshow 363.917297 220.650269 M 0.1353 0 32 (ernel and manager initiated \337ush \(e) widthshow 505.703949 220.650269 M 0.1353 0 32 (vict\) op-) widthshow (erations.) 180.0 232.65 T 5 (Times-Roman) 7 1 mymakefontmetric 5 FF 180.0 567.666 T 3 FF 193.535995 567.666199 M 0.450974 0 32 (1\321Some thread \322pok) widthshow 281.548004 567.666199 M 0.450974 0 32 (es\323 the page. This is the only transition that sets the ) widthshow 4 FF 494.828735 567.666199 M 0.450974 0 32 (modify) widthshow 3 FF 522.048706 567.666199 M 0.450974 0 32 ( \337ag) widthshow 193.535995 579.666138 M 0.313797 0 32 (\(the page must ha) widthshow 265.097504 579.666138 M 0.313797 0 32 (v) widthshow 269.947571 579.666138 M 0.313797 0 32 (e write access\). Note, though, that access may be re) widthshow 478.57193 579.666138 M 0.313797 0 32 (v) widthshow 483.37204 579.666138 M 0.313797 0 32 (ok) widthshow 493.272095 579.666138 M 0.313797 0 32 (ed from the) widthshow (page later) 193.536 591.666 T (, creating a modi\336ed page with less than write access.) 232.286 591.666 T 5 FF 180.0 606.666 T 3 FF 193.535995 606.666016 M 0.295563 0 32 (2 and 5\321Some thread \322peeks\323 at the page with no access. The k) widthshow 455.532837 606.666016 M 0.295563 0 32 (ernel sends a ) widthshow 0 FF 510.569519 606.666016 M 0.295563 0 32 (memo-) widthshow (ry_object_data_unlock) 193.536 618.666 T 3 FF ( message requesting read access.) 291.866 618.666 T 5 FF 180.0 633.666 T 3 FF 193.535995 633.665894 M 0.978119 0 32 (3 and 6\321Some thread \322pok) widthshow 308.998535 633.665894 M 0.978119 0 32 (es\323 the page with no access. The k) widthshow 453.485443 633.665894 M 0.978119 0 32 (ernel sends a ) widthshow 0 FF 510.569824 633.665894 M 0.978119 0 32 (memo-) widthshow (ry_object_data_unlock) 193.536 645.666 T 3 FF ( message requesting write access.) 291.866 645.666 T 5 FF 180.0 660.666 T 3 FF 193.535995 660.665771 M 0.177567 0 32 (4 and 7\321Some thread \322pok) widthshow 305.796326 660.665771 M 0.177567 0 32 (es\323 the page with no access while the k) widthshow 463.746948 660.665771 M 0.177567 0 32 (ernel is w) widthshow 502.882141 660.665771 M 0.177567 0 32 (aiting for) widthshow 193.535995 672.66571 M 0.520401 0 32 (read access. The k) widthshow 268.297272 672.66571 M 0.520401 0 32 (ernel sends a ne) widthshow 333.198608 672.66571 M 0.520401 0 32 (w ) widthshow 0 FF 343.439026 672.66571 M 0.520401 0 32 (memory_object_data_unlock) widthshow 3 FF 467.869019 672.66571 M 0.520401 0 32 ( message request-) widthshow (ing write access.) 193.536 684.666 T 171 235.983582 378 317.015991 CR 1 G 171 235.983582 378 317.015991 NF 180 523.983582 360 27 NF 180 523.983582 360 13.031998 CR 0.25 SL 2 SC 0 G 540 530.5 M 252 530.5 L S 0 SC 243 530.5 M 180 530.5 L S 171 235.983582 378 317.015991 CR 6 (Helvetica-Bold) 9 1 mymakefontmetric 6 FF (FIGURE 9) 180.0 543.016 T 2 FF (P) 252.0 543.016 T (eek, P) 257.319 543.016 T (ok) 280.134 543.016 T (e, Evict and Flush T) 289.549 543.016 T (ransitions) 366.149 543.016 T 0.5 SL 0 360 32.39978 15.866898 359.998901 396.247711 AS 0 FF (e) 357.78 399.204 T 0 360 32.39978 15.866898 384.298737 380.380798 AS (wait-w) 369.863 383.338 T 0 360 32.39978 15.866898 335.699066 380.380798 AS (wait-r) 322.653 383.338 T 0 360 32.39978 15.866898 319.499176 301.046326 AS 308.855865 295.747559 8.330002 1 NF 0 FF (m) 308.856 304.003 T 0 FF (,r) 317.186 304.003 T (,r) 323.206 304.003 T 0 360 32.39978 15.866898 270.899506 380.380798 AS 259.236908 375.082031 8.330002 1 NF 0 FF (m) 259.237 383.338 T 0 FF (,n,r) 267.567 383.338 T 0 360 32.39978 15.866898 449.098297 380.380798 AS 435.21524 375.082031 8.330002 1 NF 0 FF (m) 435.215 383.338 T 0 FF (,w) 443.545 383.338 T (,w) 452.716 383.338 T 0 360 32.39978 15.866898 319.499176 459.715271 AS ( ) 306.026 462.672 T 308.526276 454.416504 8.330002 1 NF 0 FF (m) 308.526 462.672 T 0 FF (,n,n) 316.856 462.672 T 0 360 32.39978 15.866898 408.598572 301.046326 AS 396.56488 295.747559 8.330002 1 NF 0 FF (m) 396.565 304.003 T 0 FF (,r) 404.895 304.003 T (,w) 410.915 304.003 T 0 360 32.39978 15.866898 408.598572 459.715271 AS 395.545593 454.416504 8.330002 1 NF 0 FF (m) 395.546 462.672 T 0 FF (,n,w) 403.876 462.672 T 0 360 32.39978 15.866898 287.099396 253.445648 AS (m,r) 276.456 256.402 T (,r) 290.807 256.402 T 0 360 32.39978 15.866898 214.19989 380.380798 AS (m,n,r) 202.537 383.338 T 0 360 32.401978 15.866898 505.799011 380.380798 AS (m,w) 491.915 383.338 T (,w) 509.415 383.338 T 0 360 32.39978 15.866898 287.099396 507.315979 AS (m,n,n) 274.876 510.273 T 0 360 32.39978 15.866898 440.998352 253.445648 AS (m,r) 428.965 256.402 T (,w) 443.315 256.402 T 0 360 32.39978 15.866898 440.998352 507.315979 AS (m,n,w) 427.945 510.273 T 478.06 380.38 M 478.06 383.69 L 489.6 380.38 L 478.06 377.07 L F 478.06 380.38 M 465.3 380.38 L S 276.61 398.33 M 279.48 396.69 L 270.9 388.31 L 273.74 399.97 L F 276.61 398.34 M 308.04 454.11 L S 380.86 459.72 M 380.86 463.02 L 392.4 459.72 L 380.86 456.41 L F 380.86 459.72 M 335.7 459.72 L S 413.26 507.32 M 413.26 510.62 L 424.8 507.32 L 413.26 504.01 L F 413.26 507.32 M 303.3 507.32 L S 214.72 397.79 M 217.57 396.1 L 208.84 387.86 L 211.88 399.47 L F 214.72 397.79 M 275.64 501.71 L S 415.31 501.42 M 415.23 505.49 L 429.53 501.7 L 415.39 497.34 L F 184 86 407.776489 231.430649 429.542938 385.990967 AS 380.86 301.05 M 380.86 304.35 L 392.4 301.05 L 380.86 297.74 L F 380.86 301.05 M 335.7 301.05 L S 413.26 253.45 M 413.26 256.75 L 424.8 253.45 L 413.26 250.14 L F 413.26 253.45 M 303.3 253.45 L S 3 FF (1) 473.398 378.741 T (2) 278.999 428.262 T (3) 355.501 473.946 T (4) 319.499 426.346 T (5) 238.5 459.991 T (6) 351.899 515.525 T (7) 290.702 481.88 T (8) 355.501 299.411 T (9) 355.501 251.81 T 0.6667 G 354.71 378.05 M 351.77 379.57 L 359.99 388.31 L 357.65 376.54 L F 354.72 378.06 M 319.5 308.98 L S 364.8 377.83 M 361.8 376.45 L 360 388.31 L 367.81 379.2 L F 364.81 377.83 M 397.14 306.66 L S 366.24 378.61 M 363.46 376.82 L 359.99 388.31 L 369.02 380.41 L F 366.25 378.62 M 441 261.38 L S 354.2 378.33 M 351.34 379.99 L 359.99 388.31 L 357.06 376.67 L F 354.21 378.34 M 287.1 261.38 L S 332.85 392.6 M 331.8 395.74 L 343.79 396.24 L 333.89 389.46 L F 332.85 392.61 M 285.5 376.95 L S 332.45 394.16 M 331.85 397.41 L 343.79 396.24 L 333.05 390.9 L F 332.45 394.16 M 225.65 374.77 L S 387.07 392.41 M 385.97 389.29 L 376.19 396.24 L 388.17 395.53 L F 387.08 392.42 M 437.64 374.77 L S 387.71 395.54 M 387.51 392.24 L 376.2 396.25 L 387.91 398.84 L F 387.71 395.54 M 505.8 388.31 L S 353.18 413.48 M 355.85 415.44 L 359.99 404.17 L 350.51 411.53 L F 353.19 413.49 M 325.13 452.28 L S 353.8 413.91 M 356.59 415.69 L 360 404.18 L 351.01 412.13 L F 353.81 413.91 M 298.55 501.71 L S 368.26 412.21 M 370.56 409.84 L 359.99 404.17 L 365.95 414.58 L F 368.27 412.22 M 408.6 451.78 L S 367.49 412.95 M 370 410.8 L 360 404.18 L 364.97 415.1 L F 367.49 412.95 M 441 499.38 L S 0 G 388.3 451.39 M 388.19 454.89 L 400.49 451.78 L 388.41 447.9 L F 186 84 233.280853 138.727417 400.494751 382.418152 AS grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 53 53 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (49 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Memory Objects) 72.0 55.824 T 0.25 SL 3.86 setmiterlimit 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 7 1 mymakefontmetric 3 FF 72.0 114.667 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 85.535995 114.666626 M 1.295242 0 32 (8 and 9\321Some thread \322pok) widthshow 202.267029 114.666626 M 1.295242 0 32 (es\323 the page with only read access. The k) widthshow 377.759033 114.666626 M 1.295242 0 32 (ernel sends a) widthshow 1 FF (memory_object_data_unlock) 85.536 126.667 T 4 FF ( message requesting write access.) 209.966 126.667 T 72 150.666504 M 0.180618 0 32 (A page may be e) widthshow 139.672623 150.666504 M 0.180618 0 32 (victed from an) widthshow 198.203949 150.666504 M 0.180618 0 32 (y in-memory state \(those other than ) widthshow 1 FF 344.26767 150.666504 M 0.180618 0 32 (e) widthshow 4 FF 348.707672 150.666504 M 0.180618 0 32 (, ) widthshow 1 FF 353.888306 150.666504 M 0.180618 0 32 (wait-r) widthshow 4 FF 379.988281 150.666504 M 0.180618 0 32 ( and ) widthshow 1 FF 399.789551 150.666504 M 0.180618 0 32 (wait-w) widthshow 4 FF 428.669556 150.666504 M 0.180618 0 32 (\)) widthshow 72 162.666443 M 0.154419 0 32 (as long as the page isn\325) widthshow 165.632202 162.666443 M 0.154419 0 32 (t ) widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 171.06662 162.666443 M 0.154419 0 32 (wir) widthshow 184.036819 162.666443 M 0.154419 0 32 (ed) widthshow 4 FF 193.476822 162.666443 M 0.154419 0 32 (. The action of e) widthshow 259.104645 162.666443 M 0.154419 0 32 (victing the page transitions it to the ) widthshow 1 FF 403.795593 162.666443 M 0.154419 0 32 (e) widthshow 4 FF 408.235596 162.666443 M 0.154419 0 32 ( state;) widthshow 72 174.666382 M 0.792465 0 32 (the \(possibly modi\336ed\) page will be returned to the manager in a ) widthshow 1 FF 343.139587 174.666382 M 0.792465 0 32 (memory_object_dat-) widthshow (a_r) 72.0 186.666 T (etur) 86.26 186.666 T (n) 103.88 186.666 T 4 FF ( \(or ) 109.44 186.666 T 1 FF (memory_object_data_write) 126.1 186.666 T 4 FF (\) message if it is precious or modi\336ed.) 243.84 186.666 T 4 FF 72 210.66626 M 1.021957 0 32 (The ) widthshow 5 FF 91.07196 210.66626 M 1.021957 0 32 widthshow 4 FF 109.96196 210.66626 M 1.021957 0 32 ( option to the ) widthshow 1 FF 169.609787 210.66626 M 1.021957 0 32 (memory_object_lock_r) widthshow 268.289917 210.66626 M 1.021957 0 32 (equest) widthshow 4 FF 295.509888 210.66626 M 1.021957 0 32 ( also transitions from all resident) widthshow 72 222.666199 M 0.636292 0 32 (states to the ) widthshow 1 FF 123.628876 222.666199 M 0.636292 0 32 (e) widthshow 4 FF 128.068878 222.666199 M 0.636292 0 32 ( state. The k) widthshow 178.757812 222.666199 M 0.636292 0 32 (ernel will return the page as if it had been e) widthshow 358.160889 222.666199 M 0.636292 0 32 (victed if the ) widthshow 5 FF 410.339783 222.666199 M 0.636292 0 32 (clean) widthshow 4 FF 72 234.666138 M 0.414581 0 32 (option is also speci\336ed and if the page is modi\336ed or ) widthshow 5 FF 290.1604 234.666138 M 0.414581 0 32 (pr) widthshow 298.680603 234.666138 M 0.414581 0 32 (ecious) widthshow 4 FF 324.230591 234.666138 M 0.414581 0 32 (, follo) widthshow 348.285339 234.666138 M 0.414581 0 32 (wed by a ) widthshow 1 FF 388.129089 234.666138 M 0.414581 0 32 (memory_-) widthshow (object_lock_completed) 72.0 246.666 T 4 FF ( message.) 169.76 246.666 T 6 (Times-Bold) 12 1 mymakefontmetric 6 FF (V) 72.0 277.999 T (irtual Copy Optimizations) 80.22 277.999 T 4 FF 72 294.665955 M 0.050583 0 32 (There are tw) widthshow 122.531235 294.665955 M 0.050583 0 32 (o situations in the Mach system in which a range of memory is ) widthshow 5 FF 376.778809 294.665955 M 0.050583 0 32 (lo) widthshow 384.458862 294.665955 M 0.050583 0 32 (gically) widthshow 4 FF 411.678894 294.665955 M 0.050583 0 32 ( cop-) widthshow (ied.) 72.0 306.666 T 3 FF 72.0 324.666 T 4 FF 85.535995 324.665833 M 0.35759 0 32 (When a memory range has the VM_INHERIT_COPY inheritance attrib) widthshow 375.91687 324.665833 M 0.35759 0 32 (ute and a ne) widthshow 424.779785 324.665833 M 0.35759 0 32 (w) widthshow (task is created from this task.) 85.536 336.666 T 3 FF 72.0 351.666 T 4 FF 85.535995 351.66571 M 0.502579 0 32 (When a memory range is passed out-of-line in a Mach message. \(This includes ) widthshow 1 FF 410.339539 351.66571 M 0.502579 0 32 (vm_-) widthshow (r) 85.536 363.666 T (ead) 89.796 363.666 T 4 FF (, ) 104.796 363.666 T 1 FF (vm_write) 109.796 363.666 T 4 FF ( and ) 150.336 363.666 T 1 FF (vm_copy) 169.776 363.666 T 4 FF ( operations.\)) 208.106 363.666 T 72 387.665588 M 0.445328 0 32 (Each of these situations occurs frequently) widthshow 240.487015 387.665588 M 0.445328 0 32 (. Cop) widthshow 262.50238 387.665588 M 0.445328 0 32 (y inherited memory is used to support the) widthshow 72 399.665527 M 1.009903 0 32 (POSIX ) widthshow 1 FF 104.399902 399.665527 M 1.009903 0 32 (f) widthshow 107.480042 399.665527 M 1.009903 0 32 (ork) widthshow 4 FF 122.480042 399.665527 M 1.009903 0 32 ( semantics for ne) widthshow 193.299896 399.665527 M 1.009903 0 32 (w process creation. Out-of-line memory) widthshow 356.929871 399.665527 M 1.009903 0 32 (, although uncom-) widthshow 72 411.665466 M 0.624573 0 32 (mon in the normal message case, is v) widthshow 225.092102 411.665466 M 0.624573 0 32 (ery important to supporting e) widthshow 344.100464 411.665466 M 0.624573 0 32 (xternal memory man-) widthshow (agers, \336le systems in particular) 72.0 423.665 T (, and the de) 195.75 423.665 T (vice interf) 241.6 423.665 T (ace to be speci\336c.) 282.32 423.665 T 72 447.665344 M 0.171967 0 32 (It is reasonable for these operations to be de\336ned as logical copies \(instead of direct shar-) widthshow 72 459.665283 M 0.608139 0 32 (ing, for instance\) because the Mach virtual memory pro) widthshow 299.165222 459.665283 M 0.608139 0 32 (vides virtual cop) widthshow 366.941559 459.665283 M 0.608139 0 32 (y optimizations.) widthshow 72 471.665222 M 0.367126 0 32 (W) widthshow 81.040222 471.665222 M 0.367126 0 32 (ith these optimizations, the memory is not copied outright; memory is copied in a lazi-) widthshow 72 483.665161 M 0.438034 0 32 (ly e) widthshow 86.908173 483.665161 M 0.438034 0 32 (v) widthshow 91.65831 483.665161 M 0.438034 0 32 (aluated w) widthshow 130.596405 483.665161 M 0.438034 0 32 (ay) widthshow 139.386765 483.665161 M 0.438034 0 32 (, only when data needs to be copied. Data cop) widthshow 326.799133 483.665161 M 0.438034 0 32 (ying can be deferred for a) widthshow (v) 72.0 495.665 T (ariety of reasons:) 76.75 495.665 T 3 FF 72.0 513.665 T 4 FF (Some of the data is not actually referenced.) 85.536 513.665 T 3 FF 72.0 528.665 T 4 FF 85.535995 528.664978 M 0.4245 0 32 (Neither task modi\336es some of the data, so the) widthshow 271.262085 528.664978 M 0.4245 0 32 (y can ef) widthshow 303.51123 528.664978 M 0.4245 0 32 (fecti) widthshow 321.031372 528.664978 M 0.4245 0 32 (v) widthshow 325.88147 528.664978 M 0.4245 0 32 (ely share the same memo-) widthshow (ry image of the un-modi\336ed data.) 85.536 540.665 T 3 FF 72.0 555.665 T 4 FF 85.535995 555.664856 M 0.621033 0 32 (The task requesting the data cop) widthshow 217.681229 555.664856 M 0.621033 0 32 (y deletes its mapping, thereby allo) widthshow 357.746521 555.664856 M 0.621033 0 32 (wing the k) widthshow 401.108643 555.664856 M 0.621033 0 32 (ernel to) widthshow 85.535995 567.664795 M 1.943619 0 32 (consider the cop) widthshow 154.863297 567.664795 M 1.943619 0 32 (y a mo) widthshow 185.820618 567.664795 M 1.943619 0 32 (v) widthshow 190.6707 567.664795 M 1.943619 0 32 (e, which can be optimized into page re-mappings \(\322page) widthshow 4 FF 85.535995 579.664734 M 1.366425 0 32 (stealing\323\), instead of page copies. A related possibility is that the \322recei) widthshow 386.65683 579.664734 M 1.366425 0 32 (v) widthshow 391.506897 579.664734 M 1.366425 0 32 (er\323 of the) widthshow 4 FF (data copies it ag) 85.536 591.665 T (ain \(and deletes its mappings\) without e) 150.196 591.665 T (v) 309.376 591.665 T (en looking at the data.) 314.226 591.665 T 72 615.664612 M 1.354248 0 32 (On the one hand, these optimizations are purely internal, and therefore not part of the) widthshow 72 627.664551 M 0.760727 0 32 (Mach k) widthshow 102.930786 627.664551 M 0.760727 0 32 (ernel semantics that this document describes. Ho) widthshow 302.4953 627.664551 M 0.760727 0 32 (we) widthshow 313.905457 627.664551 M 0.760727 0 32 (v) widthshow 318.755524 627.664551 M 0.760727 0 32 (er) widthshow 326.125732 627.664551 M 0.760727 0 32 (, as a practical matter) widthshow 414.01889 627.664551 M 0.760727 0 32 (, the) widthshow 72 639.66449 M 0.409958 0 32 (presence of these optimizations is well kno) widthshow 246.409897 639.66449 M 0.409958 0 32 (wn, and an inte) widthshow 308.589844 639.66449 M 0.409958 0 32 (gral part of the utility of man) widthshow 426.999695 639.66449 M 0.409958 0 32 (y) widthshow 72 651.664429 M 0.821762 0 32 (of the interf) widthshow 120.753586 651.664429 M 0.821762 0 32 (aces \(the de) widthshow 169.34726 651.664429 M 0.821762 0 32 (vice and e) widthshow 211.380875 651.664429 M 0.821762 0 32 (xternal memory manager interf) widthshow 338.436218 651.664429 M 0.821762 0 32 (aces, especially\). Also,) widthshow 72 663.664368 M 0.106613 0 32 (the f) widthshow 90.056671 663.664368 M 0.106613 0 32 (act that the k) widthshow 141.65657 663.664368 M 0.106613 0 32 (ernel uses the virtual memory system for out-of-line data allo) widthshow 387.606262 663.664368 M 0.106613 0 32 (ws the v) widthshow 420.899597 663.664368 M 0.106613 0 32 (ar-) widthshow 72 675.664307 M 0.479965 0 32 (ious k) widthshow 96.550018 675.664307 M 0.479965 0 32 (ernel primiti) widthshow 146.500122 675.664307 M 0.479965 0 32 (v) widthshow 151.350204 675.664307 M 0.479965 0 32 (es that return lists to do so by returning out-of-line data, which is ac-) widthshow 72 687.664246 M 1.886627 0 32 (tually accomplished by internal ) widthshow 1 FF 207.866516 687.664246 M 1.886627 0 32 (vm_allocate) widthshow 4 FF 258.966522 687.664246 M 1.886627 0 32 ( operations. As such, these optimizations) widthshow grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 54 54 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (50 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (V) 180.0 55.824 T (irtual Memory Management) 186.165 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 180 112.650635 M 1.64325 0 32 (form an important part of the speci\336cation of the interf) widthshow 413.819336 112.650635 M 1.64325 0 32 (aces, namely) widthshow 466.462952 112.650635 M 1.64325 0 32 (, the performance) widthshow (characteristics.) 180.0 124.651 T 4 (Times-Bold) 12 1 mymakefontmetric 4 FF (V) 180.0 155.984 T (irtual Copy Dialog) 188.22 155.984 T 3 FF 180 172.650467 M 0.531845 0 32 (When a range of memory is to be copied, the k) widthshow 372.678528 172.650467 M 0.531845 0 32 (ernel creates a ne) widthshow 443.154236 172.650467 M 0.531845 0 32 (w memory cache object) widthshow 180 184.650406 M 0.289185 0 32 (to represent the virtually copied pages. This ne) widthshow 368.964447 184.650406 M 0.289185 0 32 (w memory cache object \(the cop) widthshow 500.550446 184.650406 M 0.289185 0 32 (y destina-) widthshow 180 196.650345 M 1.269226 0 32 (tion\) may well share actual ph) widthshow 307.106171 196.650345 M 1.269226 0 32 (ysical memory pages with the old memory cache object) widthshow 180 208.650284 M 0.56636 0 32 (\(the cop) widthshow 212.956421 208.650284 M 0.56636 0 32 (y source\), assuming that these pages are not actually modi\336ed. The old object is) widthshow 180 220.650223 M 1.282578 0 32 (ne) widthshow 189.19014 220.650223 M 1.282578 0 32 (v) widthshow 194.040222 220.650223 M 1.282578 0 32 (er af) widthshow 213.112946 220.650223 M 1.282578 0 32 (fected by this virtual cop) widthshow 317.573303 220.650223 M 1.282578 0 32 (y) widthshow 321.923676 220.650223 M 1.282578 0 32 (. It will continue to be associated with the same ab-) widthshow 180 232.650162 M 0.419235 0 32 (stract memory object and the same associated memory manager) widthshow 438.304199 232.650162 M 0.419235 0 32 (. Its pages are its o) widthshow 514.580566 232.650162 M 0.419235 0 32 (wn, to) widthshow (use as it sees \336t.) 180.0 244.65 T 180 268.650024 M 0.399277 0 32 (Although the ne) widthshow 244.988693 268.650024 M 0.399277 0 32 (w memory object recei) widthshow 337.856689 268.650024 M 0.399277 0 32 (v) widthshow 342.706757 268.650024 M 0.399277 0 32 (es virtual copies of all of the pages in the copied) widthshow 180 280.649963 M 0.891983 0 32 (range of the old memory object, the visible mechanics of this operation are not so sim-) widthshow 180 292.649902 M 0.785324 0 32 (ple, and are controlled by the v) widthshow 308.602112 292.649902 M 0.785324 0 32 (alue of the cop) widthshow 370.008118 292.649902 M 0.785324 0 32 (y strate) widthshow 399.803528 292.649902 M 0.785324 0 32 (gy \(set by ) widthshow 0 FF 444.099518 292.649902 M 0.785324 0 32 (memory_object_r) widthshow 519.999634 292.649902 M 0.785324 0 32 (eady) widthshow 3 FF 180 304.649841 M 2.12886 0 32 (or ) widthshow 0 FF 192.958862 304.649841 M 2.12886 0 32 (memory_object_set_attrib) widthshow 305.498993 304.649841 M 2.12886 0 32 (utes) widthshow 3 FF 322.718994 304.649841 M 2.12886 0 32 ( when the object is initialized, or by ) widthshow 0 FF 485.569885 304.649841 M 2.12886 0 32 (memory_ob-) widthshow 180 316.64978 M 0.111389 0 32 (ject_change_attrib) widthshow 259.780121 316.64978 M 0.111389 0 32 (utes) widthshow 3 FF 277.000122 316.64978 M 0.111389 0 32 ( or ) widthshow 0 FF 290.552917 316.64978 M 0.111389 0 32 (memory_object_set_attrib) widthshow 403.093018 316.64978 M 0.111389 0 32 (utes) widthshow 3 FF 420.313049 316.64978 M 0.111389 0 32 ( thereafter\) for the old memo-) widthshow 3 FF 180 328.649719 M 0.364944 0 32 (ry object, as discussed belo) widthshow 290.359924 328.649719 M 0.364944 0 32 (w) widthshow 296.930298 328.649719 M 0.364944 0 32 (. Changing the cop) widthshow 373.475159 328.649719 M 0.364944 0 32 (y strate) widthshow 402.85022 328.649719 M 0.364944 0 32 (gy for a memory object can cause) widthshow 3 FF 180 340.649658 M 0.467911 0 32 (a dramatic \337urry of acti) widthshow 276.041809 340.649658 M 0.467911 0 32 (vity as the k) widthshow 325.955566 340.649658 M 0.467911 0 32 (ernel adjusts to the requirements of the ne) widthshow 496.451111 340.649658 M 0.467911 0 32 (w strate) widthshow 528.149109 340.649658 M 0.467911 0 32 (gy) widthshow 537.499451 340.649658 M 0.467911 0 32 (.) widthshow 180 352.649597 M 1.631042 0 32 (F) widthshow 185.41008 352.649597 M 1.631042 0 32 (or this reason, ) widthshow 0 FF 249.183212 352.649597 M 1.631042 0 32 (memory_object_change_attrib) widthshow 380.063354 352.649597 M 1.631042 0 32 (utes) widthshow 3 FF 397.283325 352.649597 M 1.631042 0 32 ( can optionally return a reply \() widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 528.709595 352.649597 M 1.631042 0 32 (r) widthshow 532.229797 352.649597 M 1.631042 0 32 (e-) widthshow 180 364.649536 M 1.623718 0 32 (ply_port ) widthshow 6 (Symbol) 10 1 mymakefontmetric 6 FF 218.013718 364.649536 M 1.623718 0 32 widthshow 0 FF 232.007431 364.649536 M 1.623718 0 32 (memory_object_change_completed) widthshow 3 FF 382.527466 364.649536 M 1.623718 0 32 (\) which can be used for synchroniza-) widthshow (tion.) 180.0 376.649 T 3 FF 180 400.649414 M 0.354614 0 32 (The typical memory object has the property that its pages can only be modi\336ed by virtue) widthshow 180 412.649353 M 0.495331 0 32 (of being mapped into some task\325) widthshow 312.746948 412.649353 M 0.495331 0 32 (s address space and being manipulated by direct memo-) widthshow 180 424.649292 M 0.76683 0 32 (ry references by that task. If this can only happen on one host, then all modi\336cations to) widthshow 180 436.649231 M 0.957489 0 32 (the pages of a memory object will occur on that one host, and be completely visible to) widthshow 180 448.64917 M 1.162109 0 32 (the k) widthshow 200.782166 448.64917 M 1.162109 0 32 (ernel as it maintains its memory cache objects. In this case, the memory manager) widthshow 180 460.649109 M 1.495972 0 32 (w) widthshow 187.120056 460.649109 M 1.495972 0 32 (ould set the memory object\325) widthshow 304.764252 460.649109 M 1.495972 0 32 (s cop) widthshow 326.990295 460.649109 M 1.495972 0 32 (y strate) widthshow 357.496338 460.649109 M 1.495972 0 32 (gy to MEMOR) widthshow 420.398621 460.649109 M 1.495972 0 32 (Y_OBJECT_COPY_DELA) widthshow 531.569214 460.649109 M 1.495972 0 32 (Y) widthshow 537.499939 460.649109 M 1.495972 0 32 (,) widthshow 180 472.649048 M 0.720779 0 32 (the standard cop) widthshow 246.881622 472.649048 M 0.720779 0 32 (y-on-write optimization. This causes the ne) widthshow 423.545654 472.649048 M 0.720779 0 32 (w memory object to be b) widthshow 526.659668 472.649048 M 0.720779 0 32 (uilt) widthshow 180 484.648987 M 0.522797 0 32 (as a temporary object managed by the def) widthshow 350.459656 484.648987 M 0.522797 0 32 (ault memory manager) widthshow 438.715576 484.648987 M 0.522797 0 32 (. The beha) widthshow 481.491272 484.648987 M 0.522797 0 32 (vior of the old) widthshow (and the ne) 180.0 496.649 T (w objects is as follo) 220.85 496.649 T (ws:) 300.04 496.649 T 7 (Times-Roman) 7 1 mymakefontmetric 7 FF 180.0 514.649 T 3 FF (Both the ne) 193.536 514.649 T (w and the old memory objects share pages currently in memory) 239.396 514.649 T (.) 493.147 514.649 T 7 FF 180.0 529.649 T 3 FF 193.535995 529.648804 M 1.500854 0 32 (If a page of the ne) widthshow 273.260437 529.648804 M 1.500854 0 32 (w object is referenced that is not memory resident \(and not yet) widthshow 193.535995 541.648743 M 0.507584 0 32 widthshow 262.06131 541.648743 M 0.507584 0 32 (w\), a message is sent to the old abstract memory object for the data.) widthshow 193.535995 553.648682 M 0.524139 0 32 (This request cannot be distinguished by the memory manager from a reference to the) widthshow 193.535995 565.648621 M 0.488235 0 32 (old memory object. This fetched page will be shared by the old and the ne) widthshow 496.461456 565.648621 M 0.488235 0 32 (w memory) widthshow (object.) 193.536 577.649 T 7 FF 180.0 592.649 T 3 FF 193.535995 592.648499 M 0.962219 0 32 (Whene) widthshow 221.60614 592.648499 M 0.962219 0 32 (v) widthshow 226.456223 592.648499 M 0.962219 0 32 (er a page of the old object is to be modi\336ed \(by an attempted modify refer-) widthshow 193.535995 604.648438 M 0.928879 0 32 (ence to either the old or to the ne) widthshow 332.357178 604.648438 M 0.928879 0 32 (w object \(since the) widthshow 410.253906 604.648438 M 0.928879 0 32 (y are currently sharing ph) widthshow 516.669434 604.648438 M 0.928879 0 32 (ysical) widthshow 193.535995 616.648376 M 0.784836 0 32 (memory pages\)\), the k) widthshow 285.770569 616.648376 M 0.784836 0 32 (ernel \336rst \322pushes\323 the un-modi\336ed v) widthshow 439.704895 616.648376 M 0.784836 0 32 (alue of the page into the) widthshow 193.535995 628.648315 M 0.615494 0 32 (ne) widthshow 202.726135 628.648315 M 0.615494 0 32 (w object, so that the ne) widthshow 297.763733 628.648315 M 0.615494 0 32 (w object does indeed see a cop) widthshow 424.656799 628.648315 M 0.615494 0 32 (y of the original data of that) widthshow (page. ) 193.536 640.648 T 7 FF 180.0 655.648 T 3 FF 193.536 655.648 T (ault memory manager) 352.276 655.648 T (.) 439.486 655.648 T 3 FF 180 679.648193 M 1.152374 0 32 (The MEMOR) widthshow 236.332733 679.648193 M 1.152374 0 32 (Y_OBJECT_COPY_TEMPORAR) widthshow 375.693085 679.648193 M 1.152374 0 32 (Y strate) widthshow 408.075562 679.648193 M 1.152374 0 32 (gy also has this ef) widthshow 484.095184 679.648193 M 1.152374 0 32 (fect. This ob-) widthshow 180 691.648193 M 0.32814 0 32 (ject attrib) widthshow 218.178253 691.648193 M 0.32814 0 32 (ute \(temporary\) has the additional \(unrelated\) property that, when terminated as) widthshow 558 672.981567 2 21.999969 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 55 55 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (51 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Memory Objects) 72.0 55.824 T 0.25 SL 3.86 setmiterlimit 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 72 114.666656 M 0.883286 0 32 (the result of no e) widthshow 142.593231 114.666656 M 0.883286 0 32 (xtant mappings of the object, the k) widthshow 286.393005 114.666656 M 0.883286 0 32 (ernel discards an) widthshow 355.209656 114.666656 M 0.883286 0 32 (y cached pages in-) widthshow (stead of returning them to the memory manager) 72.0 126.667 T (.) 262.25 126.667 T 3 FF 72 150.666595 M 0.846634 0 32 (If the old memory object can be modi\336ed in a w) widthshow 273.116394 150.666595 M 0.846634 0 32 (ay not visible to the k) widthshow 363.639648 150.666595 M 0.846634 0 32 (ernel on a single) widthshow 72 162.666534 M 1.309082 0 32 (host \(netw) widthshow 115.149139 162.666534 M 1.309082 0 32 (ork shared memory) widthshow 194.87767 162.666534 M 1.309082 0 32 (, for e) widthshow 220.945923 162.666534 M 1.309082 0 32 (xample, or direct access by the memory manager\),) widthshow (then alternate cop) 72.0 174.666 T (y strate) 142.99 174.666 T (gies are needed. T) 172.0 174.666 T (o see this, consider the follo) 243.951 174.666 T (wing scenario:) 355.911 174.666 T 4 (Times-Roman) 7 1 mymakefontmetric 4 FF 72.0 192.666 T 3 FF 85.535995 192.666412 M 1.029541 0 32 (A virtual cop) widthshow 140.265137 192.666412 M 1.029541 0 32 (y is requested. Some page of the range, ho) widthshow 317.661621 192.666412 M 1.029541 0 32 (we) widthshow 329.071777 192.666412 M 1.029541 0 32 (v) widthshow 333.921844 192.666412 M 1.029541 0 32 (er) widthshow 341.292053 192.666412 M 1.029541 0 32 (, is not in memory on) widthshow (the cop) 85.536 204.666 T (ying host.) 114.596 204.666 T 4 FF 72.0 219.666 T 3 FF (The non-resident page of the range, resident on some other host, is modi\336ed.) 85.536 219.666 T 4 FF 72.0 234.666 T 3 FF 85.535995 234.666229 M 0.805542 0 32 (The ne) widthshow 113.58168 234.666229 M 0.805542 0 32 (w \(cop) widthshow 141.777283 234.666229 M 0.805542 0 32 (y\) memory object on the cop) widthshow 260.965057 234.666229 M 0.805542 0 32 (ying host mak) widthshow 319.146179 234.666229 M 0.805542 0 32 (es a request for the page. It) widthshow 85.535995 246.666168 M 0.217209 0 32 (recei) widthshow 104.716141 246.666168 M 0.217209 0 32 (v) widthshow 109.566223 246.666168 M 0.217209 0 32 (es the ne) widthshow 144.740784 246.666168 M 0.217209 0 32 (w v) widthshow 159.428131 246.666168 M 0.217209 0 32 (alue, not the v) widthshow 216.489899 246.666168 M 0.217209 0 32 (alue the page w) widthshow 279.521606 246.666168 M 0.217209 0 32 (ould ha) widthshow 309.258911 246.666168 M 0.217209 0 32 (v) widthshow 314.109009 246.666168 M 0.217209 0 32 (e had at the time of the virtu-) widthshow (al cop) 85.536 258.666 T (y) 109.596 258.666 T (.) 113.946 258.666 T 72 282.666046 M 0.575638 0 32 (T) widthshow 77.31044 282.666046 M 0.575638 0 32 (o g) widthshow 90.336105 282.666046 M 0.575638 0 32 (ain control o) widthshow 141.887466 282.666046 M 0.575638 0 32 (v) widthshow 146.737549 282.666046 M 0.575638 0 32 (er the semantics in these cases, the k) widthshow 296.74707 282.666046 M 0.575638 0 32 (ernel pro) widthshow 332.992798 282.666046 M 0.575638 0 32 (vides tw) widthshow 367.078491 282.666046 M 0.575638 0 32 (o alternate cop) widthshow 426.999847 282.666046 M 0.575638 0 32 (y) widthshow 72 294.665985 M 7.153046 0 32 (strate) widthshow 93.510086 294.665985 M 7.153046 0 32 (gies, MEMOR) widthshow 158.903488 294.665985 M 7.153046 0 32 (Y_OBJECT_COPY_NONE and MEMOR) widthshow 343.109924 294.665985 M 7.153046 0 32 (Y_OBJECT_COPY_-) widthshow (CALL.) 72.0 306.666 T 72 330.665863 M 1.156616 0 32 (MEMOR) widthshow 109.130356 330.665863 M 1.156616 0 32 (Y_OBJECT_COPY_NONE is used when the memory manager is not capable) widthshow 72 342.665802 M 0.997269 0 32 (of implementing the correct semantics in an intelligent w) widthshow 308.188232 342.665802 M 0.997269 0 32 (ay) widthshow 316.978577 342.665802 M 0.997269 0 32 (. In this case, at the time of) widthshow 72 354.665741 M 0.50708 0 32 (the virtual cop) widthshow 130.684219 354.665741 M 0.50708 0 32 (y) widthshow 135.034576 354.665741 M 0.50708 0 32 (, the k) widthshow 160.668793 354.665741 M 0.50708 0 32 (ernel constructs the ne) widthshow 251.640182 354.665741 M 0.50708 0 32 (w memory object as a def) widthshow 357.105652 354.665741 M 0.50708 0 32 (ault memory man-) widthshow 72 366.66568 M 0.463821 0 32 (ager managed temporary object with its contents e) widthshow 276.446838 366.66568 M 0.463821 0 32 (xplicitly copied \(at this time\) from the) widthshow (old memory object \(thus requesting all pages at this time from the memory manager\).) 72.0 378.666 T 72 402.665558 M 0.953247 0 32 (If the memory manager can perform intelligent cop) widthshow 283.802795 402.665558 M 0.953247 0 32 (y semantics, MEMOR) widthshow 374.779663 402.665558 M 0.953247 0 32 (Y_OBJECT_-) widthshow 72 414.665497 M 1.161652 0 32 (COPY_CALL is used. \(Important note: This feature is scheduled for replacement. It is) widthshow 72 426.665436 M 0.32135 0 32 (un-tested and belie) widthshow 147.932846 426.665436 M 0.32135 0 32 (v) widthshow 152.782928 426.665436 M 0.32135 0 32 (ed not to w) widthshow 198.367035 426.665436 M 0.32135 0 32 (ork.\). This strate) widthshow 264.959839 426.665436 M 0.32135 0 32 (gy dif) widthshow 288.641296 426.665436 M 0.32135 0 32 (fers from the other tw) widthshow 377.026794 426.665436 M 0.32135 0 32 (o cop) widthshow 399.188171 426.665436 M 0.32135 0 32 (y strate-) widthshow 72 438.665375 M 0.057098 0 32 (gies in that the ne) widthshow 142.528534 438.665375 M 0.057098 0 32 (w memory cache object, instead of ha) widthshow 294.02124 438.665375 M 0.057098 0 32 (ving an associated abstract memo-) widthshow 72 450.665314 M 1.089966 0 32 (ry object managed by the def) widthshow 193.7099 450.665314 M 1.089966 0 32 (ault memory manager) widthshow 283.250061 450.665314 M 1.089966 0 32 (, has an associated abstract memory) widthshow 72 462.665253 M 0.538437 0 32 (object maintained by the same memory manager as that which manages the old memory) widthshow (object. This is done as follo) 72.0 474.665 T (ws:) 182.3 474.665 T 4 FF 72.0 492.665 T 3 FF 85.535995 492.665131 M 1.289474 0 32 (The k) widthshow 109.775528 492.665131 M 1.289474 0 32 (ernel creates a port to represent the ne) widthshow 270.442017 492.665131 M 1.289474 0 32 (w abstract memory object. The recei) widthshow 422.709534 492.665131 M 1.289474 0 32 (v) widthshow 427.559631 492.665131 M 1.289474 0 32 (e) widthshow 85.535995 504.66507 M 0.548172 0 32 (right for this port is sent via ) widthshow 5 (Times-Italic) 10 1 mymakefontmetric 5 FF 202.9832 504.66507 M 0.548172 0 32 (old_abstr) widthshow 241.173279 504.66507 M 0.548172 0 32 (act_memory_object ) widthshow 6 (Symbol) 10 1 mymakefontmetric 6 FF 323.091461 504.66507 M 0.548172 0 32 widthshow 3 FF 332.961456 504.66507 M 0.548172 0 32 ( ) widthshow 1 FF 336.009644 504.66507 M 0.548172 0 32 (memory_object_copy) widthshow 3 FF 427 504.66507 M 0.548172 0 32 (.,) widthshow 85.535995 516.665039 M 0.213348 0 32 (which informs the memory manager of the e) widthshow 264.899536 516.665039 M 0.213348 0 32 (xistence of a ne) widthshow 327.769714 516.665039 M 0.213348 0 32 (w abstract memory object) widthshow 85.535995 528.664917 M 1.218216 0 32 (which is to be a virtual cop) widthshow 201.065353 528.664917 M 1.218216 0 32 (y of the speci\336ed old abstract memory object. This call) widthshow (also includes the associated old memory cache control port.) 85.536 540.665 T 4 FF 72.0 555.665 T 3 FF 85.535995 555.664795 M 0.88295 0 32 (The k) widthshow 109.369003 555.664795 M 0.88295 0 32 (ernel performs a ) widthshow 5 FF 180.047867 555.664795 M 0.88295 0 32 (ne) widthshow 189.337952 555.664795 M 0.88295 0 32 (w_abstr) widthshow 221.41803 555.664795 M 0.88295 0 32 (act_memory_object ) widthshow 6 FF 303.67099 555.664795 M 0.88295 0 32 widthshow 3 FF 313.540985 555.664795 M 0.88295 0 32 ( ) widthshow 1 FF 316.92395 555.664795 M 0.88295 0 32 (memory_object_init) widthshow 3 FF 403.013947 555.664795 M 0.88295 0 32 ( call to) widthshow 85.535995 567.664795 M 0.349503 0 32 (initialize the ne) widthshow 147.645142 567.664795 M 0.349503 0 32 (w memory object. This informs the memory manager of the name and) widthshow 85.535995 579.664673 M 1.328613 0 32 (control ports for the memory cache object associated with the ne) widthshow 356.852295 579.664673 M 1.328613 0 32 (w memory object.) widthshow (The memory manager responds in the usual w) 85.536 591.665 T (ay) 270.126 591.665 T (.) 278.916 591.665 T (The memory objects are then maintained as follo) 72.0 615.665 T (ws:) 267.55 615.665 T 4 FF 72.0 633.665 T 3 FF (Both the ne) 85.536 633.665 T (w and the old memory objects share pages currently resident in memory) 131.396 633.665 T (.) 419.307 633.665 T 4 FF 72.0 648.664 T 3 FF 85.535995 648.664429 M 0.962219 0 32 (Whene) widthshow 113.60614 648.664429 M 0.962219 0 32 (v) widthshow 118.456223 648.664429 M 0.962219 0 32 (er a page of the old object is to be modi\336ed \(by an attempted modify refer-) widthshow 85.535995 660.664429 M 0.928879 0 32 (ence to either the old or to the ne) widthshow 224.357178 660.664429 M 0.928879 0 32 (w object \(since the) widthshow 302.253906 660.664429 M 0.928879 0 32 (y are currently sharing ph) widthshow 408.669464 660.664429 M 0.928879 0 32 (ysical) widthshow 85.535995 672.664307 M 0.784836 0 32 (memory pages\)\), the k) widthshow 177.770569 672.664307 M 0.784836 0 32 (ernel \336rst \322pushes\323 the un-modi\336ed v) widthshow 331.704895 672.664307 M 0.784836 0 32 (alue of the page into the) widthshow 85.535995 684.664307 M 0.615494 0 32 (ne) widthshow 94.726135 684.664307 M 0.615494 0 32 (w object, so that the ne) widthshow 189.763748 684.664307 M 0.615494 0 32 (w object does indeed see a cop) widthshow 316.656799 684.664307 M 0.615494 0 32 (y of the original data of that) widthshow (page.) 85.536 696.664 T 52 108 2 21.999969 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 56 56 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (52 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (V) 180.0 55.824 T (irtual Memory Management) 186.165 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 7 1 mymakefontmetric 3 FF 180.0 112.651 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 193.535995 112.650635 M 0.253754 0 32 (If a page of the old object is referenced that is not memory resident, a message is sent) widthshow 193.535995 124.650574 M 0.694229 0 32 (to the old abstract memory object for the data. This fetched page will appear only in) widthshow (the old memory object.) 193.536 136.651 T 3 FF 180.0 151.65 T 4 FF 193.535995 151.650452 M 0.477707 0 32 (If a page of the ne) widthshow 268.144684 151.650452 M 0.477707 0 32 (w object is referenced that is not memory resident \(or \322pushed\323\), a) widthshow 193.535995 163.650391 M 0.155563 0 32 (message is sent to the ne) widthshow 292.66394 163.650391 M 0.155563 0 32 (w abstract memory object for the data. This fetched page will) widthshow 193.535995 175.65033 M 0.450897 0 32 (be \322pushed\323 onto the ne) widthshow 291.179749 175.65033 M 0.450897 0 32 (w memory object, and will not appear in the old memory ob-) widthshow 193.535995 187.650269 M 0.900955 0 32 (ject. If the memory manager decides that the v) widthshow 386.283813 187.650269 M 0.900955 0 32 (alue of the old memory object\325) widthshow 513.828857 187.650269 M 0.900955 0 32 (s page) widthshow 193.535995 199.650208 M 0.331497 0 32 (can be used, the memory manager may respond with ) widthshow 0 FF 409.809509 199.650208 M 0.331497 0 32 (memory_object_data_una) widthshow 521.209656 199.650208 M 0.331497 0 32 (v) widthshow 526.10968 199.650208 M 0.331497 0 32 (ail-) widthshow 193.535995 211.650146 M 0.563583 0 32 (able) widthshow 4 FF 211.315994 211.650146 M 0.563583 0 32 (, which then sends a message to the old abstract memory object, or uses its page) widthshow (if resident.) 193.536 223.65 T 3 FF 180.0 238.65 T 4 FF 193.535995 238.650024 M 1.122818 0 32 widthshow 0 FF 485.569824 238.650024 M 1.122818 0 32 (memory_ob-) widthshow 193.535995 250.649963 M 1.192627 0 32 (ject_data_write) widthshow 4 FF 260.176025 250.649963 M 1.192627 0 32 ( or ) widthshow 0 FF 275.891266 250.649963 M 1.192627 0 32 (memory_object_data_r) widthshow 375.681396 250.649963 M 1.192627 0 32 (etur) widthshow 393.301453 250.649963 M 1.192627 0 32 (n) widthshow 4 FF 398.86145 250.649963 M 1.192627 0 32 ( messages will be sent to the ne) widthshow 532.780029 250.649963 M 1.192627 0 32 (w) widthshow 4 FF (abstract memory object. \(It is not kno) 193.536 262.65 T (wn whether this w) 343.546 262.65 T (orks correctly or not.\)) 417.046 262.65 T 5 (Times-Bold) 12 1 mymakefontmetric 5 FF (Default Memory Manager) 180.0 293.983 T 4 FF 180 310.64978 M 0.295334 0 32 (The def) widthshow 211.015396 310.64978 M 0.295334 0 32 (ault memory manager is, in most re) widthshow 354.567505 310.64978 M 0.295334 0 32 (g) widthshow 359.517517 310.64978 M 0.295334 0 32 (ards, simply an e) widthshow 428.023621 310.64978 M 0.295334 0 32 (xternal memory manager) widthshow 528.594604 310.64978 M 0.295334 0 32 (. It) widthshow 180 322.649719 M 2.468796 0 32 (pro) widthshow 193.180084 322.649719 M 2.468796 0 32 (vides backing storage for anon) widthshow 325.655365 322.649719 M 2.468796 0 32 (ymous memory \() widthshow 0 FF 398.922974 322.649719 M 2.468796 0 32 (vm_allocate) widthshow 4 FF 450.022949 322.649719 M 2.468796 0 32 (, cop) widthshow 471.831818 322.649719 M 2.468796 0 32 (y memory) widthshow 514.480957 322.649719 M 2.468796 0 32 (...\). A) widthshow 180 334.649658 M 0.457794 0 32 (v) widthshow 184.850082 334.649658 M 0.457794 0 32 (ery signi\336cant property of the def) widthshow 321.179138 334.649658 M 0.457794 0 32 (ault memory manager is that it is the memory manag-) widthshow 180 346.649597 M 0.188629 0 32 (er of last resort, one which cannot f) widthshow 322.850464 346.649597 M 0.188629 0 32 (ail. Since no memory manager can pro) widthshow 478.522339 346.649597 M 0.188629 0 32 (vide paging for) widthshow 180 358.649536 M 1.152451 0 32 (it, its data writing path is completely wired in memory) widthshow 407.492432 358.649536 M 1.152451 0 32 (, and all memory passed to it is) widthshow 180 370.649475 M 0.326385 0 32 (wired as well. This memory manager must promptly deal with its memory) widthshow 480.140625 370.649475 M 0.326385 0 32 (, and discard it) widthshow (when paged out to backing storage since it is ef) 180.0 382.649 T (fecti) 369.44 382.649 T (v) 386.96 382.649 T (ely wired.) 391.81 382.649 T 180 406.649353 M 0.339127 0 32 (The def) widthshow 211.059189 406.649353 M 0.339127 0 32 (ault memory manager for a host is set by ) widthshow 6 (Times-Italic) 10 1 mymakefontmetric 6 FF 379.921326 406.649353 M 0.339127 0 32 (host_contr) widthshow 422.251587 406.649353 M 0.339127 0 32 (ol ) widthshow 7 (Symbol) 10 1 mymakefontmetric 7 FF 432.870728 406.649353 M 0.339127 0 32 widthshow 0 FF 442.740723 406.649353 M 0.339127 0 32 ( vm_set_default_mem-) widthshow (ory_manager) 180.0 418.649 T 4 FF (. This is initially the k) 236.66 418.649 T (ernel\325) 324.35 418.649 T (s internal memory manager) 347.121 418.649 T (.) 456.271 418.649 T 180 442.649231 M 1.534225 0 32 (Memory back) widthshow 237.254288 442.649231 M 1.534225 0 32 (ed by the def) widthshow 293.687012 442.649231 M 1.534225 0 32 (ault memory manager can be created in a v) widthshow 477.880981 442.649231 M 1.534225 0 32 (ariety of w) widthshow 524.169495 442.649231 M 1.534225 0 32 (ays.) widthshow 180 454.64917 M 0.768356 0 32 (These creations do not in) widthshow 283.213654 454.64917 M 0.768356 0 32 (v) widthshow 288.013763 454.64917 M 0.768356 0 32 (olv) widthshow 300.64386 454.64917 M 0.768356 0 32 (e the def) widthshow 336.51062 454.64917 M 0.768356 0 32 (ault memory manager directly) widthshow 458.976074 454.64917 M 0.768356 0 32 (, so the k) widthshow 497.291199 454.64917 M 0.768356 0 32 (ernel must) widthshow 180 466.649109 M 0.21579 0 32 (inform the def) widthshow 237.541641 466.649109 M 0.21579 0 32 (ault memory manager e) widthshow 332.739105 466.649109 M 0.21579 0 32 (xplicitly about ne) widthshow 402.920837 466.649109 M 0.21579 0 32 (w def) widthshow 425.526672 466.649109 M 0.21579 0 32 (ault memory objects. This is) widthshow 180 478.649048 M 0.985519 0 32 (done with ) widthshow 6 FF 224.19104 478.649048 M 0.985519 0 32 (abstr) widthshow 244.60112 478.649048 M 0.985519 0 32 (act_memory_object ) widthshow 7 FF 326.956665 478.649048 M 0.985519 0 32 widthshow 0 FF 336.82666 478.649048 M 0.985519 0 32 ( memory_object_cr) widthshow 420.652283 478.649048 M 0.985519 0 32 (eate) widthshow 4 FF 437.862305 478.649048 M 0.985519 0 32 (. A memory object to be) widthshow 180 490.648987 M 0.950851 0 32 (managed by the def) widthshow 261.342621 490.648987 M 0.950851 0 32 (ault pager can be created by the pri) widthshow 407.97876 490.648987 M 0.950851 0 32 (vile) widthshow 422.828827 490.648987 M 0.950851 0 32 (ged ) widthshow 6 FF 440.719666 490.648987 M 0.950851 0 32 (abstr) widthshow 461.129761 490.648987 M 0.950851 0 32 (act_memory_object) widthshow 7 FF 180.0 502.649 T 0 FF (default_pager_object_cr) 192.37 502.649 T (eate.) 296.61 502.649 T 4 FF 180 526.648865 M 1.476974 0 32 (The def) widthshow 212.197037 526.648865 M 1.476974 0 32 (ault memory manager pro) widthshow 320.068054 526.648865 M 1.476974 0 32 (vides backing storage for temporary memory objects) widthshow 180 538.648804 M 0.205338 0 32 (created by the k) widthshow 244.106079 538.648804 M 0.205338 0 32 (ernel to represent virtual cop) widthshow 359.797485 538.648804 M 0.205338 0 32 (y ranges. These temporary objects \(e) widthshow 507.854309 538.648804 M 0.205338 0 32 (xcept in) widthshow 180 550.648743 M 1.075897 0 32 (the case of the MEMOR) widthshow 281.41394 550.648743 M 1.075897 0 32 (Y_OBJECT_COPY_CALL strate) widthshow 418.169922 550.648743 M 1.075897 0 32 (gy) widthshow 427.520294 550.648743 M 1.075897 0 32 (, which does not w) widthshow 506.993958 550.648743 M 1.075897 0 32 (ork cor-) widthshow 180 562.648682 M 0.724258 0 32 (rectly\) ha) widthshow 218.564377 562.648682 M 0.724258 0 32 (v) widthshow 223.414459 562.648682 M 0.724258 0 32 (e an additional operation applied to them. When a page from the original ob-) widthshow 180 574.648621 M 0.783539 0 32 (ject is \322pushed\323 onto them, this pushed data is supplied to the def) widthshow 450.672546 574.648621 M 0.783539 0 32 (ault memory manager) widthshow 180 586.64856 M 1.872818 0 32 (with ) widthshow 6 FF 202.152817 586.64856 M 1.872818 0 32 (abstr) widthshow 222.562897 586.64856 M 1.872818 0 32 (act_memory_object ) widthshow 7 FF 305.805725 586.64856 M 1.872818 0 32 widthshow 0 FF 320.048523 586.64856 M 1.872818 0 32 (memory_object_data_initialize) widthshow 4 FF 452.248535 586.64856 M 1.872818 0 32 (.) widthshow 0 FF 454.748535 586.64856 M 1.872818 0 32 ( ) widthshow 4 FF 459.121368 586.64856 M 1.872818 0 32 (The reason for this) widthshow 180 598.648499 M 1.437103 0 32 (additional primiti) widthshow 250.917236 598.648499 M 1.437103 0 32 (v) widthshow 255.767319 598.648499 M 1.437103 0 32 (e is that the k) widthshow 314.745789 598.648499 M 1.437103 0 32 (ernel does not completely track) widthshow 0 FF 446.024231 598.648499 M 1.437103 0 32 ( ) widthshow 4 FF 449.961304 598.648499 M 1.437103 0 32 (the e) widthshow 470.408508 598.648499 M 1.437103 0 32 (xtent to which it) widthshow 180 610.648438 M 0.461349 0 32 (pushes pages onto the cop) widthshow 286.175476 610.648438 M 0.461349 0 32 (y) widthshow 290.525818 610.648438 M 0.461349 0 32 (. \(If the cop) widthshow 338.45993 610.648438 M 0.461349 0 32 (y page is paged-out, a subsequent modi\336cation of) widthshow 4 FF 180 622.648376 M 0.430634 0 32 (the original object will push the modi\336ed original page ag) widthshow 415.755737 622.648376 M 0.430634 0 32 (ain.\) As such, it is possible for) widthshow 180 634.648315 M 1.543579 0 32 (the def) widthshow 208.93364 634.648315 M 1.543579 0 32 (ault memory manager to recei) widthshow 334.828125 634.648315 M 1.543579 0 32 (v) widthshow 339.678192 634.648315 M 1.543579 0 32 (e more than one \322push\323 message \() widthshow 0 FF 485.569702 634.648315 M 1.543579 0 32 (memory_ob-) widthshow 180 646.648254 M 0.494949 0 32 (ject_data_initialize) widthshow 4 FF 261.100006 646.648254 M 0.494949 0 32 (\) for a page. The manager must ignore all b) widthshow 438.644684 646.648254 M 0.494949 0 32 (ut the \336rst of these. Note) widthshow 180 658.648193 M 0.197479 0 32 (that ) widthshow 0 FF 197.697479 658.648193 M 0.197479 0 32 (memory_object_data_initialize) widthshow 4 FF 329.897491 658.648193 M 0.197479 0 32 ( is called only when a page is pushed onto the cop) widthshow 532.219849 658.648193 M 0.197479 0 32 (y;) widthshow 180 670.648132 M 0.57457 0 32 (if the cop) widthshow 218.819199 670.648132 M 0.57457 0 32 (y\325) widthshow 226.599503 670.648132 M 0.57457 0 32 (s pages are themselv) widthshow 310.65332 670.648132 M 0.57457 0 32 (es modi\336ed, the modi\336ed pages will be sent to the man-) widthshow (ager with ) 180.0 682.648 T 0 FF (memory_object_data_write) 219.99 682.648 T 4 FF ( or ) 337.73 682.648 T 0 FF (memory_object_data_r) 351.06 682.648 T (etur) 450.85 682.648 T (n) 468.47 682.648 T 4 FF (.) 474.03 682.648 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 57 57 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (53 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Memory Objects) 72.0 55.824 T 0.25 SL 3.86 setmiterlimit 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 72 114.666626 M 0.954086 0 32 (It can happen that the def) widthshow 178.030502 114.666626 M 0.954086 0 32 (ault memory manager will be ask) widthshow 316.291016 114.666626 M 0.954086 0 32 (ed for a page of a cop) widthshow 408.545593 114.666626 M 0.954086 0 32 (y that) widthshow 72 126.666565 M 0.049927 0 32 (has ne) widthshow 97.070068 126.666565 M 0.049927 0 32 (v) widthshow 101.920151 126.666565 M 0.049927 0 32 (er been \322pushed\323 to it. The manager\325) widthshow 249.680038 126.666565 M 0.049927 0 32 (s response in this case, as it w) widthshow 369.359589 126.666565 M 0.049927 0 32 (ould be for not-) widthshow 72 138.666504 M 1.696625 0 32 (yet-e) widthshow 91.840088 138.666504 M 1.696625 0 32 (xisting pages, is to call ) widthshow 1 FF 194.213211 138.666504 M 1.696625 0 32 (memory_object_data_una) widthshow 305.613342 138.666504 M 1.696625 0 32 (v) widthshow 310.513428 138.666504 M 1.696625 0 32 (ailable) widthshow 3 FF 338.853394 138.666504 M 1.696625 0 32 (. Instead of creating a) widthshow 72 150.666443 M 0.757477 0 32 (zero page, this call, in such a case, will cop) widthshow 251.457367 150.666443 M 0.757477 0 32 (y the appropriate page from the original ob-) widthshow 72 162.666382 M 1.052094 0 32 (ject \(it follo) widthshow 121.074326 162.666382 M 1.052094 0 32 (ws that the original page has not been modi\336ed since no initialize message) widthshow (has been seen\).) 72.0 174.666 T 3 FF 72 198.66626 M 0.491791 0 32 (The def) widthshow 103.211853 198.66626 M 0.491791 0 32 (ault memory manager maintains v) widthshow 241.579163 198.66626 M 0.491791 0 32 (arious \(disk\) partitions as backing storage. The) widthshow 72 210.666199 M 0.356094 0 32 (e) widthshow 76.290085 210.666199 M 0.356094 0 32 (xtent of the def) widthshow 138.07843 210.666199 M 0.356094 0 32 (ault partition \(currently the only one\) can be found with ) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 367.159393 210.666199 M 0.356094 0 32 (abstr) widthshow 387.569458 210.666199 M 0.356094 0 32 (act_memo-) widthshow (ry_object ) 72.0 222.666 T 5 (Symbol) 10 1 mymakefontmetric 5 FF 112.27 222.666 T 1 FF (default_pager_inf) 124.64 222.666 T (o ) 200.5 222.666 T 3 FF (\(using a def) 208.0 222.666 T (ault pager object port\).) 255.11 222.666 T 6 (Times-Bold) 12 1 mymakefontmetric 6 FF (Miscellaneous Operations) 72.0 253.999 T 3 FF 72 270.666016 M 0.562469 0 32 (A service related to memory objects and memory managers is pro) widthshow 340.754822 270.666016 M 0.562469 0 32 (vided by ) widthshow 1 FF 379.099731 270.666016 M 0.562469 0 32 (de) widthshow 388.949829 270.666016 M 0.562469 0 32 (vice_map) widthshow 3 FF 429.499817 270.666016 M 0.562469 0 32 (,) widthshow 72 282.665955 M 1.077957 0 32 (which allo) widthshow 114.768097 282.665955 M 1.077957 0 32 (ws a portion of a task\325) widthshow 208.758194 282.665955 M 1.077957 0 32 (s address space to represent a ph) widthshow 345.135986 282.665955 M 1.077957 0 32 (ysical de) widthshow 381.23407 282.665955 M 1.077957 0 32 (vice. This is) widthshow (discussed under De) 72.0 294.666 T (vices.) 149.51 294.666 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 58 58 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (54 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (V) 180.0 55.824 T (irtual Memory Management) 186.165 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 59 59 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 2 SL 3.86 setmiterlimit 0 G 432 45 M 72 45 L S 2 SC 432 342 M 72 342 L S 0.25 SL 432 720 M 72 720 L S 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (55 ) widthshow 0 0 612 792 CR 1 G 72 99 360 225 NF 0 G 2 (Times-Roman) 12 1 mymakefontmetric 2 FF 72 114.999969 M 1.19989 0 (CHAPTER 6) ashow 3 (Times-Roman) 24 1 mymakefontmetric 3 FF 180 114.999969 M -0.479736 0 (Ph) ashow 204.264587 114.999969 M -0.479736 0 (ysical Resource ) ashow 180 144.999924 M -0.479736 0 (Management) ashow 1 G 72 360 360 344.015991 NF 0 G 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 72 366.666626 M 1.099243 0 32 (The Mach k) widthshow 122.418549 366.666626 M 1.099243 0 32 (ernel virtualizes the v) widthshow 211.836426 366.666626 M 1.099243 0 32 (arious resources it maintains. None the less, it is still) widthshow 72 378.666565 M 0.509186 0 32 (true that e) widthshow 112.758514 378.666565 M 0.509186 0 32 (v) widthshow 117.608597 378.666565 M 0.509186 0 32 (erything depends on the underlying ph) widthshow 274.254578 378.666565 M 0.509186 0 32 (ysical resources of the system, and cli-) widthshow 72 390.666504 M 0.483704 0 32 (ents are often a) widthshow 134.111206 390.666504 M 0.483704 0 32 (w) widthshow 141.231262 390.666504 M 0.483704 0 32 (are of this, not only to the e) widthshow 254.457275 390.666504 M 0.483704 0 32 (xtent that resource shortages occur) widthshow 394.842346 390.666504 M 0.483704 0 32 (, b) widthshow 405.12616 390.666504 M 0.483704 0 32 (ut also) widthshow (to the e) 72.0 402.666 T (xtent that clients ha) 101.29 402.666 T (v) 179.14 402.666 T (e some direct in\337uence o) 183.99 402.666 T (v) 283.82 402.666 T (er ph) 288.67 402.666 T (ysical resources.) 308.89 402.666 T 72 444.999695 360 3.024002 CR 432 446.51 M 72 446.51 L S 0 0 612 792 CR 5 (Times-Bold) 14 1 mymakefontmetric 5 FF (Ph) 72.0 440.333 T (ysical Memory) 88.128 440.333 T 4 FF 72 464.690308 M 0.378372 0 32 (Needless to say) widthshow 134.317108 464.690308 M 0.378372 0 32 (, the Mach k) widthshow 185.342285 464.690308 M 0.378372 0 32 (ernel itself uses ph) widthshow 261.137451 464.690308 M 0.378372 0 32 (ysical memory) widthshow 320.026184 464.690308 M 0.378372 0 32 (. The v) widthshow 348.583069 464.690308 M 0.378372 0 32 (arious k) widthshow 380.801483 464.690308 M 0.378372 0 32 (ernel objects) widthshow 72 476.690247 M 0.197449 0 32 (and associated data structures occup) widthshow 217.649872 476.690247 M 0.197449 0 32 (y ph) widthshow 235.297348 476.690247 M 0.197449 0 32 (ysical memory) widthshow 294.005157 476.690247 M 0.197449 0 32 (. It is a hardw) widthshow 349.405029 476.690247 M 0.197449 0 32 (are and implementa-) widthshow 72 488.690186 M 0.693085 0 32 (tion issue as to which of these structures can be sw) widthshow 282.13092 488.690186 M 0.693085 0 32 (apped or paged out of memory) widthshow 407.976715 488.690186 M 0.693085 0 32 (. Cur-) widthshow 72 500.690125 M 1.683456 0 32 (rently) widthshow 94.680359 500.690125 M 1.683456 0 32 (, clients ha) widthshow 140.897385 500.690125 M 1.683456 0 32 (v) widthshow 145.747467 500.690125 M 1.683456 0 32 (e no control o) widthshow 205.917923 500.690125 M 1.683456 0 32 (v) widthshow 210.768005 500.690125 M 1.683456 0 32 (er this memory) widthshow 274.035278 500.690125 M 1.683456 0 32 (, e) widthshow 285.00882 500.690125 M 1.683456 0 32 (xcept to the e) widthshow 343.509277 500.690125 M 1.683456 0 32 (xtent that the) widthshow 398.946289 500.690125 M 1.683456 0 32 (y create) widthshow (k) 72.0 512.69 T (ernel managed entities.) 76.9 512.69 T 72 536.690002 M 0.189972 0 32 (The majority of the ph) widthshow 162.699921 536.690002 M 0.189972 0 32 (ysical memory of the system forms a single paging pool. This pool) widthshow 72 548.689941 M 1.271851 0 32 (of pages forms a cache for the virtual memory system. The set of pages that reside in) widthshow 72 560.68988 M 0.349197 0 32 (ph) widthshow 81.950027 560.68988 M 0.349197 0 32 (ysical memory at an) widthshow 163.667709 560.68988 M 0.349197 0 32 (y gi) widthshow 179.047043 560.68988 M 0.349197 0 32 (v) widthshow 183.897125 560.68988 M 0.349197 0 32 (en time is decided by the page replacement algorithm, imple-) widthshow 72 572.689819 M 0.593491 0 32 (mented in the k) widthshow 135.620529 572.689819 M 0.593491 0 32 (ernel. W) widthshow 170.244247 572.689819 M 0.593491 0 32 (ith the e) widthshow 203.501312 572.689819 M 0.593491 0 32 (xception of the pri) widthshow 278.631927 572.689819 M 0.593491 0 32 (vile) widthshow 293.481995 572.689819 M 0.593491 0 32 (ged ) widthshow 1 FF 311.015503 572.689819 M 0.593491 0 32 (vm_wir) widthshow 343.605591 572.689819 M 0.593491 0 32 (e ) widthshow 4 FF 351.139099 572.689819 M 0.593491 0 32 (call, clients ha) widthshow 409.616211 572.689819 M 0.593491 0 32 (v) widthshow 414.466278 572.689819 M 0.593491 0 32 (e no) widthshow 4 FF 72 584.689758 M 1.091568 0 32 (control o) widthshow 108.771652 584.689758 M 1.091568 0 32 (v) widthshow 113.621735 584.689758 M 1.091568 0 32 (er this algorithm. Ev) widthshow 198.966522 584.689758 M 1.091568 0 32 (en e) widthshow 216.288177 584.689758 M 1.091568 0 32 (xternal memory managers ha) widthshow 335.723022 584.689758 M 1.091568 0 32 (v) widthshow 340.57309 584.689758 M 1.091568 0 32 (e no in\337uence; if the) widthshow 426.999451 584.689758 M 1.091568 0 32 (y) widthshow 72 596.689697 M 0.207474 0 32 (do not respond f) widthshow 137.79248 596.689697 M 0.207474 0 32 (ast enough to a request to write a page, the def) widthshow 325.557312 596.689697 M 0.207474 0 32 (ault memory manager will) widthshow (be used to mo) 72.0 608.69 T (v) 127.68 608.69 T (e the page from ph) 132.53 608.69 T (ysical memory to system paging storage.) 207.46 608.69 T 72 632.689575 M 0.274658 0 32 (When a memory object is no longer referenced, the k) widthshow 287.09201 632.689575 M 0.274658 0 32 (ernel normally frees all of its ph) widthshow 417 632.689575 M 0.274658 0 32 (ysi-) widthshow 72 644.689514 M 0.638428 0 32 (cal memory pages. A memory manager can mark an object\325) widthshow 316.576172 644.689514 M 0.638428 0 32 (s pages as ) widthshow 6 (Times-Italic) 10 1 mymakefontmetric 6 FF 360.981476 644.689514 M 0.638428 0 32 (cac) widthshow 374.711548 644.689514 M 0.638428 0 32 (heable) widthshow 4 FF 401.371582 644.689514 M 0.638428 0 32 (, mean-) widthshow 72 656.689453 M 0.157013 0 32 (ing that the object\325) widthshow 147.191345 656.689453 M 0.157013 0 32 (s pages will be mo) widthshow 222.109482 656.689453 M 0.157013 0 32 (v) widthshow 226.959564 656.689453 M 0.157013 0 32 (ed to a free list, b) widthshow 296.974731 656.689453 M 0.157013 0 32 (ut not destro) widthshow 347.188843 656.689453 M 0.157013 0 32 (yed. This w) widthshow 394.342896 656.689453 M 0.157013 0 32 (ould tend) widthshow (to be speci\336ed for memory objects that persist.) 72.0 668.689 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 60 60 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (56 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Ph) 180.0 55.824 T (ysical Resour) 190.368 55.824 T (ce Management) 241.452 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 180 119.983932 360 3.024002 CR 0.25 SL 2 SC 0 G 540 121.5 M 180 121.5 L S 0 0 612 792 CR 3 (Times-Bold) 14 1 mymakefontmetric 3 FF (Pr) 180.0 115.317 T (ocessors) 194.518 115.317 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 180 139.674561 M 0.23262 0 32 (Each ph) widthshow 212.672653 139.674561 M 0.23262 0 32 (ysical processor that is part of a host \(and capable of e) widthshow 431.971588 139.674561 M 0.23262 0 32 (x) widthshow 436.821655 139.674561 M 0.23262 0 32 (ecuting threads\) is named) widthshow 180 151.6745 M 0.942261 0 32 (by a processor port. Although signi\336cant in that the) widthshow 393.208191 151.6745 M 0.942261 0 32 (y perform the real w) widthshow 478.517273 151.6745 M 0.942261 0 32 (ork, processors) widthshow 180 163.674438 M 0.326187 0 32 (are not v) widthshow 215.492462 163.674438 M 0.326187 0 32 (ery signi\336cant in the Mach scheme of things other than as members of a proces-) widthshow 180 175.674377 M 0.419998 0 32 (sor set. It is a processor set that forms the basis for the pool of processors used to sched-) widthshow (ule a set of threads, and that has scheduling attrib) 180.0 187.674 T (utes associated with it.) 376.99 187.674 T 180 211.674255 M 0.697433 0 32 (Signi\336cant operations on processors are to af) widthshow 363.904755 211.674255 M 0.697433 0 32 (fect their processor set membership, and to) widthshow 180 223.674194 M 0.927811 0 32 (ph) widthshow 189.950027 223.674194 M 0.927811 0 32 (ysically control the processor) widthshow 309.663757 223.674194 M 0.927811 0 32 (. The list of processor ports for a gi) widthshow 457.646423 223.674194 M 0.927811 0 32 (v) widthshow 462.49649 223.674194 M 0.927811 0 32 (en host is obtained) widthshow (by ) 180.0 235.674 T 5 (Times-Italic) 10 1 mymakefontmetric 5 FF (host_contr) 192.5 235.674 T (ol ) 234.83 235.674 T 6 (Symbol) 10 1 mymakefontmetric 6 FF 245.11 235.674 T 0 FF ( host_pr) 254.98 235.674 T (ocessors) 290.08 235.674 T 4 FF (.) 325.07 235.674 T 4 FF 180 259.674133 M 0.789978 0 32 (FIGURE 10 sho) widthshow 246.330093 259.674133 M 0.789978 0 32 (ws the client visible processor and processor set structures. The proces-) widthshow 4 FF 180 271.674133 M 0.913803 0 32 (sor set control port pro) widthshow 274.605286 271.674133 M 0.913803 0 32 (vides access to the contained tasks, threads and processors \(only) widthshow (one sho) 180.0 283.674 T (wn here\). The set of all processors is also found via the host control port.) 210.58 283.674 T (The follo) 180.0 687.69 T (wing operations e) 216.69 687.69 T (xist:) 287.64 687.69 T 171 287.007446 378 380.015991 CR 3 SL 0 SC 0.6667 G 431.03 455.93 M 433.02 461.37 L 449.99 449 L 429.04 450.5 L F 431.04 455.94 M 351 485.01 L S 416.19 539.01 M 416.19 533.22 L 396 539.01 L 416.19 544.8 L F 432 539.01 M 416.19 539.01 L S 263.19 584.01 M 263.19 578.22 L 243 584.01 L 263.19 589.8 L F 306 584.01 M 263.19 584.01 L S 497.68 408.84 M 493.91 413.23 L 512.98 422 L 501.46 404.45 L F 497.7 408.84 M 387 314.01 L S 246.65 407.8 M 242.58 411.91 L 260.99 422 L 250.72 403.68 L F 225 386.01 M 246.66 407.8 L S 0 G 487.832642 320.17804 23.337997 1 NF 7 (Times-Roman) 14 1 mymakefontmetric 7 FF (host) 487.833 318.779 T 1 SL 468 296.007446 63 36 N 3 SL 187.178467 350.007446 91.821533 36 N 7 FF (processor port) 193.246 372.779 T 207 467.007446 144.99353 36 N (processor set name port) 213.22 489.779 T 270.182312 428.17804 53.64801 1 NF 7 FF (processor) 270.182 426.779 T 1 SL 261 404.007446 72 36 N 458.411987 446.17804 72.702011 1 NF (processor set) 458.412 444.779 T 450 422.007446 89.507812 36 N 7 FF (task port) 313.202 588.779 T 3 SL 306 566.007446 63 36 N (thread port) 441.987 543.779 T 432 521.007446 81 36 N 1 SL 398.54 305.01 M 398.54 301.7 L 387 305.01 L 398.54 308.32 L F 468 305.01 M 398.54 305.01 L S 289.81 372.01 M 290.96 368.91 L 278.99 368 L 288.66 375.11 L F 289.82 372.02 M 450 431.01 L S 495 509.47 M 491.69 509.47 L 495 521.01 L 498.31 509.47 L F 495 509.47 M 495 458.01 L S 200.225693 590.17804 22.554001 1 NF 7 FF (task) 200.226 588.779 T 180 566.007446 63 36 N 347.011841 545.17804 34.986008 1 NF (thread) 347.012 543.779 T 333 521.007446 63 36 N 306 455.47 M 302.69 455.47 L 306 467.01 L 309.31 455.47 L F 306 455.47 M 306 440.01 L S 314.19 511.11 M 316.52 508.76 L 305.99 502.99 L 311.86 513.46 L F 314.2 511.12 M 333 530.01 L S 237.8 513.3 M 240.76 514.79 L 243 503 L 234.85 511.81 L F 237.81 513.31 M 211.5 566.01 L S 90 90 71.999451 251.999588 504.000275 458.007629 AS 380.54 584.01 M 380.54 580.7 L 369 584.01 L 380.54 587.32 L F 380.54 584.01 M 504 584.01 L S 0.5 SL 261.46 626.84 M 261.46 630.15 L 273 626.84 L 261.46 623.53 L F 261.46 626.84 M 228 626.84 L S 3 SL 0.6667 G 418.58 626.82 M 418.58 632.61 L 438.77 626.82 L 418.58 621.04 L F 418.58 626.82 M 393.77 626.82 L S 0 G 4 FF (send right) 291.0 626.839 T (recei) 456.768 626.824 T (v) 475.948 626.824 T (e right) 480.798 626.824 T 1 G 186 638.007446 348 27 NF 186 638.007446 348 13.031998 CR 0.25 SL 2 SC 0 G 546 644.52 M 258 644.52 L S 0 SC 249 644.52 M 186 644.52 L S 171 287.007446 378 380.015991 CR 8 (Helvetica-Bold) 9 1 mymakefontmetric 8 FF (FIGURE 10) 186.0 657.039 T 2 FF (Pr) 258.0 657.039 T (ocessor Structur) 267.333 657.039 T (es) 330.405 657.039 T 1 SL 290.32 356.82 M 289.69 353.57 L 278.99 359 L 290.95 360.07 L F 290.33 356.82 M 468 323.01 L S 359.19 458.88 M 356.86 456.53 L 350.99 467 L 361.51 461.23 L F 359.2 458.89 M 486 332.01 L S 3 SL 224.00647 296.007446 162.99353 36 N 7 FF (processor set control port) 234.558 318.779 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 61 61 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (57 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Pr) 72.0 55.824 T (ocessor Sets) 81.333 55.824 T 0.25 SL 3.86 setmiterlimit 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 7 1 mymakefontmetric 3 FF 72.0 114.667 T 4 (Times-Italic) 10 1 mymakefontmetric 4 FF (pr) 85.536 114.667 T (ocessor ) 93.976 114.667 T 5 (Symbol) 10 1 mymakefontmetric 5 FF 127.026 114.667 T 1 FF ( pr) 136.896 114.667 T (ocessor_assign) 149.216 114.667 T 6 (Times-Roman) 10 1 mymakefontmetric 6 FF ( \321 Assign a processor to a processor set) 211.436 114.667 T 3 FF 72.0 129.667 T 4 FF (pr) 85.536 129.667 T (ocessor ) 93.976 129.667 T 5 FF 127.026 129.667 T 1 FF ( pr) 136.896 129.667 T (ocessor_contr) 149.216 129.667 T (ol) 207.906 129.667 T 6 FF ( \321 Perform machine speci\336c control operations) 215.686 129.667 T 3 FF 72.0 144.667 T 4 FF (pr) 85.536 144.667 T (ocessor ) 93.976 144.667 T 5 FF 127.026 144.667 T 1 FF ( pr) 136.896 144.667 T (ocessor_exit) 149.216 144.667 T 6 FF ( \321 Stop a processor) 200.866 144.667 T 3 FF 72.0 159.666 T 4 FF 85.535995 159.666443 M 1.172333 0 32 (pr) widthshow 93.976242 159.666443 M 1.172333 0 32 (ocessor ) widthshow 5 FF 128.198578 159.666443 M 1.172333 0 32 widthshow 1 FF 138.068573 159.666443 M 1.172333 0 32 ( pr) widthshow 151.561005 159.666443 M 1.172333 0 32 (ocessor_get_assignment) widthshow 6 FF 253.211014 159.666443 M 1.172333 0 32 ( \321 Return the name port for the processor) widthshow (set containing the processor) 85.536 171.666 T 3 FF 72.0 186.666 T 4 FF (pr) 85.536 186.666 T (ocessor ) 93.976 186.666 T 5 FF 127.026 186.666 T 1 FF ( pr) 136.896 186.666 T (ocessor_inf) 149.216 186.666 T (o) 196.736 186.666 T 6 FF ( \321 Return machine properties) 201.736 186.666 T 3 FF 72.0 201.666 T 4 FF (pr) 85.536 201.666 T (ocessor ) 93.976 201.666 T 5 FF 127.026 201.666 T 1 FF ( pr) 136.896 201.666 T (ocessor_start) 149.216 201.666 T 6 FF ( \321 Start a processor) 205.306 201.666 T 72 243.999496 360 3.024002 CR 432 245.51 M 72 245.51 L S 0 0 612 792 CR 7 (Times-Bold) 14 1 mymakefontmetric 7 FF (Pr) 72.0 239.333 T (ocessor Sets) 86.518 239.333 T 6 FF 72 263.690125 M 0.132095 0 32 (Processors are grouped into processor sets. A gi) widthshow 264.30481 263.690125 M 0.132095 0 32 (v) widthshow 269.154907 263.690125 M 0.132095 0 32 (en processor belongs to at most one pro-) widthshow 72 275.690063 M 1.15329 0 32 (cessor set. A processor set forms a pool of processors used to schedule the threads as-) widthshow 72 287.690002 M 0.725967 0 32 (signed to that processor set. A thread is assigned to only one processor set. A processor) widthshow 72 299.689941 M 0.271835 0 32 (set e) widthshow 90.171921 299.689941 M 0.271835 0 32 (xists as a basis to uniformly control the schedulability of a set of threads. The notion) widthshow 72 311.68988 M 1.031372 0 32 (also pro) widthshow 104.821457 311.68988 M 1.031372 0 32 (vides a w) widthshow 144.55426 311.68988 M 1.031372 0 32 (ay to pro) widthshow 182.01709 311.68988 M 1.031372 0 32 (vide coarse allocation of processors to gi) widthshow 351.255493 311.68988 M 1.031372 0 32 (v) widthshow 356.10556 311.68988 M 1.031372 0 32 (en acti) widthshow 383.26709 311.68988 M 1.031372 0 32 (vities in the) widthshow (system.) 72.0 323.69 T 8 (Times-Bold) 12 1 mymakefontmetric 8 FF (Set Maintenance) 72.0 355.023 T 6 FF 72 371.689697 M 0.335571 0 32 (A host possesses a set of processor sets. There is al) widthshow 279.385803 371.689697 M 0.335571 0 32 (w) widthshow 286.505859 371.689697 M 0.335571 0 32 (ays a def) widthshow 322.617065 371.689697 M 0.335571 0 32 (ault processor set, which is) widthshow 72 383.689636 M 0.52536 0 32 (automatically created when a host is initialized. The name port for this def) widthshow 375.654419 383.689636 M 0.52536 0 32 (ault processor) widthshow 72 395.689575 M 0.839951 0 32 (set can be obtained by ) widthshow 4 FF 167.569763 395.689575 M 0.839951 0 32 (host_name ) widthshow 5 FF 214.239716 395.689575 M 0.839951 0 32 widthshow 1 FF 224.109711 395.689575 M 0.839951 0 32 ( pr) widthshow 237.26976 395.689575 M 0.839951 0 32 (ocessor_set_default) widthshow 6 FF 320.029785 395.689575 M 0.839951 0 32 (. The list of name ports for) widthshow (all of the processor sets can be obtained with ) 72.0 407.69 T 4 FF (host_name ) 253.91 407.69 T 5 FF 299.74 407.69 T 1 FF ( host_pr) 309.61 407.69 T (ocessor_sets) 344.71 407.69 T 6 FF (.) 396.36 407.69 T 72 431.689453 M 0.201141 0 32 (A control port for a processor set can be obtained only via the creation of a processor set,) widthshow 72 443.689392 M 1.546936 0 32 (or via the pri) widthshow 127.77095 443.689392 M 1.546936 0 32 (vile) widthshow 142.621033 443.689392 M 1.546936 0 32 (ged ) widthshow 4 FF 161.107971 443.689392 M 1.546936 0 32 (host_contr) widthshow 203.438217 443.689392 M 1.546936 0 32 (ol ) widthshow 5 FF 215.265152 443.689392 M 1.546936 0 32 widthshow 1 FF 225.135147 443.689392 M 1.546936 0 32 ( host_pr) widthshow 261.782166 443.689392 M 1.546936 0 32 (ocessor_set_pri) widthshow 327.222229 443.689392 M 1.546936 0 32 (v) widthshow 6 FF 332.222229 443.689392 M 1.546936 0 32 ( call, which translates a) widthshow (processor set name port into its control port.) 72.0 455.689 T 72 479.68927 M 1.065369 0 32 (All other processor sets must be created e) widthshow 245.657684 479.68927 M 1.065369 0 32 (xplicitly) widthshow 278.348022 479.68927 M 1.065369 0 32 (, with ) widthshow 4 FF 305.758789 479.68927 M 1.065369 0 32 (host_name ) widthshow 5 FF 352.654144 479.68927 M 1.065369 0 32 widthshow 1 FF 362.524139 479.68927 M 1.065369 0 32 ( pr) widthshow 375.909607 479.68927 M 1.065369 0 32 (ocessor_set_-) widthshow 72 491.689209 M 1.348648 0 32 (cr) widthshow 80.700104 491.689209 M 1.348648 0 32 (eate) widthshow 6 FF 97.91011 491.689209 M 1.348648 0 32 (. This call returns both the name and control ports for the ne) widthshow 354.084045 491.689209 M 1.348648 0 32 (w processor set. A) widthshow 72 503.689148 M 0.658951 0 32 (ne) widthshow 81.19014 503.689148 M 0.658951 0 32 (w set is empty) widthshow 140.017349 503.689148 M 0.658951 0 32 (. The set is destro) widthshow 212.823212 503.689148 M 0.658951 0 32 (yed with ) widthshow 4 FF 251.361115 503.689148 M 0.658951 0 32 (pr) widthshow 259.801361 503.689148 M 0.658951 0 32 (ocessor_set_contr) widthshow 332.121613 503.689148 M 0.658951 0 32 (ol ) widthshow 5 FF 343.060547 503.689148 M 0.658951 0 32 widthshow 1 FF 352.930542 503.689148 M 0.658951 0 32 ( pr) widthshow 365.909607 503.689148 M 0.658951 0 32 (ocessor_set_de-) widthshow 72 515.689087 M 0.259933 0 32 (str) widthshow 83.480103 515.689087 M 0.259933 0 32 (oy) widthshow 6 FF 92.83046 515.689087 M 0.259933 0 32 (. An) widthshow 110.160477 515.689087 M 0.259933 0 32 (y processors currently assigned to this set will be re-assigned to the def) widthshow 397.579773 515.689087 M 0.259933 0 32 (ault pro-) widthshow (cessor set.) 72.0 527.689 T 72 551.688965 M 1.51535 0 32 (A processor is added to a processor set with ) widthshow 4 FF 263.658173 551.688965 M 1.51535 0 32 (pr) widthshow 272.098419 551.688965 M 1.51535 0 32 (ocessor ) widthshow 5 FF 306.663757 551.688965 M 1.51535 0 32 widthshow 1 FF 316.533752 551.688965 M 1.51535 0 32 ( pr) widthshow 330.369202 551.688965 M 1.51535 0 32 (ocessor_assign) widthshow 6 FF 392.589233 551.688965 M 1.51535 0 32 (. This re-) widthshow 72 563.688904 M 0.602112 0 32 (mo) widthshow 84.630081 563.688904 M 0.602112 0 32 (v) widthshow 89.480164 563.688904 M 0.602112 0 32 (es the processor from its current set. The current assignment of a processor \(its pro-) widthshow (cessor set name port\) is obtained with ) 72.0 575.689 T 4 FF (pr) 225.59 575.689 T (ocessor ) 234.03 575.689 T 5 FF 267.08 575.689 T 1 FF ( pr) 276.95 575.689 T (ocessor_get_assignment) 289.27 575.689 T 6 FF (.) 390.92 575.689 T 72 599.688782 M 0.599976 0 32 (Information \(such as scheduling parameters\) for the processor set are obtained with ) widthshow 4 FF 415.229736 599.688782 M 0.599976 0 32 (pr) widthshow 423.669983 599.688782 M 0.599976 0 32 (o-) widthshow (cessor_set_name ) 72.0 611.689 T 5 FF 142.82 611.689 T 1 FF ( pr) 152.69 611.689 T (ocessor_set_inf) 165.01 611.689 T (o) 229.19 611.689 T 6 FF (.) 234.19 611.689 T 8 FF (T) 72.0 643.022 T (ask and Thr) 78.901 643.022 T (ead Assignment) 141.373 643.022 T 6 FF 72 659.688599 M 0.293076 0 32 (By def) widthshow 99.133133 659.688599 M 0.293076 0 32 (ault, a task is ) widthshow 4 FF 155.025436 659.688599 M 0.293076 0 32 (assigned) widthshow 6 FF 190.025436 659.688599 M 0.293076 0 32 ( to the def) widthshow 231.074722 659.688599 M 0.293076 0 32 (ault processor set. Assigning a task to a processor) widthshow 72 671.688599 M 0.416214 0 32 (set means that, by def) widthshow 160.494919 671.688599 M 0.416214 0 32 (ault, an) widthshow 190.201218 671.688599 M 0.416214 0 32 (y ne) widthshow 207.307571 671.688599 M 0.416214 0 32 (w threads in that task will be assigned to that processor) widthshow 72 683.688477 M 0.542633 0 32 (set. Being assigned to a processor set means that the thread will only e) widthshow 360.534332 683.688477 M 0.542633 0 32 (x) widthshow 365.384399 683.688477 M 0.542633 0 32 (ecute on proces-) widthshow (sors within that set.) 72.0 695.688 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 62 62 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (58 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Ph) 180.0 55.824 T (ysical Resour) 190.368 55.824 T (ce Management) 241.452 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 180 112.650635 M 0.99559 0 32 (A task is assigned to a processor set with ) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 355.330322 112.650635 M 0.99559 0 32 (task ) widthshow 5 (Symbol) 10 1 mymakefontmetric 5 FF 374.935913 112.650635 M 0.99559 0 32 widthshow 0 FF 384.805908 112.650635 M 0.99559 0 32 ( task_assign) widthshow 3 FF 437.201477 112.650635 M 0.99559 0 32 (, a thread with ) widthshow 4 FF 500.89386 112.650635 M 0.99559 0 32 (thr) widthshow 512.194092 112.650635 M 0.99559 0 32 (ead ) widthshow 5 FF 530.129639 112.650635 M 0.99559 0 32 widthshow 0 FF 180 124.650574 M 0.807648 0 32 (thr) widthshow 193.150101 124.650574 M 0.807648 0 32 (ead_assign) widthshow 3 FF 239.270096 124.650574 M 0.807648 0 32 (. These calls require a control port to the processor set, which most tasks) widthshow 180 136.650513 M 0.452652 0 32 (do not hold. F) widthshow 237.328033 136.650513 M 0.452652 0 32 (or simple assignment to the def) widthshow 364.761353 136.650513 M 0.452652 0 32 (ault processor set, there is ) widthshow 4 FF 473.114624 136.650513 M 0.452652 0 32 (task ) widthshow 5 FF 492.177277 136.650513 M 0.452652 0 32 widthshow 0 FF 502.047272 136.650513 M 0.452652 0 32 ( task_as-) widthshow 180 148.650452 M 1.049042 0 32 (sign_default) widthshow 3 FF 232.229996 148.650452 M 1.049042 0 32 ( and ) widthshow 4 FF 253.768082 148.650452 M 1.049042 0 32 (thr) widthshow 265.068298 148.650452 M 1.049042 0 32 (ead ) widthshow 5 FF 283.057312 148.650452 M 1.049042 0 32 widthshow 0 FF 292.927307 148.650452 M 1.049042 0 32 ( thr) widthshow 309.626465 148.650452 M 1.049042 0 32 (ead_assign_default) widthshow 3 FF 390.74646 148.650452 M 1.049042 0 32 (, which need no such port. The cur-) widthshow 180 160.650391 M 3.923599 0 32 (rent assignment can be found with ) widthshow 4 FF 343.521606 160.650391 M 3.923599 0 32 (task ) widthshow 5 FF 366.055206 160.650391 M 3.923599 0 32 widthshow 0 FF 375.925201 160.650391 M 3.923599 0 32 ( task_get_assignment) widthshow 3 FF 470.678802 160.650391 M 3.923599 0 32 ( and ) widthshow 4 FF 497.966003 160.650391 M 3.923599 0 32 (thr) widthshow 509.266205 160.650391 M 3.923599 0 32 (ead ) widthshow 5 FF 530.129822 160.650391 M 3.923599 0 32 widthshow 0 FF (thr) 180.0 172.65 T (ead_get_assignment) 193.15 172.65 T 3 FF (, both of which return a processor set name port.) 278.7 172.65 T 180 196.650269 M 0.015289 0 32 (The current set of tasks / threads assigned to a processor set is found with ) widthshow 4 FF 476.569366 196.650269 M 0.015289 0 32 (pr) widthshow 485.009613 196.650269 M 0.015289 0 32 (ocessor_set_-) widthshow (contr) 180.0 208.65 T (ol ) 200.66 208.65 T 5 FF 210.94 208.65 T 0 FF ( pr) 220.81 208.65 T (ocessor_set_tasks ) 233.13 208.65 T 3 FF (/ ) 310.06 208.65 T 4 FF (pr) 315.34 208.65 T (ocessor_set_contr) 323.781 208.65 T (ol ) 396.101 208.65 T 5 FF 406.381 208.65 T 0 FF ( pr) 416.251 208.65 T (ocessor_set_thr) 428.571 208.65 T (eads) 494.481 208.65 T 3 FF (.) 513.371 208.65 T 6 (Times-Bold) 12 1 mymakefontmetric 6 FF (K) 180.0 239.984 T (er) 189.036 239.984 T (nel Thr) 199.512 239.984 T (eads and T) 237.636 239.984 T (asks) 292.549 239.984 T 3 FF 180 256.650208 M 1.154938 0 32 (F) widthshow 185.41008 256.650208 M 1.154938 0 32 (or the sak) widthshow 226.500015 256.650208 M 1.154938 0 32 (e of its o) widthshow 264.434967 256.650208 M 1.154938 0 32 (wn operation, the k) widthshow 345.009827 256.650208 M 1.154938 0 32 (ernel creates ) widthshow 4 FF 400.069733 256.650208 M 1.154938 0 32 (k) widthshow 404.40979 256.650208 M 1.154938 0 32 (ernel thr) widthshow 439.914917 256.650208 M 1.154938 0 32 (eads) widthshow 3 FF 458.244934 256.650208 M 1.154938 0 32 ( that e) widthshow 484.84491 256.650208 M 1.154938 0 32 (x) widthshow 489.694977 256.650208 M 1.154938 0 32 (ecute purely) widthshow 180 268.650208 M 1.349899 0 32 (within k) widthshow 214.309952 268.650208 M 1.349899 0 32 (ernel conte) widthshow 259.659943 268.650208 M 1.349899 0 32 (xt to pro) widthshow 296.099823 268.650208 M 1.349899 0 32 (vide v) widthshow 321.919861 268.650208 M 1.349899 0 32 (arious support functions. F) widthshow 433.039642 268.650208 M 1.349899 0 32 (or e) widthshow 449.509644 268.650208 M 1.349899 0 32 (xample, page e) widthshow 512.219604 268.650208 M 1.349899 0 32 (viction) widthshow 180 280.650208 M 2.857468 0 32 (\(the \322page-out daemon\323\), asynchronous I/O post-processing, thread reclamation and) widthshow 180 292.650177 M 0.34996 0 32 (scheduler priority computations are performed by dedicated threads rather than being e) widthshow 531.669678 292.650177 M 0.34996 0 32 (x-) widthshow 180 304.650146 M 0.995789 0 32 (ecuted in interrupt \(or softw) widthshow 296.083221 304.650146 M 0.995789 0 32 (are interrupt\) conte) widthshow 374.56488 304.650146 M 0.995789 0 32 (xt. Users of the system \(including pri) widthshow 528.889771 304.650146 M 0.995789 0 32 (vi-) widthshow 180 316.650146 M 1.78421 0 32 (le) widthshow 187.070084 316.650146 M 1.78421 0 32 (ged ones\) ha) widthshow 240.978622 316.650146 M 1.78421 0 32 (v) widthshow 245.828705 316.650146 M 1.78421 0 32 (e no direct control o) widthshow 333.355652 316.650146 M 1.78421 0 32 (v) widthshow 338.205719 316.650146 M 1.78421 0 32 (er these internal threads. F) widthshow 451.002655 316.650146 M 1.78421 0 32 (or the sak) widthshow 493.351135 316.650146 M 1.78421 0 32 (e of gi) widthshow 522.219727 316.650146 M 1.78421 0 32 (ving) widthshow 180 328.650146 M 0.275299 0 32 (these threads a task conte) widthshow 282.591309 328.650146 M 0.275299 0 32 (xt, the k) widthshow 315.541931 328.650146 M 0.275299 0 32 (ernel constructs a ) widthshow 4 FF 388.847839 328.650146 M 0.275299 0 32 (k) widthshow 393.187927 328.650146 M 0.275299 0 32 (ernel task) widthshow 3 FF 432.62323 328.650146 M 0.275299 0 32 ( to contain them. This k) widthshow 528.89978 328.650146 M 0.275299 0 32 (er-) widthshow (nel task has no user address space.) 180.0 340.65 T 180 364.650085 M 0.401184 0 32 (The def) widthshow 211.121246 364.650085 M 0.401184 0 32 (ault pager forms its o) widthshow 297.466125 364.650085 M 0.401184 0 32 (wn k) widthshow 317.487366 364.650085 M 0.401184 0 32 (ernel task with its o) widthshow 397.172241 364.650085 M 0.401184 0 32 (wn set of k) widthshow 442.435852 364.650085 M 0.401184 0 32 (ernel threads to perform) widthshow 180 376.650085 M 0.333282 0 32 (the processing. \(The page-out thread is part of the main k) widthshow 412.352905 376.650085 M 0.333282 0 32 (ernel task, not the def) widthshow 499.956116 376.650085 M 0.333282 0 32 (ault pager) widthshow (task.\)) 180.0 388.65 T 180 412.650055 M 1.27742 0 32 (These tw) widthshow 217.55748 412.650055 M 1.27742 0 32 (o k) widthshow 231.234955 412.650055 M 1.27742 0 32 (ernel internal tasks are under k) widthshow 360.542114 412.650055 M 1.27742 0 32 (ernel control. Ho) widthshow 430.887115 412.650055 M 1.27742 0 32 (we) widthshow 442.297241 412.650055 M 1.27742 0 32 (v) widthshow 447.147339 412.650055 M 1.27742 0 32 (er) widthshow 454.517578 412.650055 M 1.27742 0 32 (, since the contained) widthshow 180 424.650024 M 0.439301 0 32 (threads must be scheduled as are an) widthshow 325.225891 424.650024 M 0.439301 0 32 (y other threads, the) widthshow 403.043884 424.650024 M 0.439301 0 32 (y are link) widthshow 441.59256 424.650024 M 0.439301 0 32 (ed into the processor set) widthshow 180 436.650024 M 0.327454 0 32 (lists, initially assigned to the def) widthshow 310.987305 436.650024 M 0.327454 0 32 (ault processor set. Thus, the result from ) widthshow 0 FF 474.089508 436.650024 M 0.327454 0 32 (pr) widthshow 483.909607 436.650024 M 0.327454 0 32 (ocessor_set_-) widthshow 180 448.650024 M 1.302444 0 32 (tasks) widthshow 3 FF 201.669998 448.650024 M 1.302444 0 32 ( will list these tw) widthshow 275.119812 448.650024 M 1.302444 0 32 (o tasks as the \336rst tasks in the list \(by con) widthshow 453.854492 448.650024 M 1.302444 0 32 (v) widthshow 458.70459 448.650024 M 1.302444 0 32 (ention\) and ) widthshow 0 FF 509.079468 448.650024 M 1.302444 0 32 (pr) widthshow 518.899536 448.650024 M 1.302444 0 32 (oces-) widthshow (sor_set_thr) 180.0 460.65 T (eads) 228.14 460.65 T 3 FF ( will list the k) 247.03 460.65 T (ernel internal threads \(in no determinate order\).) 301.94 460.65 T 180 484.649963 M 1.677628 0 32 (Since these k) widthshow 236.025314 484.649963 M 1.677628 0 32 (ernel entities ha) widthshow 302.500671 484.649963 M 1.677628 0 32 (v) widthshow 307.350769 484.649963 M 1.677628 0 32 (e no user conte) widthshow 372.493744 484.649963 M 1.677628 0 32 (xt, most operations ag) widthshow 465.806641 484.649963 M 1.677628 0 32 (ainst their task or) widthshow 180 496.649963 M 0.213806 0 32 (thread ports will f) widthshow 251.921478 496.649963 M 0.213806 0 32 (ail. The) widthshow 282.53537 496.649963 M 0.213806 0 32 (y can be assigned dif) widthshow 367.010742 496.649963 M 0.213806 0 32 (ferent scheduling priorities and assigned to) widthshow 180 508.649963 M 1.390839 0 32 (dif) widthshow 190.860138 508.649963 M 1.390839 0 32 (ferent processor sets. Attempting to terminate or suspend these threads is unde\336ned) widthshow (\(b) 180.0 520.65 T (ut lik) 188.13 520.65 T (ely to cause system f) 208.87 520.65 T (ailure\).) 292.09 520.65 T 6 FF (Scheduling Contr) 180.0 551.983 T (ol) 270.132 551.983 T 3 FF 180 568.649902 M 0.300674 0 32 (Processor sets achie) widthshow 260.331482 568.649902 M 0.300674 0 32 (v) widthshow 265.18158 568.649902 M 0.300674 0 32 (e tw) widthshow 282.322327 568.649902 M 0.300674 0 32 (o goals: the) widthshow 328.883728 568.649902 M 0.300674 0 32 (y pro) widthshow 349.864502 568.649902 M 0.300674 0 32 (vide for coarse allocation of processors to a set) widthshow (of tasks \(an application\); the) 180.0 580.65 T (y also pro) 293.72 580.65 T (vide the handle for dictating scheduling policies.) 333.01 580.65 T 180 604.64978 M 0.766373 0 32 (An) widthshow 192.070084 604.64978 M 0.766373 0 32 (y gi) widthshow 207.866592 604.64978 M 0.766373 0 32 (v) widthshow 212.716675 604.64978 M 0.766373 0 32 (en thread has associated with it a scheduling polic) widthshow 418.667755 604.64978 M 0.766373 0 32 (y to use, and v) widthshow 479.533386 604.64978 M 0.766373 0 32 (arious parame-) widthshow (ters that in\337uence that polic) 180.0 616.65 T (y) 290.95 616.65 T (, the priority being the most ob) 295.3 616.65 T (vious.) 418.761 616.65 T 180 640.649658 M 0.751495 0 32 (An) widthshow 192.070084 640.649658 M 0.751495 0 32 (y gi) widthshow 207.851715 640.649658 M 0.751495 0 32 (v) widthshow 212.701797 640.649658 M 0.751495 0 32 (en processor set supports the scheduling of its threads according to the schedul-) widthshow 180 652.649597 M 0.391953 0 32 (ing policies allo) widthshow 244.424042 652.649597 M 0.391953 0 32 (wed for that processor set. The set of policies enabled for a processor set) widthshow 180 664.649536 M 2.028427 0 32 (are controlled by ) widthshow 4 FF 256.345276 664.649536 M 2.028427 0 32 (pr) widthshow 264.785522 664.649536 M 2.028427 0 32 (ocessor_set_contr) widthshow 337.105774 664.649536 M 2.028427 0 32 (ol ) widthshow 5 FF 349.414215 664.649536 M 2.028427 0 32 widthshow 0 FF 359.28421 664.649536 M 2.028427 0 32 ( pr) widthshow 373.632751 664.649536 M 2.028427 0 32 (ocessor_set_policy_disable) widthshow 3 FF 486.962738 664.649536 M 2.028427 0 32 ( and ) widthshow 4 FF 510.459595 664.649536 M 2.028427 0 32 (pr) widthshow 518.899841 664.649536 M 2.028427 0 32 (oces-) widthshow 180 676.649475 M 3.399918 0 32 (sor_set_contr) widthshow 234.550247 676.649475 M 3.399918 0 32 (ol ) widthshow 5 FF 248.230164 676.649475 M 3.399918 0 32 widthshow 0 FF 258.100159 676.649475 M 3.399918 0 32 ( pr) widthshow 273.82019 676.649475 M 3.399918 0 32 (ocessor_set_policy_enable) widthshow 3 FF 384.920166 676.649475 M 3.399918 0 32 (. The currently enabled set can be) widthshow (found with ) 180.0 688.649 T 4 FF (pr) 226.11 688.649 T (ocessor_set_contr) 234.55 688.649 T (ol ) 306.87 688.649 T 5 FF 317.15 688.649 T 0 FF ( pr) 327.02 688.649 T (ocessor_set_inf) 339.341 688.649 T (o) 403.521 688.649 T 3 FF (.) 408.521 688.649 T 558 231.983566 2 323.999695 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 63 63 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (59 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Nodes) 72.0 55.824 T 0.25 SL 3.86 setmiterlimit 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 72 114.666626 M 0.85762 0 32 (T) widthshow 77.31044 114.666626 M 0.85762 0 32 (asks do not ha) widthshow 136.623413 114.666626 M 0.85762 0 32 (v) widthshow 141.473495 114.666626 M 0.85762 0 32 (e a scheduling polic) widthshow 223.606445 114.666626 M 0.85762 0 32 (y associated with them. Threads ha) widthshow 368.22467 114.666626 M 0.85762 0 32 (v) widthshow 373.074768 114.666626 M 0.85762 0 32 (e a scheduling) widthshow 72 126.666565 M 0.934601 0 32 (polic) widthshow 91.850082 126.666565 M 0.934601 0 32 (y set via ) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 130.483887 126.666565 M 0.934601 0 32 (thr) widthshow 141.784088 126.666565 M 0.934601 0 32 (ead ) widthshow 5 (Symbol) 10 1 mymakefontmetric 5 FF 159.658691 126.666565 M 0.934601 0 32 widthshow 1 FF 169.528687 126.666565 M 0.934601 0 32 ( thr) widthshow 186.113388 126.666565 M 0.934601 0 32 (ead_policy) widthshow 3 FF 231.023743 126.666565 M 0.934601 0 32 (. When a thread is assigned to a processor set, it) widthshow 72 138.666504 M 0.81398 0 32 (maintains its polic) widthshow 146.818039 138.666504 M 0.81398 0 32 (y unless the processor set does not ha) widthshow 302.016022 138.666504 M 0.81398 0 32 (v) widthshow 306.866089 138.666504 M 0.81398 0 32 (e it enabled, in which case the) widthshow 72 150.666443 M 1.75296 0 32 (thread\325) widthshow 99.770309 150.666443 M 1.75296 0 32 (s polic) widthshow 127.763351 150.666443 M 1.75296 0 32 (y is set to time-sharing. Ho) widthshow 244.608292 150.666443 M 1.75296 0 32 (we) widthshow 256.018433 150.666443 M 1.75296 0 32 (v) widthshow 260.86853 150.666443 M 1.75296 0 32 (er) widthshow 268.238739 150.666443 M 1.75296 0 32 (, disabling a polic) widthshow 344.457703 150.666443 M 1.75296 0 32 (y for a processor set) widthshow 72 162.666382 M 0.641403 0 32 (does not af) widthshow 116.912949 162.666382 M 0.641403 0 32 (fect an) widthshow 144.334442 162.666382 M 0.641403 0 32 (y threads currently in that set \(unless an option to the ) widthshow 1 FF 366.089905 162.666382 M 0.641403 0 32 (pr) widthshow 375.909973 162.666382 M 0.641403 0 32 (ocessor_set_-) widthshow (policy_disable) 72.0 174.666 T 3 FF ( call is used\).) 132.57 174.666 T (Threads ha) 72.0 198.666 T (v) 115.95 198.666 T (e three priorities associated with them by the system:) 120.8 198.666 T 6 (Times-Roman) 7 1 mymakefontmetric 6 FF 72.0 216.666 T 3 FF 85.535995 216.666199 M 0.437851 0 32 (A priority v) widthshow 133.381836 216.666199 M 0.437851 0 32 (alue which can be set by the thread to an) widthshow 299.632599 216.666199 M 0.437851 0 32 (y v) widthshow 312.320587 216.666199 M 0.437851 0 32 (alue up to a maximum priori-) widthshow 85.535995 228.666138 M 0.928223 0 32 (ty) widthshow 92.666351 228.666138 M 0.928223 0 32 (. Ne) widthshow 110.004715 228.666138 M 0.928223 0 32 (wly created threads obtain their priority from their task. This is set by ) widthshow 4 FF 402.591614 228.666138 M 0.928223 0 32 (task ) widthshow 5 FF 422.129852 228.666138 M 0.928223 0 32 widthshow 1 FF (task_priority) 85.536 240.666 T (. ) 140.946 240.666 T 3 FF (This v) 145.946 240.666 T (alue can be af) 170.977 240.666 T (fected by ) 225.977 240.666 T 4 FF (thr) 265.407 240.666 T (ead ) 276.707 240.666 T 5 FF 293.647 240.666 T 1 FF ( thr) 303.517 240.666 T (ead_priority) 319.167 240.666 T 3 FF (.) 371.847 240.666 T 6 FF 72.0 255.666 T 3 FF 85.535995 255.666016 M 0.871048 0 32 (A maximum priority v) widthshow 178.179276 255.666016 M 0.871048 0 32 (alue which can be raised only via pri) widthshow 330.936768 255.666016 M 0.871048 0 32 (vile) widthshow 345.786865 255.666016 M 0.871048 0 32 (ged operation so that) widthshow 85.535995 267.665955 M 0.444107 0 32 (users may not unf) widthshow 158.148376 267.665955 M 0.444107 0 32 (airly compete with other users in their processor set. Ne) widthshow 385.185486 267.665955 M 0.444107 0 32 (wly created) widthshow 85.535995 279.665894 M 0.889465 0 32 (threads obtain their maximum priority from that of their assigned processor set. The) widthshow 85.535995 291.665833 M 2.342102 0 32 (maximum priority for a processor set is set by ) widthshow 4 FF 292.984924 291.665833 M 2.342102 0 32 (pr) widthshow 301.425171 291.665833 M 2.342102 0 32 (ocessor_set_contr) widthshow 373.745422 291.665833 M 2.342102 0 32 (ol ) widthshow 5 FF 386.367523 291.665833 M 2.342102 0 32 widthshow 1 FF 396.237518 291.665833 M 2.342102 0 32 ( pr) widthshow 410.899719 291.665833 M 2.342102 0 32 (oces-) widthshow 85.535995 303.665771 M 1.894333 0 32 (sor_set_max_priority) widthshow 3 FF 176.536362 303.665771 M 1.894333 0 32 (. A \322pri) widthshow 210.345169 303.665771 M 1.894333 0 32 (vile) widthshow 225.195251 303.665771 M 1.894333 0 32 (ged\323 thread may raise its maximum priority if it) widthshow (holds the processor set control port with ) 85.536 315.666 T 4 FF (thr) 248.576 315.666 T (ead ) 259.876 315.666 T 5 FF 276.816 315.666 T 3 FF ( ) 286.686 315.666 T 1 FF (thr) 289.186 315.666 T (ead_max_priority) 302.336 315.666 T 3 FF (.) 378.347 315.666 T 6 FF 72.0 330.666 T 3 FF 85.535995 330.665649 M 0.357208 0 32 (A scheduled priority v) widthshow 176.067764 330.665649 M 0.357208 0 32 (alue which is used to mak) widthshow 281.353882 330.665649 M 0.357208 0 32 (e scheduling decisions for the thread.) widthshow 85.535995 342.665588 M 0.188904 0 32 (This v) widthshow 110.755035 342.665588 M 0.188904 0 32 (alue is determined on the basis of the user priority v) widthshow 320.144226 342.665588 M 0.188904 0 32 (alue by the scheduling poli-) widthshow 85.535995 354.665527 M 0.912781 0 32 (c) widthshow 89.82608 354.665527 M 0.912781 0 32 (y \(for timesharing, this means adding an increment deri) widthshow 318.788483 354.665527 M 0.912781 0 32 (v) widthshow 323.63855 354.665527 M 0.912781 0 32 (ed from CPU usage\). This) widthshow (v) 85.536 366.665 T (alue can be af) 90.286 366.665 T (fected by ) 145.286 366.665 T 4 FF (thr) 184.716 366.665 T (ead ) 196.016 366.665 T 5 FF 212.956 366.665 T 1 FF ( thr) 222.826 366.665 T (ead_priority) 238.477 366.665 T 3 FF (.) 291.157 366.665 T 72 408.998779 360 3.024002 CR 432 410.51 M 72 410.51 L S 0 0 612 792 CR 7 (Times-Bold) 14 1 mymakefontmetric 7 FF (Nodes) 72.0 404.332 T 3 FF 72 428.689453 M 1.527969 0 32 (The indi) widthshow 106.888107 428.689453 M 1.527969 0 32 (vidual uniprocessor or multiprocessor ) widthshow 4 FF 266.869995 428.689453 M 1.527969 0 32 (nodes) widthshow 3 FF 290.200012 428.689453 M 1.527969 0 32 ( in a Mach multicomputer system) widthshow 72 440.689453 M 0.537643 0 32 (are generally maintained in a transparent f) widthshow 243.965942 440.689453 M 0.537643 0 32 (ashion. As such, there are v) widthshow 356.754272 440.689453 M 0.537643 0 32 (ery fe) widthshow 380.082031 440.689453 M 0.537643 0 32 (w operations) widthshow (de\336ned for speci\336c nodes.) 72.0 452.689 T 72 476.689392 M 0.356064 0 32 (Each node is allo) widthshow 141.418335 476.689392 M 0.356064 0 32 (wed a small set of node speci\336c ports. A fe) widthshow 316.563049 476.689392 M 0.356064 0 32 (w are set aside for client use) widthshow 72 488.689392 M 1.393005 0 32 (\(such as a node speci\336c name serv) widthshow 217.948135 488.689392 M 1.393005 0 32 (er port\). The k) widthshow 279.787231 488.689392 M 1.393005 0 32 (ernel implements three node speci\336c) widthshow (ports:) 72.0 500.689 T 6 FF 72.0 518.689 T 3 FF 85.535995 518.689331 M 0.06813 0 32 (A \322host\323 control port, useful for deri) widthshow 232.054932 518.689331 M 0.06813 0 32 (ving processor set and other ports which are asso-) widthshow 85.535995 530.689331 M 0.281784 0 32 (ciated with speci\336c nodes b) widthshow 197.00325 530.689331 M 0.281784 0 32 (ut which can only be obtained from operations requiring a) widthshow (host control port.) 85.536 542.689 T 6 FF 72.0 557.689 T 3 FF (A corresponding \322host\323 name port.) 85.536 557.689 T 6 FF 72.0 572.689 T 3 FF (A de) 85.536 572.689 T (vice master port, used to obtain node speci\336c de) 104.446 572.689 T (vices.) 296.666 572.689 T 72 596.68927 M 1.616974 0 32 (A node special port is obtained with ) widthshow 4 FF 230.248825 596.68927 M 1.616974 0 32 (host_contr) widthshow 272.579071 596.68927 M 1.616974 0 32 (ol) widthshow 5 FF 280.35907 596.68927 M 1.616974 0 32 ( ) widthshow 3 FF 284.476044 596.68927 M 1.616974 0 32 ([) widthshow 4 FF 287.80603 596.68927 M 1.616974 0 32 (node) widthshow 3 FF 307.246033 596.68927 M 1.616974 0 32 (]) widthshow 5 FF 310.57605 596.68927 M 1.616974 0 32 ( \256) widthshow 1 FF 324.563019 596.68927 M 1.616974 0 32 ( norma_get_special_port) widthshow 3 FF (and set with ) 72.0 608.689 T 4 FF (host_contr) 122.83 608.689 T (ol ) 165.16 608.689 T 3 FF ([) 175.44 608.689 T 4 FF (node) 178.77 608.689 T 3 FF (]) 198.21 608.689 T 5 FF 201.54 608.689 T 1 FF ( norma_set_special_port) 211.41 608.689 T 3 FF (. ) 316.12 608.689 T 72 632.68927 M 1.153717 0 32 (The only other node visibility is the location of tasks. Currently) widthshow 337.047546 632.68927 M 1.153717 0 32 (, a task is created on a) widthshow 72 644.689209 M 0.482895 0 32 (node and will not migrate from that node. By def) widthshow 272.336121 644.689209 M 0.482895 0 32 (ault, a task is created on the same node) widthshow 72 656.689209 M 0.873108 0 32 (as the task used as the parent in the ) widthshow 1 FF 222.887985 656.689209 M 0.873108 0 32 (task_cr) widthshow 254.368088 656.689209 M 0.873108 0 32 (eate) widthshow 3 FF 271.578094 656.689209 M 0.873108 0 32 ( call. This def) widthshow 329.087463 656.689209 M 0.873108 0 32 (ault can be changed with) widthshow 4 FF 72 668.689209 M 1.625778 0 32 (task ) widthshow 5 FF 92.235779 668.689209 M 1.625778 0 32 widthshow 1 FF 102.105774 668.689209 M 1.625778 0 32 ( task_set_child_node) widthshow 3 FF 192.351547 668.689209 M 1.625778 0 32 (; this call speci\336es the tar) widthshow 301.680542 668.689209 M 1.625778 0 32 (get node for future children. A) widthshow (task may also be created e) 72.0 680.689 T (xplicitly on a gi) 176.54 680.689 T (v) 239.35 680.689 T (en node with ) 244.2 680.689 T 4 FF (task ) 298.36 680.689 T 5 FF 316.97 680.689 T 1 FF ( norma_task_cr) 326.84 680.689 T (eate) 394.15 680.689 T 3 FF (.) 411.36 680.689 T 52 394.99884 2 289.023682 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 64 64 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (60 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Ph) 180.0 55.824 T (ysical Resour) 190.368 55.824 T (ce Management) 241.452 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Italic) 10 1 mymakefontmetric 3 FF 180 112.650665 M 0.988113 0 32 (task) widthshow 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 196.110001 112.650665 M 0.988113 0 32 ( \() widthshow 3 FF 202.928116 112.650665 M 0.988113 0 32 (port) widthshow 4 FF 219.598114 112.650665 M 0.988113 0 32 (\) ) widthshow 5 (Symbol) 10 1 mymakefontmetric 5 FF 226.416229 112.650665 M 0.988113 0 32 widthshow 0 FF 236.286224 112.650665 M 0.988113 0 32 ( norma_port_location_hint) widthshow 4 FF 352.554321 112.650665 M 0.988113 0 32 ( pro) widthshow 369.222534 112.650665 M 0.988113 0 32 (vides a guess of a port\325) widthshow 466.093414 112.650665 M 0.988113 0 32 (s current location.) widthshow 180 124.65065 M 0.549927 0 32 (F) widthshow 185.41008 124.65065 M 0.549927 0 32 (or port\325) widthshow 215.680313 124.65065 M 0.549927 0 32 (s whose recei) widthshow 270.40033 124.65065 M 0.549927 0 32 (v) widthshow 275.250397 124.65065 M 0.549927 0 32 (e right ne) widthshow 313.870392 124.65065 M 0.549927 0 32 (v) widthshow 318.720459 124.65065 M 0.549927 0 32 (er mo) widthshow 342.170471 124.65065 M 0.549927 0 32 (v) widthshow 347.020569 124.65065 M 0.549927 0 32 (es this will return the correct node, otherwise it) widthshow (returns either the correct node or a node at which the port once w) 180.0 136.651 T (as.) 440.66 136.651 T 180 178.983932 360 3.024002 CR 0.25 SL 2 SC 540 180.5 M 180 180.5 L S 0 0 612 792 CR 6 (Times-Bold) 14 1 mymakefontmetric 6 FF (Hosts) 180.0 174.317 T 4 FF 180 198.674591 M 0.754501 0 32 (Each multiprocessor \(or sets of multiprocessors in a multicomputer\) within a netw) widthshow 517.32959 198.674591 M 0.754501 0 32 (ork) widthshow 530.559631 198.674591 M 0.754501 0 32 (ed) widthshow 180 210.674576 M 0.32196 0 32 (Mach system runs its o) widthshow 273.257996 210.674576 M 0.32196 0 32 (wn instantiation of the Mach k) widthshow 397.257843 210.674576 M 0.32196 0 32 (ernel. The ) widthshow 3 FF 440.941772 210.674576 M 0.32196 0 32 (host) widthshow 4 FF 457.611755 210.674576 M 0.32196 0 32 ( machine is not gen-) widthshow 4 FF 180 222.674561 M 0.723526 0 32 (erally manipulated by client tasks. But, since each host does carry its o) widthshow 471.172485 222.674561 M 0.723526 0 32 (wn Mach k) widthshow 517.509583 222.674561 M 0.723526 0 32 (ernel,) widthshow 180 234.674545 M 0.404236 0 32 (each with its o) widthshow 239.012848 234.674545 M 0.404236 0 32 (wn port space, ph) widthshow 310.715576 234.674545 M 0.404236 0 32 (ysical memory and other resources, the e) widthshow 476.561096 234.674545 M 0.404236 0 32 (x) widthshow 481.411194 234.674545 M 0.404236 0 32 (ecuting host is) widthshow (visible and sometimes manipulated directly) 180.0 246.675 T (. Also, each host generates its o) 353.23 246.675 T (wn statistics.) 479.071 246.675 T 180 270.6745 M 0.249359 0 32 (The most lik) widthshow 230.958771 270.6745 M 0.249359 0 32 (ely w) widthshow 253.048187 270.6745 M 0.249359 0 32 (ay in which a task may be a) widthshow 365.453796 270.6745 M 0.249359 0 32 (w) widthshow 372.573853 270.6745 M 0.249359 0 32 (are of the presence of multiple Mach k) widthshow 528.899414 270.6745 M 0.249359 0 32 (er-) widthshow 180 282.674438 M 1.040802 0 32 (nel instantiations is in e) widthshow 278.463287 282.674438 M 1.040802 0 32 (xternal memory managers. Each k) widthshow 419.436584 282.674438 M 1.040802 0 32 (ernel sends its o) widthshow 486.469116 282.674438 M 1.040802 0 32 (wn messages) widthshow 180 294.674377 M 0.797119 0 32 (to a gi) widthshow 206.344376 294.674377 M 0.797119 0 32 (v) widthshow 211.194458 294.674377 M 0.797119 0 32 (en e) widthshow 228.221664 294.674377 M 0.797119 0 32 (xternal memory manager that is trying to manage memory mapped on more) widthshow (than one host.) 180.0 306.674 T 180 330.674255 M 1.15303 0 32 (Each host has its o) widthshow 258.802246 330.674255 M 1.15303 0 32 (wn ph) widthshow 284.625305 330.674255 M 1.15303 0 32 (ysical memory pool, set of de) widthshow 408.460632 330.674255 M 1.15303 0 32 (vices, def) widthshow 447.83371 330.674255 M 1.15303 0 32 (ault memory manager) widthshow 537.5 330.674255 M 1.15303 0 32 (,) widthshow (set of processor sets \(and, therefore, assigned threads and tasks\) and time.) 180.0 342.674 T 180 366.674133 M 0.95871 0 32 (The name port to the host on which a thread is e) widthshow 382.865906 366.674133 M 0.95871 0 32 (x) widthshow 387.716003 366.674133 M 0.95871 0 32 (ecuting \(on which its containing task) widthshow (w) 180.0 378.674 T (as created\) is returned by the ) 187.12 378.674 T 0 FF (mach_host_self) 304.86 378.674 T 4 FF ( trap.) 370.41 378.674 T 180 402.674011 M 0.438644 0 32 (Each host also has a control port used for its manipulation. F) widthshow 427.435181 402.674011 M 0.438644 0 32 (or historic reasons, the con-) widthshow 180 414.67395 M 0.432465 0 32 (trol port for the host is called its pri) widthshow 324.869873 414.67395 M 0.432465 0 32 (vile) widthshow 339.71994 414.67395 M 0.432465 0 32 (ged host port. No primiti) widthshow 440.369934 414.67395 M 0.432465 0 32 (v) widthshow 445.220032 414.67395 M 0.432465 0 32 (e returns this port. This) widthshow (port is supplied to the bootstrap task as described belo) 180.0 426.674 T (w) 396.12 426.674 T (.) 402.691 426.674 T 4 FF 180 450.67395 M 1.071396 0 32 (FIGURE 11 sho) widthshow 246.892929 450.67395 M 1.071396 0 32 (ws the client visible host structures. Access to the host control port al-) widthshow 4 FF (lo) 180.0 462.674 T (ws access to the processor set and processor ports.) 187.53 462.674 T (The follo) 180.0 486.674 T (wing host speci\336c calls are pro) 216.69 486.674 T (vided:) 340.13 486.674 T 7 (Times-Roman) 7 1 mymakefontmetric 7 FF 180.0 504.674 T 3 FF 193.535995 504.673767 M 0.204193 0 32 (host_contr) widthshow 235.866241 504.673767 M 0.204193 0 32 (ol ) widthshow 5 FF 246.350433 504.673767 M 0.204193 0 32 widthshow 0 FF 256.220428 504.673767 M 0.204193 0 32 ( vm_set_default_memory_manager) widthshow 4 FF 407.22464 504.673767 M 0.204193 0 32 ( \321 Set the def) widthshow 465.711487 504.673767 M 0.204193 0 32 (ault memory man-) widthshow (ager) 193.536 516.674 T (.) 210.196 516.674 T 7 FF 180.0 531.674 T 3 FF 193.535995 531.673645 M 0.905792 0 32 (task ) widthshow 5 FF 213.051788 531.673645 M 0.905792 0 32 widthshow 0 FF 222.921783 531.673645 M 0.905792 0 32 ( vm_statistics) widthshow 4 FF 281.317566 531.673645 M 0.905792 0 32 ( \321 Return host-wide memory usage statistics. \(Note that these) widthshow (statistics are returned gi) 193.536 543.674 T (v) 288.546 543.674 T (en an) 293.396 543.674 T (y task port on the host.\)) 314.626 543.674 T 7 FF 180.0 558.674 T 3 FF (host_contr) 193.536 558.674 T (ol ) 235.866 558.674 T 5 FF 246.146 558.674 T 0 FF ( host_adjust_time) 256.016 558.674 T 4 FF ( \321 Mak) 331.846 558.674 T (e a clock adjustment.) 365.076 558.674 T 7 FF 180.0 573.674 T 3 FF 193.535995 573.673523 M 0.914185 0 32 (host_contr) widthshow 235.866241 573.673523 M 0.914185 0 32 (ol ) widthshow 5 FF 247.060425 573.673523 M 0.914185 0 32 widthshow 0 FF 256.93042 573.673523 M 0.914185 0 32 ( host_get_boot_inf) widthshow 336.204742 573.673523 M 0.914185 0 32 (o) widthshow 4 FF 341.204742 573.673523 M 0.914185 0 32 ( \321 Return operator supplied boot-time informa-) widthshow (tion.) 193.536 585.674 T 7 FF 180.0 600.673 T 3 FF (host_name ) 193.536 600.673 T 5 FF 239.366 600.673 T 0 FF ( host_get_time) 249.236 600.673 T 4 FF ( \321 Return the current time.) 311.166 600.673 T 7 FF 180.0 615.673 T 3 FF (host_name ) 193.536 615.673 T 5 FF 239.366 615.673 T 0 FF ( host_inf) 249.236 615.673 T (o) 285.936 615.673 T 4 FF ( \321 Return host information.) 290.936 615.673 T 7 FF 180.0 630.673 T 3 FF (host_name ) 193.536 630.673 T 5 FF 239.366 630.673 T 0 FF ( host_k) 249.236 630.673 T (er) 279.976 630.673 T (nel_v) 288.706 630.673 T (ersion) 311.386 630.673 T 4 FF ( \321 Return the k) 337.496 630.673 T (ernel v) 401.836 630.673 T (ersion.) 429.176 630.673 T 7 FF 180.0 645.673 T 3 FF (host_contr) 193.536 645.673 T (ol ) 235.866 645.673 T 5 FF 246.146 645.673 T 0 FF ( host_r) 256.016 645.673 T (eboot) 285.556 645.673 T 4 FF ( \321 Re-boot, with options.) 308.886 645.673 T 7 FF 180.0 660.673 T 3 FF (host_contr) 193.536 660.673 T (ol ) 235.866 660.673 T 5 FF 246.146 660.673 T 0 FF ( host_set_time) 256.016 660.673 T 4 FF ( \321 Set the current time.) 316.836 660.673 T 7 FF 180.0 675.673 T 3 FF 193.535995 675.673157 M 1.73732 0 32 (host_name ) widthshow 5 FF 241.103317 675.673157 M 1.73732 0 32 widthshow 0 FF 250.973312 675.673157 M 1.73732 0 32 ( host_pr) widthshow 287.81073 675.673157 M 1.73732 0 32 (ocessor_sets) widthshow 4 FF 339.460754 675.673157 M 1.73732 0 32 ( \321 Return name ports to the de\336ned processor) widthshow (sets.) 193.536 687.673 T 558 105.984009 2 72.999924 NF 558 204.007919 2 9.999985 NF 558 567.006897 2 21.999969 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 65 65 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (61 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (De) 72.0 55.824 T (vices) 82.359 55.824 T 0.25 SL 3.86 setmiterlimit 0 SC 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 7 1 mymakefontmetric 3 FF 72.0 530.683 T 4 (Times-Italic) 10 1 mymakefontmetric 4 FF (host_contr) 85.536 530.683 T (ol ) 127.866 530.683 T 5 (Symbol) 10 1 mymakefontmetric 5 FF 138.146 530.683 T 1 FF ( host_pr) 148.016 530.683 T (ocessors) 183.116 530.683 T 6 (Times-Roman) 10 1 mymakefontmetric 6 FF ( \321 Return control ports for the host\325) 218.106 530.683 T (s processors.) 364.487 530.683 T 3 FF 72.0 545.683 T 4 FF 85.535995 545.682556 M 0.946655 0 32 (host_contr) widthshow 127.866241 545.682556 M 0.946655 0 32 (ol ) widthshow 5 FF 139.092896 545.682556 M 0.946655 0 32 widthshow 1 FF 148.962891 545.682556 M 0.946655 0 32 ( host_pr) widthshow 185.009644 545.682556 M 0.946655 0 32 (ocessor_set_pri) widthshow 250.449707 545.682556 M 0.946655 0 32 (v) widthshow 6 FF 255.449707 545.682556 M 0.946655 0 32 ( \321 Con) widthshow 288.61322 545.682556 M 0.946655 0 32 (v) widthshow 293.463318 545.682556 M 0.946655 0 32 (ert a processor set name port to a) widthshow (control port.) 85.536 557.683 T 72 600.015747 360 3.024002 CR 432 601.53 M 72 601.53 L S 0 0 612 792 CR 7 (Times-Bold) 14 1 mymakefontmetric 7 FF (De) 72.0 595.349 T (vices) 88.114 595.349 T 6 FF 72 619.70636 M 1.793777 0 32 (The Mach k) widthshow 123.807617 619.70636 M 1.793777 0 32 (ernel e) widthshow 152.381485 619.70636 M 1.793777 0 32 (xports a v) widthshow 195.259125 619.70636 M 1.793777 0 32 (ery simple interf) widthshow 264.846741 619.70636 M 1.793777 0 32 (ace to its de) widthshow 317.468201 619.70636 M 1.793777 0 32 (vices. When initialized, the) widthshow 72 631.706299 M 0.221207 0 32 (Mach k) widthshow 102.391266 631.706299 M 0.221207 0 32 (ernel b) widthshow 129.902588 631.706299 M 0.221207 0 32 (uilds an internal table that lists each de) widthshow 286.461182 631.706299 M 0.221207 0 32 (vice. It e) widthshow 321.463684 631.706299 M 0.221207 0 32 (xports a single port, the ) widthshow 4 FF 419.229736 631.706299 M 0.221207 0 32 (de-) widthshow 72 643.706238 M 2.095337 0 32 (vice master) widthshow 6 FF 119.915344 643.706238 M 2.095337 0 32 ( port, which is responsible for allocating de) widthshow 307.642853 643.706238 M 2.095337 0 32 (vices. A task that holds send) widthshow 72 655.706177 M 0.51059 0 32 (rights to the de) widthshow 133.001907 655.706177 M 0.51059 0 32 (vice master port may request the k) widthshow 273.715515 655.706177 M 0.51059 0 32 (ernel to ) widthshow 4 FF 307.506714 655.706177 M 0.51059 0 32 (open) widthshow 6 FF 326.946716 655.706177 M 0.51059 0 32 ( a de) widthshow 346.598022 655.706177 M 0.51059 0 32 (vice, returning a port) widthshow 72 667.706116 M 1.101486 0 32 (that pro) widthshow 103.78157 667.706116 M 1.101486 0 32 (vides access to that de) widthshow 196.807663 667.706116 M 1.101486 0 32 (vice. Operations on that port then manipulate the de) widthshow 412.839722 667.706116 M 1.101486 0 32 (vice,) widthshow (until it is ) 72.0 679.706 T 4 FF (closed) 110.07 679.706 T 6 FF (.) 135.62 679.706 T 63 108 378 416.015991 CR 3 SL 0 SC 0.6667 G 278.97 388.76 M 282.06 383.87 L 261.9 377.99 L 275.88 393.66 L F 278.98 388.78 M 333.91 423 L S 282.1 360 M 282.1 354.21 L 261.91 360 L 282.1 365.79 L F 282.1 360 M 306.91 360 L S 1 G 78 495 348 27 NF 78 495 348 13.031998 CR 0.25 SL 2 SC 0 G 438 501.52 M 150 501.52 L S 0 SC 141 501.52 M 78 501.52 L S 63 108 378 416.015991 CR 8 (Helvetica-Bold) 9 1 mymakefontmetric 8 FF (FIGURE 11) 78.0 514.032 T 2 FF (Host Structur) 150.0 514.032 T (es) 203.082 514.032 T 315.910767 190.941986 90.972015 1 NF 9 (Times-Roman) 14 1 mymakefontmetric 9 FF (port name space) 315.911 189.543 T 4 FF (port right X) 304.531 228.413 T (port right Y) 362.942 228.413 T 1 SL 18 297.910767 171 135 72 RS 432.91 207 M 297.91 207 L S 357.07 243 M 357.07 207 L S 414.91 243 M 414.91 207 L S 4 SL 290.5 154.76 M 285.85 159.46 L 306.9 171 L 295.16 150.06 L F 290.52 154.77 M 252.91 117 L S 6 FF (port name) 216.911 132.831 T (\(inde) 279.911 132.816 T (x\)) 300.311 132.816 T 1 SL 315.910767 117 117 27 N 335.336731 136.670609 78.162003 1 NF 9 FF (bootstrap task) 335.337 135.271 T 354.48 147.15 M 342.9 144 L 351.05 152.81 L S 376.32 167.85 M 387.9 171 L 379.75 162.19 L S 387.91 171 M 342.91 144 L S 3 SL 305.089233 342 127.821533 36 N 9 FF (host control port) 322.732 364.771 T 1 SL 358.82 330.65 M 355.56 331.25 L 360.9 341.99 L 362.07 330.05 L F 358.83 330.66 M 342.91 243 L S 218.743393 366.170593 23.337997 1 NF 9 FF (host) 218.743 364.771 T 198.910767 342 63 36 N 3 SL 71.089233 315 91.821533 36 N 9 FF (processor port) 77.157 337.771 T 147.136459 447.170593 22.554001 1 NF 9 FF (task) 147.136 445.771 T 1 SL 126.910767 423 63 36 N 3 SL 260.089233 423 127.821533 36 N 9 FF (host name port) 282.399 445.771 T 1 SL 250.38 441 M 250.38 444.31 L 261.91 441 L 250.38 437.69 L F 250.38 441 M 189.91 441 L S 3 SL 71.089233 261 91.821533 36 N (processor port) 77.157 283.771 T 71.917236 207 144.99353 36 N (processor set name port) 78.137 229.771 T 71.917236 153 162.99353 36 N (processor set control port) 82.468 175.771 T 1 SL 173.21 356.19 M 174.7 353.23 L 162.91 350.99 L 171.72 359.14 L F 173.21 356.19 M 198.91 369 L S 236.26 200.45 M 239.54 200.06 L 234.9 189 L 232.97 200.84 L F 236.26 200.46 M 252.91 342 L S 218.99 254.34 M 222.24 253.74 L 216.91 243 L 215.74 254.94 L F 219 254.34 M 234.91 342 L S 169.35 306.56 M 172.09 304.71 L 162.91 296.99 L 166.61 308.41 L F 169.35 306.57 M 198.91 351 L S 0.5 SL 138.46 483.83 M 138.46 487.14 L 150 483.83 L 138.46 480.52 L F 138.46 483.83 M 105 483.83 L S 3 SL 0.6667 G 309.81 483.83 M 309.81 489.62 L 330 483.83 L 309.81 478.04 L F 309.81 483.83 M 285 483.83 L S 0 G 6 FF (send right) 168.0 483.831 T (recei) 348.0 483.831 T (v) 367.18 483.831 T (e right) 372.03 483.831 T grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 66 66 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 2 SC 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (62 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Ph) 180.0 55.824 T (ysical Resour) 190.368 55.824 T (ce Management) 241.452 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 180 112.650635 M 0.887634 0 32 (In as much as that Mach messaging semantics are asynchronous, the de) widthshow 475.01416 112.650635 M 0.887634 0 32 (vice interf) widthshow 516.621826 112.650635 M 0.887634 0 32 (ace is) widthshow 180 124.650574 M 0.796387 0 32 (asynchronous. A client sends a message to a de) widthshow 375.251251 124.650574 M 0.796387 0 32 (vice; a reply message indicates status or) widthshow 180 136.650513 M 0.631638 0 32 (data returned. There e) widthshow 269.485016 136.650513 M 0.631638 0 32 (xist, though, MIG generated stubs that use a message send/recei) widthshow 530.7099 136.650513 M 0.631638 0 32 (v) widthshow 535.559998 136.650513 M 0.631638 0 32 (e) widthshow 180 148.650452 M 2.338409 0 32 (pair to pro) widthshow 226.186905 148.650452 M 2.338409 0 32 (vide a synchronous interf) widthshow 334.472198 148.650452 M 2.338409 0 32 (ace. In k) widthshow 373.199097 148.650452 M 2.338409 0 32 (eeping with the style of this document) widthshow 180 160.650391 M 0.81459 0 32 (\(which is to list the synchronous RPC interf) widthshow 360.882202 160.650391 M 0.81459 0 32 (aces when the) widthshow 418.451477 160.650391 M 0.81459 0 32 (y e) widthshow 431.056152 160.650391 M 0.81459 0 32 (xist\), the synchronous v) widthshow 528.900024 160.650391 M 0.81459 0 32 (er-) widthshow (sions are sho) 180.0 172.65 T (wn here.) 231.41 172.65 T 180 196.650269 M 0.175934 0 32 (Gi) widthshow 189.750137 196.650269 M 0.175934 0 32 (v) widthshow 194.60022 196.650269 M 0.175934 0 32 (en access to the de) widthshow 269.474121 196.650269 M 0.175934 0 32 (vice master port, the port controlling a named de) widthshow 465.321716 196.650269 M 0.175934 0 32 (vice is returned by) widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 180 208.650208 M 0.646896 0 32 (de) widthshow 189.290085 208.650208 M 0.646896 0 32 (vice_master ) widthshow 5 (Symbol) 10 1 mymakefontmetric 5 FF 240.756989 208.650208 M 0.646896 0 32 widthshow 0 FF 250.626984 208.650208 M 0.646896 0 32 ( de) widthshow 263.623962 208.650208 M 0.646896 0 32 (vice_open) widthshow 3 FF 305.843964 208.650208 M 0.646896 0 32 (. \(Normally) widthshow 352.501221 208.650208 M 0.646896 0 32 (, only some de) widthshow 412.522034 208.650208 M 0.646896 0 32 (vice mastering task w) widthshow 501.292786 208.650208 M 0.646896 0 32 (ould hold) widthshow (the de) 180.0 220.65 T (vice master port.\) The de) 203.91 220.65 T (vice is freed from use by ) 303.91 220.65 T 4 FF (de) 405.55 220.65 T (vice ) 414.84 220.65 T 5 FF 433.44 220.65 T 0 FF ( de) 443.31 220.65 T (vice_close) 455.66 220.65 T 3 FF (.) 497.87 220.65 T 180 244.650162 M 0.034943 0 32 (There is no primiti) widthshow 254.574966 244.650162 M 0.034943 0 32 (v) widthshow 259.425049 244.650162 M 0.034943 0 32 (e that returns the de) widthshow 338.184967 244.650162 M 0.034943 0 32 (vice master port. This port is pro) widthshow 469.064697 244.650162 M 0.034943 0 32 (vided to the boot-) widthshow (strap task as described belo) 180.0 256.65 T (w) 289.17 256.65 T (.) 295.741 256.65 T 3 FF 180 280.650146 M 0.873795 0 32 (FIGURE 12 sho) widthshow 246.497726 280.650146 M 0.873795 0 32 (ws the client visible de) widthshow 341.403046 280.650146 M 0.873795 0 32 (vice structures. Access to the de) widthshow 473.822174 280.650146 M 0.873795 0 32 (vice master port) widthshow 3 FF (pro) 180.0 292.65 T (vides access to all de) 193.18 292.65 T (vices.) 276.8 292.65 T 180 662.682007 M 0.854645 0 32 (Each de) widthshow 212.53479 662.682007 M 0.854645 0 32 (vice is modeled as a set of records of some indeterminate size. Each de) widthshow 507.215332 662.682007 M 0.854645 0 32 (vice de-) widthshow 180 674.681946 M 0.293503 0 32 widthshow 429.202118 674.681946 M 0.293503 0 32 (ace, both in tw) widthshow 488.862671 674.681946 M 0.293503 0 32 (o forms: one) widthshow 180 686.681885 M 1.046631 0 32 (which uses out-of-line virtual memory managed space, and one that transmits data \322in-) widthshow 171 295.983398 378 346.031982 CR 3 SL 0.6667 G 455.41 527.8 M 449.62 527.8 L 455.41 547.98 L 461.2 527.8 L F 455.41 527.8 M 455.41 502.98 L S 1 G 186 610.968445 348 27 NF 186 610.968445 348 13.031998 CR 0.25 SL 2 SC 0 G 546 617.48 M 258 617.48 L S 0 SC 249 617.48 M 186 617.48 L S 171 295.983398 378 346.031982 CR 6 (Helvetica-Bold) 9 1 mymakefontmetric 6 FF (FIGURE 12) 186.0 630.0 T 2 FF (De) 258.0 630.0 T (vice Structur) 268.359 630.0 T (es) 318.435 630.0 T 3 SL 390.589233 466.983398 127.821533 36 N 7 (Times-Roman) 14 1 mymakefontmetric 7 FF (de) 402.804 489.755 T (vice master port) 415.671 489.755 T 1 SL 451.6 456.68 M 448.64 455.19 L 446.4 466.98 L 454.55 458.17 L F 451.61 456.68 M 464.41 430.98 L S 416.739868 572.153992 13.216003 1 NF 7 FF (de) 416.74 570.755 T 429.606079 572.153992 64.14801 1 NF (vice master) 429.606 570.755 T 410.410767 547.983398 90 36 N 3 SL 198 385.983398 91.821533 36 N 7 FF (de) 212.619 408.755 T (vice port) 225.486 408.755 T 198 547.983398 91.821533 36 N (de) 212.619 570.755 T (vice port) 225.486 570.755 T 211.234238 329.153992 13.216003 1 NF 7 FF (de) 211.234 327.755 T 224.100433 329.153992 23.324005 1 NF (vice) 224.1 327.755 T 1 SL 198 304.983398 63 36 N 211.234238 491.153992 13.216003 1 NF (de) 211.234 489.755 T 224.100433 491.153992 23.324005 1 NF (vice) 224.1 489.755 T 198 466.983398 63 36 N 3 SL 0.6667 G 243 523.17 M 248.79 523.17 L 243 502.98 L 237.21 523.17 L F 243 523.17 M 243 547.98 L S 243 361.17 M 248.79 361.17 L 243 340.98 L 237.21 361.17 L F 243 361.17 M 243 385.98 L S 1 SL 0 G 257.25 429.39 M 259.38 426.85 L 248.41 421.98 L 255.13 431.92 L F 257.25 429.39 M 410.41 556.98 L S 304.91 566.86 M 305.16 563.56 L 293.41 565.97 L 304.65 570.16 L F 304.91 566.87 M 410.41 574.98 L S 0.5 SL 242.77 599.8 M 242.77 603.11 L 254.3 599.8 L 242.77 596.49 L F 242.77 599.8 M 209.3 599.8 L S 3 SL 0.6667 G 421.58 599.8 M 421.58 605.59 L 441.77 599.8 L 421.58 594.01 L F 421.58 599.8 M 396.77 599.8 L S 0 G 3 FF (send right) 272.302 599.8 T (recei) 459.768 599.8 T (v) 478.948 599.8 T (e right) 483.798 599.8 T 401.410767 378.925385 90.972015 1 NF 7 FF (port name space) 401.411 377.526 T 4 FF (port right X) 390.031 416.397 T (port right Y) 448.442 416.397 T 1 SL 18 383.410767 358.983398 135 72 RS 518.41 394.98 M 383.41 394.98 L S 442.57 430.98 M 442.57 394.98 L S 500.41 430.98 M 500.41 394.98 L S 4 SL 376.01 342.75 M 371.35 347.45 L 392.4 358.98 L 380.66 338.05 L F 376.02 342.75 M 338.41 304.98 L S 3 FF (port name) 302.411 320.815 T (\(inde) 365.411 320.8 T (x\)) 385.811 320.8 T 1 SL 401.410767 304.983398 117 27 N 420.836731 324.653992 78.162003 1 NF 7 FF (bootstrap task) 420.837 323.255 T 439.98 335.13 M 428.4 331.98 L 436.55 340.79 L S 461.82 355.83 M 473.4 358.98 L 465.25 350.17 L S 473.41 358.98 M 428.41 331.98 L S grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 67 67 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 1 G 72 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 8 1 mymakefontmetric 0 FF (Mach 3 Kernel Principles) 72.0 731.707 T 1 (Times-Bold) 10 1 mymakefontmetric 1 FF 422 731.706665 M -2.5 0 32 (63 ) widthshow 1 G 72 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (De) 72.0 55.824 T (vices) 82.359 55.824 T 0.25 SL 3.86 setmiterlimit 432 63 M 72 63 L S 2 SL 432 45 M 72 45 L S 0.25 SL 2 SC 432 720 M 72 720 L S 0 0 612 792 CR 1 G 72 108 360 594 NF 0 G 3 (Times-Roman) 10 1 mymakefontmetric 3 FF 72 114.666626 M 0.38208 0 32 (line\323 \(inband\) in the message \(ef) widthshow 204.460556 114.666626 M 0.38208 0 32 widthshow 4 (Times-Italic) 10 1 mymakefontmetric 4 FF 377.645142 114.666626 M 0.38208 0 32 (de) widthshow 386.935242 114.666626 M 0.38208 0 32 (vice ) widthshow 5 (Symbol) 10 1 mymakefontmetric 5 FF 405.917297 114.666626 M 0.38208 0 32 widthshow 1 FF 415.787292 114.666626 M 0.38208 0 32 ( de-) widthshow 72 126.666565 M 1.601898 0 32 (vice_r) widthshow 97.920105 126.666565 M 1.601898 0 32 (ead) widthshow 3 FF 112.920105 126.666565 M 1.601898 0 32 (, ) widthshow 4 FF 119.522003 126.666565 M 1.601898 0 32 (de) widthshow 128.812088 126.666565 M 1.601898 0 32 (vice ) widthshow 5 FF 149.013992 126.666565 M 1.601898 0 32 widthshow 1 FF 158.883987 126.666565 M 1.601898 0 32 ( de) widthshow 172.835968 126.666565 M 1.601898 0 32 (vice_r) widthshow 198.756073 126.666565 M 1.601898 0 32 (ead_inband) widthshow 3 FF 248.776062 126.666565 M 1.601898 0 32 (, ) widthshow 4 FF 255.37796 126.666565 M 1.601898 0 32 (de) widthshow 264.66803 126.666565 M 1.601898 0 32 (vice ) widthshow 5 FF 284.869934 126.666565 M 1.601898 0 32 widthshow 1 FF 294.739929 126.666565 M 1.601898 0 32 ( de) widthshow 308.691925 126.666565 M 1.601898 0 32 (vice_write) widthshow 3 FF 352.561951 126.666565 M 1.601898 0 32 ( and ) widthshow 4 FF 375.20575 126.666565 M 1.601898 0 32 (de) widthshow 384.495819 126.666565 M 1.601898 0 32 (vice ) widthshow 5 FF 404.697723 126.666565 M 1.601898 0 32 widthshow 1 FF 414.567719 126.666565 M 1.601898 0 32 ( de-) widthshow (vice_write_inband) 72.0 138.667 T 3 FF (.) 150.89 138.667 T 72 162.666443 M 1.07811 0 32 (Each de) widthshow 104.758255 162.666443 M 1.07811 0 32 (vice also de\336nes some status information, read by ) widthshow 4 FF 315.303162 162.666443 M 1.07811 0 32 (de) widthshow 324.593231 162.666443 M 1.07811 0 32 (vice ) widthshow 5 FF 344.271362 162.666443 M 1.07811 0 32 widthshow 1 FF 354.141357 162.666443 M 1.07811 0 32 ( de) widthshow 367.569519 162.666443 M 1.07811 0 32 (vice_get_status) widthshow 3 FF (and set by ) 72.0 174.666 T 4 FF (de) 115.05 174.666 T (vice ) 124.34 174.666 T 5 FF 142.94 174.666 T 1 FF ( de) 152.81 174.666 T (vice_set_status) 165.16 174.666 T 3 FF (.) 228.48 174.666 T 72 198.666321 M 0.208466 0 32 (There are tw) widthshow 122.847 198.666321 M 0.208466 0 32 (o v) widthshow 135.405548 198.666321 M 0.208466 0 32 (ery de) widthshow 160.074158 198.666321 M 0.208466 0 32 (vice speci\336c functions de\336ned by the k) widthshow 317.315002 198.666321 M 0.208466 0 32 (ernel for special purpose de-) widthshow (vices.) 72.0 210.666 T 6 (Times-Roman) 7 1 mymakefontmetric 6 FF 72.0 228.666 T 4 FF 85.535995 228.666199 M 0.496628 0 32 (de) widthshow 94.82608 228.666199 M 0.496628 0 32 (vice ) widthshow 5 FF 113.922714 228.666199 M 0.496628 0 32 widthshow 3 FF 123.792709 228.666199 M 0.496628 0 32 ( ) widthshow 1 FF 126.789337 228.666199 M 0.496628 0 32 (de) widthshow 136.63942 228.666199 M 0.496628 0 32 (vice_set_\336lter) widthshow 3 FF 195.50943 228.666199 M 0.496628 0 32 ( \321 This call establishes an input \336lter for all data that ap-) widthshow 85.535995 240.666138 M 0.425522 0 32 (pears upon the de) widthshow 156.822708 240.666138 M 0.425522 0 32 (vice. The \336lter is e) widthshow 233.084885 240.666138 M 0.425522 0 32 (xpressed as a small \322program\323 for a simple stack) widthshow 85.535995 252.666077 M 0.868561 0 32 (machine implemented by the dri) widthshow 218.190384 252.666077 M 0.868561 0 32 (v) widthshow 223.040466 252.666077 M 0.868561 0 32 (er) widthshow 230.260773 252.666077 M 0.868561 0 32 (. This is used to \336lter incoming netw) widthshow 382.910767 252.666077 M 0.868561 0 32 (ork pack) widthshow 418.389374 252.666077 M 0.868561 0 32 (ets,) widthshow 85.535995 264.666016 M 0.782776 0 32 (sending asynchronous messages carrying the pack) widthshow 290.139954 264.666016 M 0.782776 0 32 (ets that pass the \336lter to the proto-) widthshow 85.535995 276.665955 M 0.124466 0 32 (col serv) widthshow 116.890549 276.665955 M 0.124466 0 32 (er task specifying this \336lter for this de) widthshow 269.441956 276.665955 M 0.124466 0 32 (vice.) widthshow 1 FF 288.601959 276.665955 M 0.124466 0 32 ( ) widthshow 3 FF 291.22644 276.665955 M 0.124466 0 32 (Multiple pack) widthshow 347.080933 276.665955 M 0.124466 0 32 (et \336lters can be spec-) widthshow 85.535995 288.665894 M 2.536423 0 32 (i\336ed \(possibly by multiple tasks\) and each pack) widthshow 293.451019 288.665894 M 2.536423 0 32 (et may well be sent to multiple) widthshow (recipients.) 85.536 300.666 T 6 FF 72.0 315.666 T 4 FF 85.535995 315.665771 M 0.334549 0 32 (de) widthshow 94.82608 315.665771 M 0.334549 0 32 (vice ) widthshow 5 FF 113.760635 315.665771 M 0.334549 0 32 widthshow 3 FF 123.63063 315.665771 M 0.334549 0 32 ( ) widthshow 1 FF 126.465179 315.665771 M 0.334549 0 32 (de) widthshow 136.315262 315.665771 M 0.334549 0 32 (vice_map) widthshow 3 FF 176.865265 315.665771 M 0.334549 0 32 ( \321 This call is similar to ) widthshow 1 FF 281.157104 315.665771 M 0.334549 0 32 (vm_map) widthshow 3 FF 318.377106 315.665771 M 0.334549 0 32 (. It introduces a ne) widthshow 393.615448 315.665771 M 0.334549 0 32 (w memo-) widthshow 85.535995 327.66571 M 1.411774 0 32 (ry range in the task\325) widthshow 170.613403 327.66571 M 1.411774 0 32 (s virtual address space. The e) widthshow 294.712372 327.66571 M 1.411774 0 32 (xternal memory manager for this) widthshow 85.535995 339.665649 M 1.017334 0 32 (range is the de) widthshow 146.378143 339.665649 M 1.017334 0 32 (vice dri) widthshow 177.415619 339.665649 M 1.017334 0 32 (v) widthshow 182.265701 339.665649 M 1.017334 0 32 (er) widthshow 189.635925 339.665649 M 1.017334 0 32 (, which can pro) widthshow 254.188019 339.665649 M 1.017334 0 32 (vide an) widthshow 284.215454 339.665649 M 1.017334 0 32 (y illusion of the de) widthshow 363.034912 339.665649 M 1.017334 0 32 (vice. The typical) widthshow 85.535995 351.665588 M 0.35083 0 32 (use of this call is to map a w) widthshow 202.122696 351.665588 M 0.35083 0 32 (orkstation\325) widthshow 244.903 351.665588 M 0.35083 0 32 (s frame b) widthshow 282.614777 351.665588 M 0.35083 0 32 (uf) widthshow 290.694916 351.665588 M 0.35083 0 32 (fer into the display serv) widthshow 386.378326 351.665588 M 0.35083 0 32 (er\325) widthshow 396.92865 351.665588 M 0.35083 0 32 (s memo-) widthshow (ry) 85.536 363.666 T (.) 93.216 363.666 T 72 387.665466 M 1.344101 0 32 (A \322mapped\323 de) widthshow 136.638351 387.665466 M 1.344101 0 32 (vice \(one associated with a shared memory windo) widthshow 345.477234 387.665466 M 1.344101 0 32 (w established by ) widthshow 1 FF 418.669525 387.665466 M 1.344101 0 32 (de-) widthshow 72 399.665405 M 1.011734 0 32 (vice_map) widthshow 3 FF 112.550003 399.665405 M 1.011734 0 32 (\) pro) widthshow 132.571823 399.665405 M 1.011734 0 32 (vides support for user space de) widthshow 260.960632 399.665405 M 1.011734 0 32 (vice dri) widthshow 291.992523 399.665405 M 1.011734 0 32 (v) widthshow 296.84259 399.665405 M 1.011734 0 32 (ers. The shared memory windo) widthshow 424.779694 399.665405 M 1.011734 0 32 (w) widthshow 72 411.665344 M 1.763794 0 32 (can pro) widthshow 103.323883 411.665344 M 1.763794 0 32 (vide some limited access to de) widthshow 233.822998 411.665344 M 1.763794 0 32 (vice hardw) widthshow 279.636841 411.665344 M 1.763794 0 32 (are re) widthshow 303.730743 411.665344 M 1.763794 0 32 (gisters to allo) widthshow 360.898468 411.665344 M 1.763794 0 32 (w for direct user) widthshow 72 423.665283 M 0.093002 0 32 (space manipulation of the de) widthshow 187.102158 423.665283 M 0.093002 0 32 (vice or perhaps direct interaction with the k) widthshow 361.783264 423.665283 M 0.093002 0 32 (ernel de) widthshow 393.556396 423.665283 M 0.093002 0 32 (vice dri) widthshow 423.669556 423.665283 M 0.093002 0 32 (v-) widthshow 72 435.665222 M 0.949966 0 32 (er so that each I/O operation does not require a Mach IPC message \(and the associated) widthshow 72 447.665161 M 1.006119 0 32 (costs, especially the cop) widthshow 171.56842 447.665161 M 1.006119 0 32 (y of data\). Mapped de) widthshow 263.373047 447.665161 M 1.006119 0 32 (vices pro) widthshow 300.609253 447.665161 M 1.006119 0 32 (vide an interrupt service via the) widthshow 1 FF (e) 72.0 459.665 T (vc_wait) 76.29 459.665 T 3 FF ( system trap and de) 109.06 459.665 T (vice dri) 186.02 459.665 T (v) 216.04 459.665 T (er de\336ned e) 220.89 459.665 T (v) 267.291 459.665 T (ent counts.) 272.141 459.665 T (The e) 72.0 483.665 T (v) 94.24 483.665 T (ent count service e) 99.09 483.665 T (xists for tw) 173.64 483.665 T (o reasons:) 218.54 483.665 T 6 FF 72.0 501.665 T 3 FF 85.535995 501.664978 M 0.829498 0 32 (A de) widthshow 105.275635 501.664978 M 0.829498 0 32 (vice dri) widthshow 136.125275 501.664978 M 0.829498 0 32 (v) widthshow 140.975357 501.664978 M 0.829498 0 32 (er interrupt routine cannot call Mach IPC to send a message indicating) widthshow (the interrupt.) 85.536 513.665 T 6 FF 72.0 528.665 T 3 FF (The use of e) 85.536 528.665 T (v) 134.436 528.665 T (ent counts is considerably cheaper than IPC messages.) 139.286 528.665 T 72 552.664856 M 1.459915 0 32 (The e) widthshow 95.700058 552.664856 M 1.459915 0 32 (v) widthshow 100.55014 552.664856 M 1.459915 0 32 (ent count service de\336nes one or more e) widthshow 266.86969 552.664856 M 1.459915 0 32 (v) widthshow 271.719788 552.664856 M 1.459915 0 32 (ent objects, named by task local e) widthshow 414.929443 552.664856 M 1.459915 0 32 (v) widthshow 419.77951 552.664856 M 1.459915 0 32 (ent) widthshow 3 FF 72 564.664856 M 0.825302 0 32 (IDs. Each of these e) widthshow 155.301361 564.664856 M 0.825302 0 32 (v) widthshow 160.151443 564.664856 M 0.825302 0 32 (ent objects has an associated e) widthshow 285.388123 564.664856 M 0.825302 0 32 (v) widthshow 290.23819 564.664856 M 0.825302 0 32 (ent count, initially zero. Whene) widthshow 419.379547 564.664856 M 0.825302 0 32 (v) widthshow 424.229614 564.664856 M 0.825302 0 32 (er) widthshow 3 FF 72 576.664856 M 0.510742 0 32 (the associated e) widthshow 135.531631 576.664856 M 0.510742 0 32 (v) widthshow 140.381714 576.664856 M 0.510742 0 32 (ent occurs \(typically a de) widthshow 242.704834 576.664856 M 0.510742 0 32 (vice interrupt\), the e) widthshow 325.077209 576.664856 M 0.510742 0 32 (v) widthshow 329.927307 576.664856 M 0.510742 0 32 (ent count is incremented.) widthshow 72 588.664795 M 0.181732 0 32 (If this count is zero when ) widthshow 1 FF 176.960403 588.664795 M 0.181732 0 32 (e) widthshow 181.250488 588.664795 M 0.181732 0 32 (vc_wait) widthshow 3 FF 214.020493 588.664795 M 0.181732 0 32 ( is called, the calling thread w) widthshow 334.710938 588.664795 M 0.181732 0 32 (aits for the ne) widthshow 389.816223 588.664795 M 0.181732 0 32 (xt e) widthshow 404.468109 588.664795 M 0.181732 0 32 (v) widthshow 409.318176 588.664795 M 0.181732 0 32 (ent to) widthshow 72 600.664795 M 1.216156 0 32 (occur) widthshow 93.660309 600.664795 M 1.216156 0 32 (. Only one thread may be w) widthshow 211.667313 600.664795 M 1.216156 0 32 (aiting for the e) widthshow 273.665924 600.664795 M 1.216156 0 32 (v) widthshow 278.515991 600.664795 M 1.216156 0 32 (ent to occur) widthshow 327.608643 600.664795 M 1.216156 0 32 (. If the count is non-zero) widthshow 72 612.664795 M 0.784607 0 32 (when ) widthshow 1 FF 96.944611 612.664795 M 0.784607 0 32 (e) widthshow 101.234695 612.664795 M 0.784607 0 32 (vc_wait) widthshow 3 FF 134.0047 612.664795 M 0.784607 0 32 ( is called, the count is simply decremented without causing the thread to) widthshow (w) 72.0 624.665 T (ait. The e) 79.12 624.665 T (v) 116.36 624.665 T (ent count guarantees that no e) 121.21 624.665 T (v) 240.1 624.665 T (ents are lost.) 244.951 624.665 T 72 648.664734 M 0.479919 0 32 (When a de) widthshow 115.469986 648.664734 M 0.479919 0 32 (vice interrupt occurs, the k) widthshow 224.209732 648.664734 M 0.479919 0 32 (ernel de) widthshow 256.369812 648.664734 M 0.479919 0 32 (vice dri) widthshow 286.869873 648.664734 M 0.479919 0 32 (v) widthshow 291.71994 648.664734 M 0.479919 0 32 (er w) widthshow 309.589905 648.664734 M 0.479919 0 32 (ould place de) widthshow 363.619904 648.664734 M 0.479919 0 32 (vice status in the) widthshow 72 660.664673 M 1.619904 0 32 (shared memory windo) widthshow 164.419952 660.664673 M 1.619904 0 32 (w and signal the associated e) widthshow 288.07962 660.664673 M 1.619904 0 32 (v) widthshow 292.929688 660.664673 M 1.619904 0 32 (ent. The user space de) widthshow 387.739471 660.664673 M 1.619904 0 32 (vice dri) widthshow 419.379517 660.664673 M 1.619904 0 32 (v) widthshow 424.229614 660.664673 M 1.619904 0 32 (er) widthshow 72 672.664612 M 0.952454 0 32 (w) widthshow 79.120056 672.664612 M 0.952454 0 32 (ould normally be w) widthshow 159.927475 672.664612 M 0.952454 0 32 (aiting with ) widthshow 1 FF 207.39238 672.664612 M 0.952454 0 32 (e) widthshow 211.682465 672.664612 M 0.952454 0 32 (vc_wait) widthshow 3 FF 244.452469 672.664612 M 0.952454 0 32 (. The user thread w) widthshow 325.082336 672.664612 M 0.952454 0 32 (ak) widthshow 334.422424 672.664612 M 0.952454 0 32 (es, processes the de) widthshow 415.339905 672.664612 M 0.952454 0 32 (vice) widthshow 72 684.664551 M 0.291473 0 32 (status, typically interacting with the de) widthshow 228.19751 684.664551 M 0.291473 0 32 (vice via its shared memory windo) widthshow 364.665039 684.664551 M 0.291473 0 32 (w) widthshow 371.235382 684.664551 M 0.291473 0 32 (, then w) widthshow 403.658386 684.664551 M 0.291473 0 32 (aits for) widthshow (the ne) 72.0 696.665 T (xt interrupt.) 96.01 696.665 T 52 557.998169 2 9.999985 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Page: 68 68 %%PageBoundingBox: 0 0 612 792 %%PageFonts: (atend) %%BeginPageSetup %%PaperSize: Letter /__NXsheetsavetoken save def 0 0 translate gsave /__NXbasematrix matrix currentmatrix def grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat 0 0 translate %%EndPageSetup FMBEGINPAGE gsave 0 0 612 792 rectclip /landscape false def 0 0 612 792 CR 0.25 SL 3.86 setmiterlimit 0 G 540 720 M 180 720 L S 1 G 180 725.039978 360 11.951996 NF 0 G 0 (Times-Bold) 10 1 mymakefontmetric 0 FF (64 ) 180.0 731.707 T 1 (Times-Bold) 8 1 mymakefontmetric 1 FF (Mach 3 Kernel Principles) 324.0 731.707 T 1 G 180 49.824005 360 12.024002 NF 0 G 2 (Times-Bold) 9 1 mymakefontmetric 2 FF (Ph) 180.0 55.824 T (ysical Resour) 190.368 55.824 T (ce Management) 241.452 55.824 T 0 SC 540 63 M 180 63 L S 2 SL 540 45 M 180 45 L S 0 0 612 792 CR 1 G 180 105.984009 360 596.015991 NF 180 119.983978 360 3.024002 CR 0.25 SL 2 SC 0 G 540 121.5 M 180 121.5 L S 0 0 612 792 CR 3 (Times-Bold) 14 1 mymakefontmetric 3 FF (Access to Pri) 180.0 115.317 T (vileged P) 256.832 115.317 T (orts) 310.606 115.317 T 4 (Times-Roman) 10 1 mymakefontmetric 4 FF 180 139.674637 M 0.321152 0 32 (The holder of the host control port can obtain send rights to an) widthshow 433.67392 139.674637 M 0.321152 0 32 (y port on the system \(with) widthshow 180 151.674622 M 0.216858 0 32 (the e) widthshow 199.226944 151.674622 M 0.216858 0 32 (xception of de) widthshow 256.620789 151.674622 M 0.216858 0 32 (vice ports\), including \322pri) widthshow 360.341522 151.674622 M 0.216858 0 32 (vile) widthshow 375.191589 151.674622 M 0.216858 0 32 (ged\323 ones, such as the processor set con-) widthshow 180 163.674606 M 0.167084 0 32 (trol ports. The basic pri) widthshow 274.018494 163.674606 M 0.167084 0 32 (vile) widthshow 288.868561 163.674606 M 0.167084 0 32 (ge mechanism pro) widthshow 362.372803 163.674606 M 0.167084 0 32 (vided by the k) widthshow 419.714111 163.674606 M 0.167084 0 32 (ernel is the restriction of pri) widthshow 531.669678 163.674606 M 0.167084 0 32 (v-) widthshow 180 175.674591 M 2.094955 0 32 (ile) widthshow 189.850082 175.674591 M 2.094955 0 32 (ged operations to tasks holding control ports, with the v) widthshow 431.224823 175.674591 M 2.094955 0 32 (arious control ports being) widthshow (deri) 180.0 187.675 T (v) 195.3 187.675 T (able only from the host control port.) 200.05 187.675 T 180 211.674561 M 0.275269 0 32 (Lik) widthshow 193.790054 211.674561 M 0.275269 0 32 (e) widthshow 197.980194 211.674561 M 0.275269 0 32 (wise, the holder of the de) widthshow 300.196686 211.674561 M 0.275269 0 32 (vice master port can obtain an) widthshow 421.673126 211.674561 M 0.275269 0 32 (y de) widthshow 438.63855 211.674561 M 0.275269 0 32 (vice port, and these ports) widthshow (can only be deri) 180.0 223.675 T (v) 243.9 223.675 T (ed from the master de) 248.75 223.675 T (vice port.) 335.7 223.675 T 180 247.67453 M 0.62561 0 32 (The inte) widthshow 213.525696 247.67453 M 0.62561 0 32 (grity of the system depends on the close holding of these tw) widthshow 460.007477 247.67453 M 0.62561 0 32 (o ports. There is no) widthshow 180 259.6745 M 1.180679 0 32 (k) widthshow 184.900055 259.6745 M 1.180679 0 32 (ernel operation that returns these ports. Only the bootstrap task \(the \336rst task\) is sup-) widthshow 180 271.6745 M 0.347824 0 32 (plied with these ports \(although that task may subsequently gi) widthshow 430.370544 271.6745 M 0.347824 0 32 (v) widthshow 435.220642 271.6745 M 0.347824 0 32 (e them out\) in the manner) widthshow (described belo) 180.0 283.674 T (w) 237.79 283.674 T (.) 244.361 283.674 T 180 307.674469 M 1.346237 0 32 (When the bootstrap task is created, its bootstrap port is set to be a special k) widthshow 500.05365 307.674469 M 1.346237 0 32 (ernel port) widthshow 180 319.674438 M 0.703964 0 32 (\(one whose recei) widthshow 248.908081 319.674438 M 0.703964 0 32 (v) widthshow 253.758163 319.674438 M 0.703964 0 32 (er is the k) widthshow 294.930115 319.674438 M 0.703964 0 32 (ernel\). This bootstrap port will respond to one and only one) widthshow 180 331.674438 M 0.356628 0 32 (request for service. One of the \336rst things that the bootstrap task is to do when it starts is) widthshow 180 343.674438 M 0.581818 0 32 (to send a message to this port \(the message ID doesn\325) widthshow 400.048279 343.674438 M 0.581818 0 32 (t matter b) widthshow 439.342041 343.674438 M 0.581818 0 32 (ut 999999 is the con) widthshow 522.379517 343.674438 M 0.581818 0 32 (v) widthshow 527.229614 343.674438 M 0.581818 0 32 (en-) widthshow 180 355.674408 M 1.357117 0 32 (tion\). The reply from this request will contain simply tw) widthshow 417.104126 355.674408 M 1.357117 0 32 (o port rights, the host control) widthshow (port and the de) 180.0 367.674 T (vice master port \(in that order\).) 239.46 367.674 T 180 391.674377 M 1.46228 0 32 (\(Implementation detail: It is important for the bootstrap task to mak) widthshow 465.062866 391.674377 M 1.46228 0 32 (e this request, not) widthshow 180 403.674377 M 0.600586 0 32 (only so that it will function, b) widthshow 302.023621 403.674377 M 0.600586 0 32 (ut also because the k) widthshow 387.086029 403.674377 M 0.600586 0 32 (ernel thread w) widthshow 445.387268 403.674377 M 0.600586 0 32 (aiting for the request is) widthshow (the one that becomes the initial def) 180.0 415.674 T (ault pager thread.\)) 319.88 415.674 T 558 105.984009 2 313.023682 NF grestore FMENDPAGE grestore showpage __NXsheetsavetoken restore %%PageTrailer %%Trailer %%Pages: 68 1 %%BoundingBox:0 0 612 792