+++ /dev/null
-%!PS-Adobe-3.0
-%%Title: (Solaris)
-%%Version: 1 2
-%%CreationDate: (D:19981004210632)
-%%For: (Administrator)
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%BoundingBox: 0 0 612 792
-%%Pages: 7
-%%DocumentProcessColors: (atend)
-%%DocumentSuppliedResources:
-%%+ font TimesNewRoman,Italic$2X1
-%%+ font CourierNew
-%%+ font TimesNewRoman,Bold$2X1
-%%+ font TimesNewRoman$2X1
-%%+ procset (Adobe Acrobat - PDF operators) 1.2 0
-%%+ procset (Adobe Acrobat - type operators) 1.2 0
-%%+ procset (Adobe Acrobat - general image support) 1.2 0
-%%+ procset (Adobe Acrobat - monochrome image support) 1.2 0
-%%EndComments
-%%BeginDefaults
-%%EndDefaults
-%%BeginProlog
-%%EndProlog
-%%BeginSetup
-%%BeginFile: l2check
-%%Copyright: Copyright 1993 Adobe Systems Incorporated. All Rights Reserved.
-systemdict /languagelevel known
-{ systemdict /languagelevel get 1 eq }
-{ true }
-ifelse
-{
-initgraphics /Helvetica findfont 18 scalefont setfont
-72 600 moveto (Error: Your printer driver needs to be configured) dup show
-72 580 moveto (for printing to a PostScript Level 1 printer.) dup show
-exch = =
-/Helvetica-Bold findfont 16 scalefont setfont
-72 520 moveto (Windows and Unix) show
-/Times-Roman findfont 16 scalefont setfont
-72 500 moveto (Select ªLevel 1º in the PostScript options section) show
-72 480 moveto (of the Acrobat Exchange or Reader print dialog.) show
-/Helvetica-Bold findfont 16 scalefont setfont
-72 440 moveto (Macintosh) show
-/Times-Roman findfont 16 scalefont setfont
-72 420 moveto (In the Chooser, select your printer driver.) show
-72 400 moveto (Then select your printer and click the Setup button.) show
-72 380 moveto (Follow any on-screen dialogs that may appear.) show
-showpage
-quit
-}
-if
-%%EndFile
-/currentpacking where{pop currentpacking true setpacking}if
-userdict /PDF 85 dict put
-%%BeginFile: pdfvars.prc
-%%Copyright: Copyright 1987-1996 Adobe Systems Incorporated. All Rights Reserved.
-userdict /PDFVars 75 dict dup begin put
-/_save 0 def
-/_cshow 0 def
-/InitAll 0 def
-/TermAll 0 def
-/_lp /none def
-/_doClip 0 def
-/sfc 0 def
-/_sfcs 0 def
-/_sfc 0 def
-/ssc 0 def
-/_sscs 0 def
-/_ssc 0 def
-/_fcs 0 def
-/_scs 0 def
-/_fp 0 def
-/_sp 0 def
-/_f0 0 array def
-/_f1 1 array def
-/_f3 3 array def
-/_f4 4 array def
-/_fc null def
-/_s0 0 array def
-/_s1 1 array def
-/_s3 3 array def
-/_s4 4 array def
-/_sc null def
-/_cpcf null def
-/_cpcs null def
-/_inT false def
-/_tr -1 def
-/_rise 0 def
-/_ax 0 def
-/_cx 0 def
-/_ld 0 def
-/_tm matrix def
-/_ctm matrix def
-/_mtx matrix def
-/_hy (-) def
-/_fScl 0 def
-/_hs 1 def
-/_pdfEncodings 2 array def
-/_baselineadj 0 def
-/_Tj 0 def
-/_italMtx[1 0 .212557 1 0 0]def
-/_italMtx_WMode1 [1 -.212557 0 1 0 0]def
-/_basefont 0 def
-/_basefonto 0 def
-/_pdf_oldCIDInit null def
-/_categories 10 dict def
-/_sa? true def
-/_op? false def
-/_ColorSep5044? false def
-/_tmpcolr? [] def
-/_tmpop? {} def
-end
-%%EndFile
-PDFVars begin PDF begin
-%%BeginFile: pdfutil.prc
-%%Copyright: Copyright 1993 Adobe Systems Incorporated. All Rights Reserved.
-/bd {bind def} bind def
-/ld {load def} bd
-/dd { PDFVars 3 1 roll put } bd
-/xdd { exch dd } bd
-/Level2?
-systemdict /languagelevel known
-{ systemdict /languagelevel get 2 ge } { false } ifelse
-def
-/here {
-dup currentdict exch known
-{ currentdict exch get true }
-{ pop false }
-ifelse
-} bd
-/isdefined? { where { pop true } { false } ifelse } bd
-/StartLoad { dup dup not { /_save save dd } if } bd
-/EndLoad { if not { _save restore } if } bd
-/npop { { pop } repeat } bd
-%%EndFile
-%%BeginFile: pdf.prc
-%%Copyright: Copyright 1987-1996 Adobe Systems Incorporated. All Rights Reserved.
-/initialize {
-_ColorSep5044? {sep_ops begin 50 dict begin} if
-newpath
-} bd
-/terminate {
-_ColorSep5044? {end end} if
-} bd
-Level2? StartLoad
-{ /m/moveto ld
-/l/lineto ld
-/c/curveto ld
-/setSA/setstrokeadjust ld
-} EndLoad
-Level2? not StartLoad
-{
-/pl {
-transform
-0.25 sub round 0.25 add exch
-0.25 sub round 0.25 add exch
-itransform
-} bd
-/m { _sa? { pl } if moveto } bd
-/l { _sa? { pl } if lineto } bd
-/c { _sa? { pl } if curveto } bd
-/setSA { /_sa? xdd } bd
-} EndLoad
-/v { currentpoint 6 2 roll c } bd
-/y { 2 copy c } bd
-/h/closepath ld
-/d/setdash ld
-/j/setlinejoin ld
-/J/setlinecap ld
-/M/setmiterlimit ld
-/w/setlinewidth ld
-/cf currentflat def
-/i {
-dup 0 eq { pop cf } if
-setflat
-} bd
-/ilp { /_lp /none dd } bd
-/sfc {
-_lp /fill ne {
-_sfcs
-_sfc
-/_lp /fill dd
-} if
-} dd
-/ssc {
-_lp /stroke ne {
-_sscs
-_ssc
-/_lp /stroke dd
-} if
-} dd
-/n {
-_doClip 1 ge {
-_doClip 1 eq { clip } { eoclip } ifelse
-/_doClip 0 dd
-} if
-newpath
-} bd
-/f {
-_doClip 1 ge
-{
-gsave sfc fill grestore
-_doClip 1 eq { clip } { eoclip } ifelse
-newpath
-ilp
-/_doClip 0 dd
-}
-{ sfc fill }
-ifelse
-} bd
-/f* {
-_doClip 1 ge
-{
-gsave sfc eofill grestore
-_doClip 1 eq { clip } { eoclip } ifelse
-newpath
-ilp
-/_doClip 0 dd
-}
-{ sfc eofill }
-ifelse
-} bd
-/S {
-_doClip 1 ge
-{
-gsave ssc stroke grestore
-_doClip 1 eq { clip } { eoclip } ifelse
-newpath
-ilp
-/_doClip 0 dd
-}
-{ ssc stroke }
-ifelse
-} bd
-/s { h S } bd
-/B {
-_doClip dup 1 ge
-gsave f grestore
-{
-gsave S grestore
-1 eq { clip } { eoclip } ifelse
-newpath
-ilp
-/_doClip 0 dd
-}
-{ pop S }
-ifelse
-} bd
-/b { h B } bd
-/B* {
-_doClip dup 1 ge
-gsave f* grestore
-{
-gsave S grestore
-1 eq { clip } { eoclip } ifelse
-newpath
-ilp
-/_doClip 0 dd
-}
-{ pop S }
-ifelse
-} bd
-/b* { h B* } bd
-/W { /_doClip 1 dd } bd
-/W* { /_doClip 2 dd } bd
-/q/save ld
-/Q { restore ilp } bd
-Level2? StartLoad
-{ /defineRes/defineresource ld
-/findRes/findresource ld
-currentglobal
-true systemdict /setglobal get exec
-[/Function /ExtGState /Form]
-{ /Generic /Category findresource dup length dict copy /Category defineresource pop }
-forall
-systemdict /setglobal get exec
-} EndLoad
-Level2? not StartLoad
-{ /AlmostFull?
-{ dup maxlength exch length sub 2 le
-} bind def
-/Expand
-{ 1 index maxlength mul cvi dict
-dup begin exch { def } forall end
-} bind def
-/xput
-{ 3 2 roll
-dup 3 index known not
-{ dup AlmostFull? { 1.5 Expand } if
-} if
-dup 4 2 roll put
-} bind def
-/defineRes
-{ _categories 1 index known not
-{ /_categories _categories 2 index 10 dict xput store
-} if
-_categories exch 2 copy get 5 -1 roll 4 index xput put
-} bind def
-/findRes
-{ _categories exch get exch get
-} bind def
-} EndLoad
-/cs
-{
-dup where { pop load } if
-dup /_fcs xdd
-ucs
-_cpcf exch get
-/_fc xdd
-/_fp null dd
-} bd
-/CS
-{
-dup where { pop load } if
-dup /_scs xdd ucs _cpcs exch get /_sc xdd /_sp null dd
-} bd
-/ucs {
-dup type /arraytype eq
-{ dup 0 get
-dup /Indexed eq
-{ pop 0 get }
-{ /Pattern eq
-{ dup length 2 eq
-{ 1 get ucs }
-{ 0 get }
-ifelse }
-{ 0 get }
-ifelse }
-ifelse }
-if }
-bd
-/_cpcf
-15 dict dup begin
-/DefaultGray _f1 def
-/DeviceGray _f1 def
-/DefaultRGB _f3 def
-/DeviceRGB _f3 def
-/DeviceCMYK _f4 def
-/CalGray _f1 def
-/CalRGB _f3 def
-/CalCMYK _f4 def
-/Lab _f3 def
-/Pattern _f0 def
-/Indexed _f1 def
-/Separation _f1 def
-/CIEBasedA _f1 def
-/CIEBasedABC _f3 def
-end
-dd
-/_cpcs
-15 dict dup begin
-/DefaultGray _s1 def
-/DeviceGray _s1 def
-/DefaultRGB _s3 def
-/DeviceRGB _s3 def
-/DeviceCMYK _s4 def
-/CalGray _s1 def
-/CalRGB _s3 def
-/CalCMYK _s4 def
-/Lab _s3 def
-/Pattern _s0 def
-/Indexed _s1 def
-/Separation _s1 def
-/CIEBasedA _s1 def
-/CIEBasedABC _s3 def
-end
-dd
-Level2? not StartLoad {
-/ri/pop ld
-/makePat/pop ld
-} EndLoad
-Level2? StartLoad {
-/ri
-{
-/findcolorrendering isdefined?
-{
-mark exch
-findcolorrendering
-counttomark 2 eq
-{ type /booleantype eq
-{ dup type /nametype eq
-{ dup /ColorRendering resourcestatus
-{ pop pop
-dup /DefaultColorRendering ne
-{
-/ColorRendering findresource
-setcolorrendering
-} if
-} if
-} if
-} if
-} if
-cleartomark
-}
-{ pop
-} ifelse
-} bd
-/makePat /makepattern ld
-} EndLoad
-Level2? not _ColorSep5044? or StartLoad
-{
-/L1setcolor {
-aload length
-dup 0 eq
-{ pop .5 setgray }
-{ dup 1 eq
-{ pop setgray }
-{ 3 eq
-{ setrgbcolor }
-{ setcmykcolor }
-ifelse }
-ifelse }
-ifelse
-} bind dd
-/_sfcs { } dd
-/_sscs { } dd
-} EndLoad
-Level2? not _ColorSep5044? not and StartLoad
-{
-/_sfc { _fc L1setcolor } dd
-/_ssc { _sc L1setcolor } dd
-} EndLoad
-Level2? _ColorSep5044? not and StartLoad
-{
-/_sfcs
-{
-_fcs setcolorspace
-} bind dd
-/_sscs
-{
-_scs setcolorspace
-} bind dd
-/_sfc
-{
-_fc aload pop
-_fp null eq
-{ setcolor }
-{ _fp setpattern }
-ifelse
-} bind dd
-/_ssc
-{
-_sc aload pop
-_sp null eq { setcolor } { _sp setpattern } ifelse
-} bind dd
-} EndLoad
-/sc
-{
-_fc astore pop
-ilp
-} bd
-/SC
-{
-_sc astore pop
-ilp
-} bd
-/scn {
-dup type /dicttype eq
-{ dup /_fp xdd
-/PaintType get 1 eq
-{ /_fc _f0 dd ilp }
-{ /_fc _cpcf _fcs ucs get dd
-sc }
-ifelse }
-{ sc }
-ifelse
-} bd
-/SCN {
-dup type /dicttype eq
-{ dup /_sp xdd
-/PaintType get 1 eq
-{ /_sc _s0 dd ilp }
-{ /_sc _cpcs _scs ucs get dd
-SC }
-ifelse }
-{ SC }
-ifelse
-} bd
-/g { /DefaultGray cs sc } bd
-/rg { /DefaultRGB cs sc } bd
-/k { /DeviceCMYK cs sc } bd
-/G { /DefaultGray CS SC } bd
-/RG { /DefaultRGB CS SC } bd
-/K { /DeviceCMYK CS SC } bd
-/cm { _mtx astore concat } bd
-/re {
-4 2 roll m
-1 index 0 rlineto
-0 exch rlineto
-neg 0 rlineto
-h
-} bd
-/RC/rectclip ld
-/EF/execform ld
-/PS { cvx exec } bd
-/initgs {
-/DefaultGray where
-{ pop }
-{ /DefaultGray /DeviceGray dd }
-ifelse
-/DefaultRGB where
-{ pop }
-{ /DefaultRGB /DeviceRGB dd }
-ifelse
-0 g 0 G
-[] 0 d 0 j 0 J 10 M 1 w
-true setSA
-} bd
-21 dict dup begin
-/CosineDot
-{ 180 mul cos exch 180 mul cos add 2 div } bd
-/Cross
-{ abs exch abs 2 copy gt { exch } if pop neg } bd
-/Diamond
-{ abs exch abs 2 copy add .75 le
-{ dup mul exch dup mul add 1 exch sub }
-{ 2 copy add 1.23 le
-{ .85 mul add 1 exch sub }
-{ 1 sub dup mul exch 1 sub dup mul add 1 sub }
-ifelse }
-ifelse } bd
-/Double
-{ exch 2 div exch 2 { 360 mul sin 2 div exch } repeat add } bd
-/DoubleDot
-{ 2 { 360 mul sin 2 div exch } repeat add } bd
-/Ellipse
-{ abs exch abs 2 copy 3 mul exch 4 mul add 3 sub dup 0 lt
-{ pop dup mul exch .75 div dup mul add 4 div
-1 exch sub }
-{ dup 1 gt
-{pop 1 exch sub dup mul exch 1 exch sub
-.75 div dup mul add 4 div 1 sub }
-{ .5 exch sub exch pop exch pop }
-ifelse }
-ifelse } bd
-/EllipseA
-{ dup mul .9 mul exch dup mul add 1 exch sub } bd
-/EllipseB
-{ dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub } bd
-/EllipseC
-{ dup .5 gt { 1 exch sub } if
-dup .25 ge
-{ .5 exch sub 4 mul dup mul 1 sub }
-{ 4 mul dup mul 1 exch sub }
-ifelse
-exch
-dup .5 gt { 1 exch sub } if
-dup .25 ge
-{ .5 exch sub 4 mul dup mul 1 sub }
-{ 4 mul dup mul 1 exch sub }
-ifelse
-add -2 div } bd
-/InvertedDouble
-{ exch 2 div exch 2 { 360 mul sin 2 div exch } repeat add neg } bd
-/InvertedDoubleDot
-{ 2 { 360 mul sin 2 div exch } repeat add neg } bd
-/InvertedEllipseA
-{ dup mul .9 mul exch dup mul add 1 sub } bd
-/InvertedSimpleDot
-{ dup mul exch dup mul add 1 sub } bd
-/Line
-{ exch pop abs neg } bd
-/LineX
-{ pop } bd
-/LineY
-{ exch pop } bd
-/Rhomboid
-{ abs exch abs 0.9 mul add 2 div } bd
-/Round
-{ abs exch abs 2 copy add 1 le
-{ dup mul exch dup mul add 1 exch sub }
-{ 1 sub dup mul exch 1 sub dup mul add 1 sub }
-ifelse } bd
-/SimpleDot
-{ dup mul exch dup mul add 1 exch sub } bd
-/Square
-{ abs exch abs 2 copy lt { exch } if pop neg } bd
-end
-{ /Function defineRes pop } forall
-/Identity {} /Function defineRes pop
-_ColorSep5044? StartLoad {
-/_defaulttransferfunc currenttransfer def
-/currentcolortransfer where
-{ pop /_defaultcolortransferfuncs [ currentcolortransfer ] def }
-if
-/concattransferfuncs {
-[ 3 1 roll /exec load exch /exec load ] cvx
-} bd
-/concatandsettransfer {
-/_defaulttransferfunc load concattransferfuncs settransfer
-} bd
-/concatandsetcolortransfer {
-colorplate 0 eq
-{
-_defaultcolortransferfuncs aload pop
-8 -1 roll 5 -1 roll concattransferfuncs 7 1 roll
-6 -1 roll 4 -1 roll concattransferfuncs 5 1 roll
-4 -1 roll 3 -1 roll concattransferfuncs 3 1 roll
-concattransferfuncs
-setcolortransfer
-} if
-colorplate 1 ge colorplate 4 le and
-{
-4 colorplate sub index 4 { exch pop } repeat
-concatandsettransfer
-} if
-colorplate 5 ge
-{
-0 index 4 { exch pop } repeat
-concatandsettransfer
-} if
-} bd
-/tn5044sethalftone
-{
-begin
-HalftoneType 5 eq
-{ [/Default /Cyan /Magenta /Yellow /Black /Default /Default /Default]
-colorplate get
-here not {
-/Default here not { currentdict } if
-} if
-}
-{ currentdict }
-ifelse
-end
-begin
-/TransferFunction here
-{
-concatandsettransfer
-currentdict dup length dict
-begin
-{
-1 index /TransferFunction ne { def } { pop pop } ifelse
-} forall
-currentdict
-end
-}
-{
-currentdict
-} ifelse
-end
-sethalftone
-} bd
-} EndLoad
-Level2? StartLoad {
-/gs
-{
-begin
-/SA here { setstrokeadjust } if
-/OP here { setoverprint } if
-/BG here { setblackgeneration } if
-/UCR here { setundercolorremoval } if
-/TR here
-{
-_ColorSep5044?
-{
-dup xcheck
-{ concatandsettransfer }
-{ aload pop concatandsetcolortransfer }
-ifelse
-}
-{
-dup xcheck
-{ settransfer }
-{ aload pop setcolortransfer }
-ifelse
-} ifelse
-} if
-/sethalftonephase isdefined? { /HTP here { sethalftonephase } if } if
-/HT here
-{ _ColorSep5044?
-{ tn5044sethalftone }
-{ sethalftone }
-ifelse
-} if
-end
-} bd
-/_defaulthalftone currenthalftone def
-} EndLoad
-Level2? not StartLoad {
-/gs
-{
-begin
-/SA here { /_sa? xdd } if
-/OP here { dup /_op? xdd
-/setoverprint where {pop setoverprint}
-{pop} ifelse
-} if
-/TR here
-{
-_ColorSep5044?
-{ dup xcheck
-{ concatandsettransfer }
-{ aload pop concatandsetcolortransfer }
-ifelse
-}
-{ dup xcheck
-{ settransfer }
-{ aload pop setcolortransfer }
-ifelse
-} ifelse
-} if
-/HT here
-{ _ColorSep5044?
-{ tn5044sethalftone }
-{ sethalftone }
-ifelse
-} if
-end
-} bd
-5 dict dup
-begin
-currentscreen 1 [/HalftoneType /SpotFunction /Angle /Frequency ]
-{ exch def } forall
-end
-/_defaulthalftone exch def
-} EndLoad
-/int {
-dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul
-exch pop add exch pop
-} bd
-/limit {
-dup 2 index le { exch } if pop
-dup 2 index ge { exch } if pop
-} bd
-_ColorSep5044? StartLoad {
-/_sfc
-{
-_fp null eq
-{ _fcs type /arraytype eq
-{_fcs 0 get /Separation eq
-{
-_fcs 1 get /All eq
-{
-_fc aload pop 1 exch sub
-/setseparationgray where pop begin setseparationgray end
-}
-{
-1 _fcs 3 get exec _fcs 1 get
-/findcmykcustomcolor where pop begin findcmykcustomcolor end
-_fc aload pop
-/setcustomcolor where pop begin setcustomcolor end
-}
-ifelse
-}
-{ _fc L1setcolor }
-ifelse
-}
-{ _fc L1setcolor }
-ifelse
-}
-{ _fc L1setcolor }
-ifelse
-} bind dd
-/_ssc
-{
-_sp null eq
-{ _scs type /arraytype eq
-{_scs 0 get /Separation eq
-{
-_scs 1 get /All eq
-{
-_sc aload pop 1 exch sub
-/setseparationgray where pop begin setseparationgray end
-}
-{
-1 _scs 3 get exec _scs 1 get
-/findcmykcustomcolor where pop begin findcmykcustomcolor end
-_sc aload pop
-/setcustomcolor where pop begin setcustomcolor end
-}
-ifelse
-}
-{ _sc L1setcolor }
-ifelse
-}
-{ _sc L1setcolor }
-ifelse
-}
-{ _sc L1setcolor }
-ifelse
-} bind dd
-} EndLoad
-%%EndFile
-%%BeginFile: pdftext.prc
-%%Copyright: Copyright 1987-1997 Adobe Systems Incorporated. All Rights Reserved.
-PDF /PDFText 65 dict dup begin put
-/initialize { PDFText begin } bd
-/terminate { end } bd
-/pdf_has_composefont? systemdict /composefont known def
-/CopyFont {
-{
-1 index /FID ne 2 index /UniqueID ne and
-{ def } { pop pop } ifelse
-} forall
-} bd
-/Type0CopyFont
-{
-exch
-dup length dict
-begin
-CopyFont
-[
-exch
-FDepVector
-{
-dup /FontType get 0 eq
-{
-1 index Type0CopyFont
-/_pdfType0 exch definefont
-}
-{
-/_pdfBaseFont exch
-2 index exec
-}
-ifelse
-exch
-}
-forall
-pop
-]
-/FDepVector exch def
-currentdict
-end
-} bd
-/cHexEncoding
-[/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
-/c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
-/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
-/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
-/c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
-/c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
-/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
-/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
-/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
-/cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
-/cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
-/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
-/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
-/cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF] def
-/modEnc {
-/_enc xdd
-/_icode 0 dd
-counttomark 1 sub -1 0
-{
-index
-dup type /nametype eq
-{
-_enc _icode 3 -1 roll put
-_icode 1 add
-}
-if
-/_icode xdd
-} for
-cleartomark
-_enc
-} bd
-/trEnc {
-/_enc xdd
-255 -1 0 {
-exch dup -1 eq
-{ pop /.notdef }
-{ Encoding exch get }
-ifelse
-_enc 3 1 roll put
-} for
-pop
-_enc
-} bd
-/TE {
-/_i xdd
-StandardEncoding 256 array copy modEnc
-_pdfEncodings exch _i exch put
-} bd
-/TZ
-{
-/_usePDFEncoding xdd
-findfont
-dup length 2 add dict
-begin
-{
-1 index /FID ne { def } { pop pop } ifelse
-} forall
-/FontName exch def
-_usePDFEncoding 0 ge
-{
-/Encoding _pdfEncodings _usePDFEncoding get def
-pop
-}
-{
-_usePDFEncoding -1 eq
-{
-counttomark 0 eq
-{ pop }
-{
-Encoding 256 array copy
-modEnc /Encoding exch def
-}
-ifelse
-}
-{
-256 array
-trEnc /Encoding exch def
-}
-ifelse
-}
-ifelse
-FontName currentdict
-end
-definefont pop
-}
-bd
-/Level2?
-systemdict /languagelevel known
-{systemdict /languagelevel get 2 ge}
-{false}
-ifelse
-def
-Level2?
-{
-/_pdfFontStatus
-{
-currentglobal exch
-/Font resourcestatus
-{pop pop true}
-{false}
-ifelse
-exch setglobal
-} bd
-}
-{
-/_pdfFontStatusString 50 string def
-_pdfFontStatusString 0 (fonts/) putinterval
-/_pdfFontStatus
-{
-_pdfFontStatusString 6 42 getinterval
-cvs length 6 add
-_pdfFontStatusString exch 0 exch getinterval
-status
-{ pop pop pop pop true}
-{ false }
-ifelse
-} bd
-}
-ifelse
-Level2?
-{
-/_pdfCIDFontStatus
-{
-/CIDFont /Category resourcestatus
-{
-pop pop
-/CIDFont resourcestatus
-{pop pop true}
-{false}
-ifelse
-}
-{ pop false }
-ifelse
-} bd
-}
-if
-/_pdfString100 100 string def
-/_pdfComposeFontName
-{
-dup length 1 eq
-{
-0 get
-1 index
-type /nametype eq
-{
-_pdfString100 cvs
-length dup dup _pdfString100 exch (-) putinterval
-_pdfString100 exch 1 add dup _pdfString100 length exch sub getinterval
-2 index exch cvs length
-add 1 add _pdfString100 exch 0 exch getinterval
-exch pop
-true
-}
-{
-pop pop
-false
-}
-ifelse
-}
-{
-false
-}
-ifelse
-} bd
-pdf_has_composefont?
-{
-/_pdfComposeFont
-{
-1 index /CMap resourcestatus
-{pop pop true}
-{false}
-ifelse
-1 index true exch
-{
-_pdfCIDFontStatus not
-{pop false exit}
-if
-}
-forall
-and
-{ 3 -1 roll pop composefont true}
-{
-4 -1 roll pop
-_pdfComposeFontName
-{
-dup _pdfFontStatus
-{ findfont definefont true }
-{
-pop
-dup _pdfFontStatus
-{ findfont true }
-{ pop false }
-ifelse
-}
-ifelse
-}
-{
-dup _pdfFontStatus
-{ findfont true }
-{ pop false }
-ifelse
-}
-ifelse
-}
-ifelse
-} bd
-}
-{
-/_pdfComposeFont
-{
-4 -1 roll pop
-_pdfComposeFontName not
-{
-dup
-}
-if
-2 copy _pdfFontStatus
-{pop findfont exch pop true}
-{
-eq
-{pop false}
-{
-dup _pdfFontStatus
-{findfont true}
-{pop false}
-ifelse
-}
-ifelse
-}
-ifelse
-} bd
-}
-ifelse
-/_pdfFaceByStyleDict 4 dict dup begin
-Level2?
-{
-/Serif
-/HeiseiMin-W3-83pv-RKSJ-H _pdfFontStatus
-{/HeiseiMin-W3}
-{/Ryumin-Light}
-ifelse
-def
-/SansSerif
-/HeiseiKakuGo-W5-83pv-RKSJ-H _pdfFontStatus
-{/HeiseiKakuGo-W5}
-{/GothicBBB-Medium}
-ifelse
-def
-/HeiseiMaruGo-W4-83pv-RKSJ-H _pdfFontStatus
-{/HeiseiMaruGo-W4}
-{
-/Jun101-Light-RKSJ-H _pdfFontStatus
-{ /Jun101-Light }
-{ SansSerif }
-ifelse
-}
-ifelse
-/RoundSansSerif exch def
-/Default Serif def
-}
-{
-/Serif /Ryumin-Light def
-/SansSerif /GothicBBB-Medium def
-{
-(fonts/Jun101-Light-83pv-RKSJ-H) status
-}stopped
-{pop}{
-{ pop pop pop pop /Jun101-Light }
-{ SansSerif }
-ifelse
-/RoundSansSerif exch def
-}ifelse
-/Default Serif def
-}
-ifelse
-end
-def
-/_pdf_Adobe-Japan1-2 (Adobe-Japan1-2) def
-/_pdfConcatNames
-{
-exch
-_pdfString100 cvs
-length dup dup _pdfString100 exch (-) putinterval
-_pdfString100 exch 1 add dup _pdfString100 length exch sub getinterval
-3 -1 roll exch cvs length
-add 1 add _pdfString100 exch 0 exch getinterval
-} bind def
-/_pdfSubSetFontByStyleDict 4 dict dup begin
-_pdfFaceByStyleDict
-{
-_pdf_Adobe-Japan1-2 _pdfConcatNames
-dup _pdfFontStatus
-{ def }
-{
-{
-pop
-dup /SansSerif eq
-{
-/HeiseiKakuGo-W5-Adobe-Japan1-2 dup _pdfFontStatus
-{ def exit }
-{ pop }
-ifelse
-}
-if
-dup /Serif eq
-{
-/HeiseiMin-W3-Adobe-Japan1-2 dup _pdfFontStatus
-{ def exit }
-{ pop }
-ifelse
-}
-if
-pop exit
-}
-loop
-}
-ifelse
-}
-forall
-end def
-/TZzero
-{
-/_fyAdj xdd
-/_wmode xdd
-/_styleArr xdd
-4 copy
-_pdfComposeFont
-{exch pop exch pop exch pop}
-{
-[
-0 1 _styleArr length 1 sub
-{
-_styleArr exch get
-_pdfFaceByStyleDict exch 2 copy known not
-{ pop /Default }
-if
-get
-}
-for
-]
-exch pop
-3 index 3 index 4 2 roll
-_pdfComposeFont
-{exch pop}
-{
-findfont
-}
-ifelse
-}
-ifelse
-dup /FontType get 3 eq _wmode 1 eq and
-{
-_pdfVerticalRomanT3Font dup length dict copy
-begin
-/_basefont exch def
-/Encoding _basefont /Encoding get def
-}
-{
-dup length 2 add dict
-begin
-{1 index /FID ne {def}{pop pop} ifelse }
-forall
-} ifelse
-/WMode _wmode def
-/BaseLineAdj _fyAdj def
-FontType 0 ne
-{
-/Encoding Encoding dup length array copy dup 16#5c /yen put def
-/_fauxfont true def
-} if
-currentdict
-end
-definefont pop
-}
-bd
-/swj {
-dup 4 1 roll
-dup length exch stringwidth
-exch 5 -1 roll 3 index mul add
-4 1 roll 3 1 roll mul add
-6 2 roll /_cnt 0 dd
-{1 index eq {/_cnt _cnt 1 add dd} if} forall pop
-exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop
-} bd
-/jss {
-4 1 roll
-{
-2 npop
-(0) exch 2 copy 0 exch put
-gsave
-32 eq
-{
-exch 6 index 6 index 6 index 5 -1 roll widthshow
-currentpoint
-}
-{
-false charpath currentpoint
-4 index setmatrix stroke
-}
-ifelse
-grestore
-moveto
-2 copy rmoveto
-} exch cshow
-6 npop
-} def
-/jsfTzero {
-{
-2 npop
-(0) exch 2 copy 0 exch put
-exch show
-32 eq
-{
-4 index 4 index rmoveto
-}
-if
-2 copy rmoveto
-} exch cshow
-5 npop
-} def
-/jsp
-{
-{
-2 npop
-(0) exch 2 copy 0 exch put
-32 eq
-{ exch 5 index 5 index 5 index 5 -1 roll widthshow }
-{ false charpath }
-ifelse
-2 copy rmoveto
-} exch cshow
-5 npop
-} bd
-/trj { _cx 0 fWModeProc 32 _ax 0 fWModeProc 6 5 roll } bd
-/pjsf { trj sfc fawidthshowProc } bd
-/pjss { trj _ctm ssc jss } bd
-/pjsc { trj jsp } bd
-/_Tjdef [
-/pjsf load
-/pjss load
-{
-dup
-currentpoint 3 2 roll
-pjsf
-newpath moveto
-pjss
-} bind
-{
-trj swj rmoveto
-} bind
-{
-dup currentpoint 4 2 roll gsave
-pjsf
-grestore 3 1 roll moveto
-pjsc
-} bind
-{
-dup currentpoint 4 2 roll
-currentpoint gsave newpath moveto
-pjss
-grestore 3 1 roll moveto
-pjsc
-} bind
-{
-dup currentpoint 4 2 roll gsave
-dup currentpoint 3 2 roll
-pjsf
-newpath moveto
-pjss
-grestore 3 1 roll moveto
-pjsc
-} bind
-/pjsc load
-] def
-/BT
-{
-/_inT true dd
-_ctm currentmatrix pop matrix _tm copy pop
-0 _rise _baselineadj add translate _hs 1 scale
-0 0 moveto
-} bd
-/ET
-{
-/_inT false dd
-_tr 3 gt {clip} if
-_ctm setmatrix newpath
-} bd
-/Tr {
-_inT { _tr 3 le {currentpoint newpath moveto} if } if
-dup /_tr xdd
-_Tjdef exch get /_Tj xdd
-} bd
-/Tj {
-userdict /$$copystring 2 index put
-_Tj
-} bd
-/iTm { _ctm setmatrix _tm concat 0 _rise _baselineadj add translate _hs 1 scale } bd
-/Tm { _tm astore pop iTm 0 0 moveto } bd
-/Td { _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto } bd
-/TD { dup /_ld xdd Td } bd
-/_nullProc {} bd
-/Tf {
-dup 1000 div /_fScl xdd
-exch findfont dup
-/_nullProc exch
-/WMode known
-{
-1 index /WMode get 1 eq
-{pop /exch}
-if
-}
-if
-load /fWModeProc xdd
-dup
-/FontType get 0 eq dup _cx 0 ne and
-{ /jsfTzero }
-{ /awidthshow }
-ifelse
-load /fawidthshowProc xdd
-/_fTzero xdd
-dup /BaseLineAdj known
-{ dup /BaseLineAdj get _fScl mul }
-{ 0 }
-ifelse
-/_baselineadj xdd
-currentpoint iTm moveto
-exch scalefont setfont
-} bd
-/TL { neg /_ld xdd } bd
-/Tw {
-/_cx xdd
-_cx 0 ne _fTzero and
-{ /jsfTzero }
-{ /awidthshow }
-ifelse
-load /fawidthshowProc xdd
-} bd
-/Tc { /_ax xdd } bd
-/Ts { /_rise xdd currentpoint iTm moveto } bd
-/Tz { 100 div /_hs xdd iTm } bd
-/Tk { exch pop _fScl mul neg 0 fWModeProc rmoveto } bd
-/T* { 0 _ld Td } bd
-/' { T* Tj } bd
-/" { exch Tc exch Tw ' } bd
-/TJ {
-{
-dup type /stringtype eq
-{ Tj }
-{ 0 exch Tk }
-ifelse
-} forall
-} bd
-/T- { _hy Tj } bd
-/d0/setcharwidth ld
-/d1 { setcachedevice /sfc{}dd /ssc{}dd } bd
-/nND {{/.notdef} repeat} bd
-/T3Defs {
-/BuildChar
-{
-1 index /Encoding get exch get
-1 index /BuildGlyph get exec
-}
-def
-/BuildGlyph {
-exch begin
-GlyphProcs exch get exec
-end
-} def
-} bd
-/_pdfBoldRomanWidthProc
-{
-stringwidth 1 index 0 ne { exch .03 add exch }if setcharwidth
-} bd
-/_pdfType0WidthProc
-{
-dup stringwidth 0 0 moveto
-2 index true charpath pathbbox
-0 -1
-7 index 2 div .88
-setcachedevice2
-pop
-} bd
-/_pdfBoldBaseFont
-10 dict begin
-/FontType 3 def
-/FontMatrix[1 0 0 1 0 0]def
-/FontBBox[0 0 1 1]def
-/Encoding cHexEncoding def
-/_setwidthProc /_pdfBoldRomanWidthProc load def
-/_bcstr1 1 string def
-/BuildChar
-{
-exch begin
-_basefont setfont
-_bcstr1 dup 0 4 -1 roll put
-dup
-_setwidthProc
-0 0 moveto
-dup show
-_basefonto setfont
-0 0 moveto
-show
-end
-}bd
-currentdict
-end
-def
-/_pdfVerticalRomanT3Font
-10 dict begin
-/FontType 3 def
-/FontMatrix[1 0 0 1 0 0]def
-/FontBBox[0 0 1 1]def
-/_bcstr1 1 string def
-/BuildChar
-{
-exch begin
-_basefont setfont
-_bcstr1 dup 0 4 -1 roll put
-dup
-_pdfType0WidthProc
-0 0 moveto
-show
-end
-}bd
-currentdict
-end
-def
-/MakeBoldFont
-{
-dup dup length 2 add dict
-begin
-CopyFont
-/PaintType 2 def
-/StrokeWidth .03 0 FontMatrix idtransform pop def
-/dummybold currentdict
-end
-definefont
-_pdfBoldBaseFont 8 dict copy begin
-/_basefont exch def
-/_basefonto exch def
-currentdict
-end
-definefont
-} bd
-/MakeBold {
-findfont dup
-/FontType get 0 eq
-{
-_pdfBoldBaseFont /_setwidthProc /_pdfType0WidthProc load put
-{MakeBoldFont} Type0CopyFont definefont
-}
-{
-dup /_fauxfont known not
-{
-_pdfBoldBaseFont /_setwidthProc /_pdfBoldRomanWidthProc load put
-MakeBoldFont
-}
-{ definefont }
-ifelse
-}
-ifelse
-pop
-}bd
-/MakeItalic {
-findfont
-dup /WMode 2 copy known
-{
-get 1 eq
-{ _italMtx_WMode1 }
-{ _italMtx }
-ifelse
-}
-{ pop pop _italMtx }
-ifelse
-makefont
-definefont pop
-}bd
-/MakeBoldItalic {
-/dummybold exch
-MakeBold
-/dummybold
-MakeItalic
-}bd
-currentdict readonly pop end
-%%EndFile
-PDFText begin
-[39/quotesingle 96/grave 128/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/degree/cent/sterling/section/bullet/paragraph/germandbls
-/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
-/.notdef/plusminus/.notdef/.notdef/yen/mu/.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/divide
-/.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
-0 TE
-[1/dotlessi/caron 39/quotesingle 96/grave
-127/bullet/bullet/bullet/quotesinglbase/florin/quotedblbase/ellipsis
-/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE
-/bullet/bullet/bullet/bullet/quoteleft/quoteright/quotedblleft
-/quotedblright/bullet/endash/emdash/tilde/trademark/scaron
-/guilsinglright/oe/bullet/bullet/Ydieresis/space/exclamdown/cent/sterling
-/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine
-/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus
-/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla
-/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters
-/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
-/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
-/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash
-/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave
-/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute
-/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde
-/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute
-/ucircumflex/udieresis/yacute/thorn/ydieresis
-1 TE
-end
-%%BeginFile: pdfimage.prc
-%%Copyright: Copyright 1987-1993 Adobe Systems Incorporated. All Rights Reserved.
-PDF /PDFImage 38 dict put
-PDF /PDFIVars 20 dict put
-PDF /PDFImage get begin
-/initialize { PDFImage begin } bd
-/terminate { end } bd
-/nulldict 0 dict def
-/gv { PDFIVars exch get } bd
-/pv { PDFIVars 3 1 roll put } bd
-/BI { save /savelevel exch pv mark } bd
-/EI { /savelevel gv restore } bd
-end
-%%EndFile
-%%BeginFile: pdfimg2.prc
-%%Copyright: Copyright 1987-1993 Adobe Systems Incorporated. All Rights Reserved.
-PDF /PDFImage get begin
-Level2? StartLoad {
-/ID {
-5 counttomark 2 idiv
-dup 3 1 roll add
-dict begin
-{ def } repeat
-cleartomark
-currentdict
-end
-begin
-/ImageType 1 def
-/ImageMatrix [ Width 0 0 Height neg 0 Height ] def
-/ImageMask here { not } { true } ifelse
-{ /ImageMask false def } if
-ImageMask not { ColorSpace setcolorspace } if
-/Intent here { ri } if
-/Decode here { pop } {
-/Decode [
-ImageMask {
-0 1
-} {
-currentcolorspace 0 get /Indexed eq {
-0 2 BitsPerComponent exp 1 sub
-} {
-mark currentcolor counttomark
-dup 2 add 1 roll cleartomark
-{ 0 1 } repeat
-} ifelse
-} ifelse
-] def
-} ifelse
-[
-/DataSource here { pop } {
-currentfile
-/Filter here {
-dup type /arraytype eq { length } { pop 1 } ifelse
-1 sub 0 1 3 -1 roll {
-/DecodeParms here {
-dup type /arraytype eq {
-1 index get
-} if
-dup null eq { pop } { exch } ifelse
-} if
-Filter dup type /arraytype eq
-{ exch get } { exch pop } ifelse
-filter
-dup
-} for
-} if
-/DataSource exch def
-} ifelse
-currentdict
-/ImageMask here not { false } if
-{ sfc imagemask } { image } ifelse
-counttomark
-{ dup status
-{ dup flushfile closefile }
-{ pop }
-ifelse
-}
-repeat
-pop
-end
-} bd
-currentdict readonly pop
-} EndLoad
-end
-%%EndFile
-currentdict readonly pop
-end end
-/currentpacking where {pop setpacking}if
-PDFVars/InitAll{[PDF PDFText PDFImage]{/initialize get exec}forall initgs 0 Tr}put
-PDFVars/TermAll{[PDFImage PDFText PDF]{/terminate get exec}forall}put
-PDFVars begin PDF begin PDFVars/InitAll get exec
-userdict begin
-%%BeginResource: font TimesNewRoman,Bold
-%%EndResource
-end
-% Begin encoding-delta
-[/N8/Times-Bold 1 TZ
-% End encoding-delta
-userdict begin
-%%BeginResource: font TimesNewRoman
-%%EndResource
-end
-% Begin encoding-delta
-[/N6/Times-Roman 1 TZ
-% End encoding-delta
-userdict begin
-%%BeginResource: font TimesNewRoman,Italic
-%%EndResource
-end
-% Begin encoding-delta
-[/N10/Times-Italic 1 TZ
-% End encoding-delta
-userdict begin
-%%BeginResource: font CourierNew
-%%EndResource
-end
-% Begin encoding-delta
-[/N17/Courier 1 TZ
-% End encoding-delta
-PDFVars/TermAll get exec end end
-
-%%EndSetup
-%%Page: 1 1
-%%BeginPageSetup
-userdict /pgsave save put
-PDFVars begin PDF begin PDFVars/InitAll get exec
-%%EndPageSetup
-0 0 612 792 RC
-BT
-303.6 36 TD
-0 0 0 rg
-/N6 9.84 Tf
-0.0019 Tc
-0 Tw
-(1)Tj
-ET
-1 1 1 rg
-180 657.12 252 62.88 re
-f
-BT
-180 712.08 TD
-0 0 0 rg
-/N6 12 Tf
-0.0933 Tc
--0.1293 Tw
-(Stanford University)Tj
-0 -14.16 TD
-0.0768 Tc
--0.1128 Tw
-(Computer Science Department)Tj
-0 -27.84 TD
-0.0447 Tc
-0.0393 Tw
-(CS140: Operating Systems)Tj
-ET
-1 1 1 rg
-432 684 108 36 re
-f
-BT
-448.08 712.08 TD
-0 0 0 rg
-0.03 Tc
-0.174 Tw
-(A. Arpaci-Dusseau)Tj
-25.68 -14.16 TD
-0.024 Tc
-0.18 Tw
-(Autumn 1998)Tj
--401.76 -77.28 TD
-/N8 13.92 Tf
-0.076 Tc
-0 Tw
-(Purpose)Tj
-0 -24.72 TD
-/N6 12 Tf
-0.0743 Tc
-1.0447 Tw
-(In this handout, we give a brief overview of the behavior of the Solaris\
- 2.6 Time-Sharing \(TS\))Tj
-0 -13.92 TD
-0.096 Tc
-0.3 Tw
-(scheduler, an example of a )Tj
-132.96 0 TD
-/N10 12 Tf
-0.0104 Tc
-0.1496 Tw
-(Multilevel Feedback Queue )Tj
-136.8 0 TD
-/N6 12 Tf
-0.1083 Tc
-0.3357 Tw
-(scheduler. The information in this hand-)Tj
--269.76 -13.92 TD
-0.1074 Tc
-1.0849 Tw
-(out, in conjunction with that given in Lecture, should be used to answer\
- Problem 4 of the first)Tj
-0 -14.16 TD
-0.0991 Tc
--0.2251 Tw
-(assignment. The end of this document specifies in more detail which asp\
-ects of the Solaris sched-)Tj
-0 -13.92 TD
-0.1191 Tc
-0.0369 Tw
-(uler that you should implement. )Tj
-0 -29.28 TD
-/N8 13.92 Tf
-0.0723 Tc
--0.1437 Tw
-(Multilevel Feedback Queue Schedulers)Tj
-0 -24.72 TD
-/N6 12 Tf
-0.1389 Tc
-0.7251 Tw
-(The goal of a multilevel feedback queue scheduler is to fairly and effic\
-iently schedule a mix of)Tj
-0 -13.92 TD
-0.0972 Tc
-2.6544 Tw
-(processes with a variety of execution characteristics. By controlling h\
-ow a process moves)Tj
-0 -14.16 TD
-0.063 Tc
-0.7301 Tw
-(between priority levels, processes with different characteristics can be\
- scheduled as appropriate.)Tj
-0 -13.92 TD
-0.0613 Tc
-2.0627 Tw
-(Priority-based schedulers attempt to provide a compromise between severa\
-l desirable metrics)Tj
-T*
-0.0834 Tc
-0.6929 Tw
-(\(e.g., response time for interactive jobs, throughput for compute-inte\
-nsive jobs, and fair alloca-)Tj
-0 -14.16 TD
-0.0875 Tc
-0.0205 Tw
-(tions for all jobs\). )Tj
-0 -24 TD
-0.0825 Tc
-1.1158 Tw
-(The queues in the system are ranked according to priority. Processes wai\
-ting in higher priority)Tj
-0 -13.92 TD
-0.0821 Tc
-0.4899 Tw
-(queues are always scheduled over those in lower priority queues. Proces\
-ses at the same priority)Tj
-T*
-0.1077 Tc
--0.0237 Tw
-(are usually scheduled in a round-robin fashion.)Tj
-0 -24 TD
-0.072 Tc
--0.204 Tw
-(Such schedulers tend to be )Tj
-129.6 0 TD
-/N10 12 Tf
-0.0218 Tc
--0.2618 Tw
-( preemptible )Tj
-62.64 0 TD
-/N6 12 Tf
-0.0642 Tc
--0.2922 Tw
-(in order to support interactive processes. That is, a higher)Tj
--192.24 -14.16 TD
-0.0929 Tc
--0.0009 Tw
-(priority process is immediately scheduled if a lower priority process is\
- running on the CPU. )Tj
-0 -29.28 TD
-/N8 13.92 Tf
-0.1088 Tc
--0.1001 Tw
-(Scheduling in Solaris)Tj
-0 -24.72 TD
-/N6 12 Tf
-0.0748 Tc
-2.3577 Tw
-(The Solaris operating system is based on Unix System V Release 4 \(SVR4\)\
-. Scheduling in)Tj
-0 -13.92 TD
-0.0614 Tc
-0.8226 Tw
-(Solaris, as in all SVR4-based schedulers, is performed at two levels: cl\
-ass-independent routines)Tj
-T*
-0.068 Tc
-0.836 Tw
-(and class-dependent routines. Class-independent routines are those that\
- are responsible for dis-)Tj
-0 -14.16 TD
-0.0641 Tc
-1.6279 Tw
-(patching and preempting processes \(the low-level mechanisms\). Class-d\
-ependent routines are)Tj
-0 -13.92 TD
-0.0854 Tc
-0.0198 Tw
-(those that are responsible for setting the priority of each of its proce\
-sses \(the high-level policy\). )Tj
-0 -24 TD
-0.0772 Tc
-0.2668 Tw
-(By default, Solaris supports three scheduling classes: time-sharing \(TS\
-\), real-time \(RT\), and sys-)Tj
-0 -13.92 TD
-0.0817 Tc
-0.3623 Tw
-(tem \(SYS\). Users with root privileges can easily implement and add ne\
-w scheduling classes by)Tj
-0 -14.16 TD
-0.0944 Tc
-0.7656 Tw
-(adhering to a predefined interface. Each scheduling class gives each of\
- its processes a priority,)Tj
-0 -13.92 TD
-0.1174 Tc
--0.0334 Tw
-(the range of which is shown below.)Tj
-0 562.08 TD
-0.072 Tc
--0.108 Tw
-(Handout #9)Tj
-ET
-PDFVars/TermAll get exec end end
-userdict /pgsave get restore
-showpage
-%%PageTrailer
-%%EndPage
-%%Page: 2 2
-%%BeginPageSetup
-userdict /pgsave save put
-PDFVars begin PDF begin PDFVars/InitAll get exec
-%%EndPageSetup
-0 0 612 792 RC
-BT
-303.6 36 TD
-0 0 0 rg
-/N6 9.84 Tf
-0.0019 Tc
-0 Tw
-(2)Tj
--231.6 553.92 TD
-/N6 12 Tf
-0.0772 Tc
-1.0334 Tw
-(As long as a user has the correct privileges, he or she can submit jobs \
-to any scheduling class.)Tj
-0 -13.92 TD
-0.0647 Tc
-0.2993 Tw
-(\(See the man pages for )Tj
-117.6 0 TD
-/N8 12 Tf
-0.03 Tc
-0 Tw
-(priocntl)Tj
-40.56 0 TD
-/N6 12 Tf
-0.1242 Tc
-0.2325 Tw
-( on any machine running Solaris for information on how to sub-)Tj
--158.16 -13.92 TD
-0.1112 Tc
-0.7168 Tw
-(mit jobs to different scheduling classes; however, since you probably do\
-n)Tj
--2.892 Tc
-0 Tw
-(\222)Tj
-0.0493 Tc
-0.8747 Tw
-(t have root privileges)Tj
-0 -14.16 TD
-0.18 Tc
-1.464 Tw
-(on your machine, you won)Tj
--2.652 Tc
-0 Tw
-(\222)Tj
-0.1005 Tc
-1.5435 Tw
-(t be able to do much.\) By default, jobs are executed in the same)Tj
-0 -13.92 TD
-0.0876 Tc
--0.0036 Tw
-(scheduling class as the parent process that forked the job. Since your \
-shell is running in the time-)Tj
-T*
-0.1086 Tc
--0.0246 Tw
-(sharing class, all of your jobs run by default in the time-sharing class\
-.)Tj
-0 -24 TD
-0.0816 Tc
-1.2824 Tw
-(To see the scheduling class of each process in the system, run )Tj
--1.692 Tc
-0 Tw
-(\223)Tj
-318.72 0 TD
-/N8 12 Tf
--0.0267 Tc
-1.2507 Tw
-(ps -edaflc)Tj
-50.16 0 TD
-/N6 12 Tf
--1.452 Tc
-2.856 Tw
-(\224 )Tj
--0.012 Tc
-0 Tw
-(\()Tj
-13.68 0 TD
-/N8 12 Tf
--0.09 Tc
-0.114 Tw
-(-c )Tj
-13.44 0 TD
-/N6 12 Tf
-0.1292 Tc
-1.2748 Tw
-(is the flag that)Tj
--396 -14.16 TD
-0.1028 Tc
-0.6452 Tw
-(shows the scheduling class\). The fourth column shows the scheduling cl\
-ass of the running pro-)Tj
-0 -13.92 TD
-0.091 Tc
-0.461 Tw
-(cess. Most jobs will be running in the TS class, with a few \(owned by \
-root\) running in the SYS)Tj
-T*
-0.062 Tc
-0 Tw
-(class.)Tj
-0 -14.16 TD
-/N17 12 Tf
--0.0133 Tc
-0.0133 Tw
-(elaine1:~> ps -edafc)Tj
-0 -13.92 TD
--0.0077 Tc
-0.0077 Tw
-( UID PID PPID CLS PRI STIME TTY TIME CMD)Tj
-T*
-0 Tc
--0.0083 Tw
-( root 0 0 SYS 96 Aug 01 ? 0:00 sched)Tj
-0 -14.16 TD
--0.0077 Tw
-( root 1 0 TS 58 Aug 01 ? 1:06 /etc/init -)Tj
-0 -13.92 TD
--0.0083 Tw
-( root 2 0 SYS 98 Aug 01 ? 0:02 pageout)Tj
-T*
--0.0086 Tw
-( root 3 0 SYS 60 Aug 01 ? 15:22 fsflush)Tj
-0 -14.16 TD
--0.008 Tc
-0.008 Tw
-( root 245 239 TS 59 Aug 01 ? 0:00 ttymon)Tj
-0 -13.92 TD
-0 Tc
--0.0083 Tw
-( root 181 1 TS 48 Aug 01 ? 0:00 sendmail -q15m)Tj
-T*
--0.008 Tw
-( root 239 1 TS 59 Aug 01 ? 0:00 sac -t 300)Tj
-0 -14.16 TD
--0.0083 Tw
-( root 96 1 TS 58 Aug 01 ? 0:00 rpcbind)Tj
-0 -13.92 TD
--0.0092 Tw
-( root 125 1 TS 59 Aug 01 ? 0:32 syslogd)Tj
-0 -37.92 TD
-/N6 12 Tf
-0.0821 Tc
-0.1519 Tw
-(In this document, we only discuss the Solaris time-sharing \(TS\) class.\
- Note the priorities of each)Tj
-0 -14.16 TD
-0.1155 Tc
--0.0315 Tw
-(of the processes, as listed in the fifth column.)Tj
-0 -29.28 TD
-/N8 13.92 Tf
-0.1063 Tc
--0.2177 Tw
-(Class Independent Functionality)Tj
-0 -24.72 TD
-/N6 12 Tf
-0.0693 Tc
-0.4855 Tw
-(The class independent routines arbitrate across the scheduling classes. \
- This involves three basic)Tj
-0 -13.92 TD
-0.0438 Tc
-0 Tw
-(responsibilities.)Tj
-0 -24 TD
--2.652 Tc
-(\225)Tj
-18 0 TD
-0.0745 Tc
-0.4015 Tw
-(The process with the highest priority must be dispatched, and the state \
-of the preempted pro-)Tj
-0 -13.92 TD
-0.0444 Tc
-0.0796 Tw
-(cess saved. )Tj
--18 -24 TD
--2.652 Tc
-0 Tw
-(\225)Tj
-18 0 TD
-0.1096 Tc
--0.1256 Tw
-(The class independent functions must notifying the class-dependent routi\
-nes when the state of)Tj
-0 -14.16 TD
-0.0722 Tc
-0.1318 Tw
-(its processes changes \(for example, at creation and termination, when a\
- process changes from)Tj
-0 -13.92 TD
-0.057 Tc
-0.067 Tw
-(blocked to runnable, or runnable to blocked, and when a 10ms timer expir\
-es\). )Tj
-111.6 613.92 TD
-0.084 Tc
-0.12 Tw
-(Scheduling Class)Tj
-136.32 0 TD
-0.0348 Tc
-0 Tw
-(Priorities)Tj
--143.04 -24 TD
-0.084 Tc
-(Real-Time)Tj
-108 0 TD
--0.1251 Tc
-(100-159)Tj
--108 -21.84 TD
-0.134 Tc
-(System)Tj
-108 0 TD
--0.1176 Tc
-(60-99)Tj
--108 -22.08 TD
-0.077 Tc
-(Time-Sharing)Tj
-108 0 TD
--0.111 Tc
-(0-59)Tj
--152.64 -22.08 TD
-/N8 12 Tf
-0.012 Tc
--0.108 Tw
-(Table 1: )Tj
-45.36 0 TD
-0.0258 Tc
--0.139 Tw
-(Range of Priorities for Scheduling Classes in Solaris)Tj
-ET
-188.64 628.32 0.48 91.44 re
-f
-296.64 627.84 0.48 92.4 re
-f
-422.88 628.32 0.48 91.44 re
-f
-188.64 720.24 m
-188.64 719.76 l
-423.36 719.76 l
-423.36 720.24 l
-h
-f
-189.36 695.52 m
-189.36 695.04 l
-422.64 695.04 l
-422.64 695.52 l
-h
-f
-189.36 693.12 m
-189.36 692.64 l
-422.64 692.64 l
-422.64 693.12 l
-h
-f
-188.64 672.24 m
-188.64 671.76 l
-423.36 671.76 l
-423.36 672.24 l
-h
-f
-188.64 650.16 m
-188.64 649.68 l
-423.36 649.68 l
-423.36 650.16 l
-h
-f
-188.64 628.32 m
-188.64 627.84 l
-423.36 627.84 l
-423.36 628.32 l
-h
-f
-PDFVars/TermAll get exec end end
-userdict /pgsave get restore
-showpage
-%%PageTrailer
-%%EndPage
-%%Page: 3 3
-%%BeginPageSetup
-userdict /pgsave save put
-PDFVars begin PDF begin PDFVars/InitAll get exec
-%%EndPageSetup
-0 0 612 792 RC
-BT
-303.6 36 TD
-0 0 0 rg
-/N6 9.84 Tf
-0.0019 Tc
-0 Tw
-(3)Tj
--231.6 676.08 TD
-/N6 12 Tf
--2.652 Tc
-(\225)Tj
-18 0 TD
-0.0755 Tc
-0.147 Tw
-(Processes must be moved between priority queues in the class independent\
- data structures, as)Tj
-0 -14.16 TD
-0.0968 Tc
--0.0048 Tw
-(directed by its scheduling class, and must be moved between blocked and \
-ready queues. )Tj
--18 -29.28 TD
-/N8 13.92 Tf
-0.0866 Tc
--0.078 Tw
-(Time-Sharing Scheduling Class)Tj
-0 -24.72 TD
-/N6 12 Tf
-0.0848 Tc
-1.8361 Tw
-(The Time-Sharing scheduler in Solaris is an example of a multi-level fee\
-dback queue sched-)Tj
-0 -13.92 TD
-0.0841 Tc
-0.4104 Tw
-(uler. A job begins at priority 29. Compute-bound jobs then filter do\
-wn to the lower priorities,)Tj
-T*
-0.0777 Tc
-0.5377 Tw
-(where they are scheduled less frequently \(but for longer time-slices\) \
-and interactive jobs propa-)Tj
-0 -14.16 TD
-0.0919 Tc
-0.7521 Tw
-(gate to the higher priorities \(where they are scheduled whenever they h\
-ave work to perform, on)Tj
-0 -13.92 TD
-0.0831 Tc
--0.0441 Tw
-(the assumption that they will soon relinquish the processor again\). In\
- the TS scheduler, the prior-)Tj
-T*
-0.1006 Tc
-0.2297 Tw
-(ity of a process is lowered after it consumes its allocated time-slice. \
- Its priority is raised if it has)Tj
-0 -14.16 TD
-0.091 Tc
-0.033 Tw
-(not consumed its time-slice before a )Tj
-176.64 0 TD
-/N10 12 Tf
-0.0133 Tc
--0.0133 Tw
-(starvation interval )Tj
-94.8 0 TD
-/N6 12 Tf
-0.0315 Tc
-0 Tw
-(expires.)Tj
--271.44 -25.92 TD
-/N8 12 Tf
-0.0175 Tc
--0.2335 Tw
-(Dispatch Table)Tj
-0 -24 TD
-/N6 12 Tf
-0.084 Tc
-0.0343 Tw
-(The durations of the time-slices, the changes in priorities, and the sta\
-rvation interval are specified)Tj
-0 -13.92 TD
-0.0961 Tc
-0.1593 Tw
-(in a user-tunable dispatch table. The system administrator \(or anyone \
-with root privileges again\))Tj
-0 -14.16 TD
-0.089 Tc
-0.4579 Tw
-(can change the values in this table, thus configuring how the time-shari\
-ng scheduler manages its)Tj
-0 -13.92 TD
-0.12 Tc
--0.3693 Tw
-(jobs. While this has the noble intention of allowing different systems \
- to tune the scheduler to bet-)Tj
-T*
-0.1129 Tc
-1.5151 Tw
-(ter handle their workloads, in reality no one really knows how to config\
-ure these tables well.)Tj
-0 -14.16 TD
-0.0878 Tc
-0.1162 Tw
-(Therefore, we will focus on the default dispatch table. )Tj
-0 -24 TD
-0.116 Tc
--0.032 Tw
-(To see how this table is configured in your system, run)Tj
-185.52 -24 TD
-/N8 12 Tf
-0.044 Tc
--0.18 Tw
-(dispadmin -c TS -g)Tj
--185.52 -24 TD
-/N6 12 Tf
-0.1011 Tc
-1.2888 Tw
-(You should see something like that in Table 2. \(Looking at the man pag\
-es on dispadmin and)Tj
-0 -13.92 TD
-0.0963 Tc
-0.9689 Tw
-(ts_dptbl may also be helpful\). You will see one row for every priority\
- in the scheduling class:)Tj
-T*
-0.0871 Tc
-0.0369 Tw
-(from 0 to 59. For each priority, there are five columns: )Tj
-0 -24 TD
--2.652 Tc
-0 Tw
-(\225)Tj
-18 0 TD
-/N8 12 Tf
-0.0905 Tc
-(ts_quantum:)Tj
-65.28 0 TD
-/N6 12 Tf
-0.1021 Tc
-1.6619 Tw
-( Length of the time-slice \(in the actual table, this value is specified\
- in 10ms)Tj
--65.28 -14.16 TD
-0.111 Tc
--0.051 Tw
-(clock ticks; in the output from running dispadmin, the value is specifie\
-d in units of 1ms\).)Tj
--18 -24 TD
--2.652 Tc
-0 Tw
-(\225)Tj
-18 0 TD
-/N8 12 Tf
-0.0413 Tc
-(ts_tqexp:)Tj
-47.28 0 TD
-/N6 12 Tf
-0.1113 Tc
-0.4969 Tw
-( Priority level of the new queue on which to place a process if it exc\
-eeds its time)Tj
--47.28 -13.92 TD
-0.1106 Tc
--0.0196 Tw
-(quantum. Normally this field links to a lower priority time-sharing\
- level. )Tj
--18 -24 TD
--2.652 Tc
-0 Tw
-(\225)Tj
-18 0 TD
-/N8 12 Tf
-0.006 Tc
-(ts_slpret:)Tj
-48 0 TD
-/N6 12 Tf
-0.0994 Tc
-1.3732 Tw
-( the priority to change to \(generally a higher priority\) when the job \
-returns from)Tj
--48 -13.92 TD
-0.0863 Tc
--0.0115 Tw
-(sleeping \(i.e., from the blocked queue\) if ts_dispwait exceeds ts_max\
-wait \(see next entry\).)Tj
--18 -24 TD
--2.652 Tc
-0 Tw
-(\225)Tj
-18 0 TD
-/N8 12 Tf
-0.048 Tc
-(ts_maxwait)Tj
-58.56 0 TD
-/N6 12 Tf
-0.0504 Tc
--0.0864 Tw
-(: A per process counter,)Tj
-119.52 0 TD
-/N8 12 Tf
-0.018 Tc
--0.154 Tw
-( ts_dispwait, )Tj
-69.6 0 TD
-/N6 12 Tf
-0.072 Tc
--0.108 Tw
-(is initialized to zero each time a process)Tj
--247.68 -14.16 TD
-0.0602 Tc
-1.081 Tw
-(is placed back on the dispatcher queue after its time quantum has e\
-xpired or when it is)Tj
-0 -13.92 TD
-0.0602 Tc
-0.0347 Tw
-(awakened \(ts_dispwait is not reset to zero when a process is preempt\
-ed by a higher prior-)Tj
-T*
-0.0862 Tc
--0.1889 Tw
-(ity process\). This counter is incremented once per second. If a \
-process)Tj
--2.652 Tc
-0 Tw
-(\222)Tj
-0.0572 Tc
--0.0932 Tw
-(s ts_dispwait value)Tj
-0 -14.16 TD
-0.0843 Tc
-0.1197 Tw
-(exceeds the ts_maxwait value for its level, the process)Tj
--2.652 Tc
-0 Tw
-(\222)Tj
-0.1033 Tc
-0.1007 Tw
-(s priority is changed to that indicated)Tj
-0 -13.92 TD
-0.092 Tc
--0.0189 Tw
-(by ts_lwait. The purpose of this field is to prevent starvation.)Tj
--18 -24 TD
--2.652 Tc
-0 Tw
-(\225)Tj
-18 0 TD
-/N8 12 Tf
-0.036 Tc
-(ts_lwait:)Tj
-43.92 0 TD
-/N6 12 Tf
-0.0936 Tc
-0.5047 Tw
-( the priority to change to \(generally a higher priority\) if the starva\
-tion timer expires)Tj
--43.92 -13.92 TD
-0.0825 Tc
--0.0225 Tw
-(before the job consumes its time-slice \(i.e., if ts_dispwait exceeds ts\
-_maxwait\).)Tj
-ET
-PDFVars/TermAll get exec end end
-userdict /pgsave get restore
-showpage
-%%PageTrailer
-%%EndPage
-%%Page: 4 4
-%%BeginPageSetup
-userdict /pgsave save put
-PDFVars begin PDF begin PDFVars/InitAll get exec
-%%EndPageSetup
-0 0 612 792 RC
-BT
-303.6 36 TD
-0 0 0 rg
-/N6 9.84 Tf
-0.0019 Tc
-0 Tw
-(4)Tj
-ET
-1 1 1 rg
-103.44 80.88 405.12 630.24 re
-f
-BT
-103.44 704.4 TD
-0 0 0 rg
-0.1271 Tc
--0.0582 Tw
-(# ts_quantum ts_tqexp ts_slpret ts_maxwait ts_lwait #PRIORITY LEVEL \
- )Tj
-0 -10.08 TD
--0.0635 Tc
-0.1735 Tw
-(200 0 50 0 50 # 0 )Tj
-T*
-0.1753 Tw
-(200 0 50 0 50 # 1 )Tj
-0 -9.84 TD
-0.1735 Tw
-(200 0 50 0 50 # 2 )Tj
-0 -10.08 TD
-(200 0 50 0 50 # 3 )Tj
-T*
-(200 0 50 0 50 # 4 )Tj
-0 -9.84 TD
-(200 0 50 0 50 # 5 )Tj
-0 -10.08 TD
-(200 0 50 0 50 # 6 )Tj
-T*
-(200 0 50 0 50 # 7 )Tj
-0 -9.84 TD
-(200 0 50 0 50 # 8 )Tj
-0 -10.08 TD
-(200 0 50 0 50 # 9 )Tj
-T*
--0.0581 Tc
-0.1698 Tw
-(160 0 51 0 51 # 10 )Tj
-0 -9.84 TD
-(160 1 51 0 51 # 11 )Tj
-0 -10.08 TD
-(160 2 51 0 51 # 12 )Tj
-T*
-(160 3 51 0 51 # 13 )Tj
-0 -9.84 TD
-(160 4 51 0 51 # 14 )Tj
-0 -10.08 TD
-(160 5 51 0 51 # 15 )Tj
-T*
-(160 6 51 0 51 # 16 )Tj
-0 -9.84 TD
-(160 7 51 0 51 # 17 )Tj
-0 -10.08 TD
-(160 8 51 0 51 # 18 )Tj
-T*
-(160 9 51 0 51 # 19 )Tj
-0 -9.84 TD
--0.0535 Tc
-0.1627 Tw
-(120 10 52 0 52 # 20 )Tj
-0 -10.08 TD
-(120 11 52 0 52 # 21 )Tj
-T*
-(120 12 52 0 52 # 22 )Tj
-0 -9.84 TD
-(120 13 52 0 52 # 23 )Tj
-0 -10.08 TD
-(120 14 52 0 52 # 24 )Tj
-T*
-(120 15 52 0 52 # 25 )Tj
-0 -9.84 TD
-(120 16 52 0 52 # 26 )Tj
-0 -10.08 TD
-(120 17 52 0 52 # 27 )Tj
-T*
-(120 18 52 0 52 # 28 )Tj
-0 -9.84 TD
-0.1609 Tw
-(120 19 52 0 52 # 29 )Tj
-0 -10.08 TD
--0.0181 Tc
-0.1212 Tw
-(80 20 53 0 53 # 30 )Tj
-T*
-(80 21 53 0 53 # 31 )Tj
-0 -9.84 TD
-(80 22 53 0 53 # 32 )Tj
-0 -10.08 TD
-(80 23 53 0 53 # 33 )Tj
-T*
-0.1186 Tw
-(80 24 53 0 53 # 34 )Tj
-0 -9.84 TD
-0.1212 Tw
-(80 25 54 0 54 # 35 )Tj
-0 -10.08 TD
-(80 26 54 0 54 # 36 )Tj
-T*
-(80 27 54 0 54 # 37 )Tj
-0 -9.84 TD
-0.1186 Tw
-(80 28 54 0 54 # 38 )Tj
-0 -10.08 TD
-0.1212 Tw
-(80 29 54 0 54 # 39 )Tj
-T*
-(40 30 55 0 55 # 40 )Tj
-0 -9.84 TD
-0.1186 Tw
-(40 31 55 0 55 # 41 )Tj
-0 -10.08 TD
-0.1212 Tw
-(40 32 55 0 55 # 42 )Tj
-T*
-0.1186 Tw
-(40 33 55 0 55 # 43 )Tj
-0 -9.84 TD
-0.1212 Tw
-(40 34 55 0 55 # 44 )Tj
-0 -10.08 TD
-(40 35 56 0 56 # 45 )Tj
-T*
-(40 36 57 0 57 # 46 )Tj
-0 -9.84 TD
-(40 37 58 0 58 # 47 )Tj
-0 -10.08 TD
-(40 38 58 0 58 # 48 )Tj
-T*
-0.1186 Tw
-(40 39 58 0 59 # 49 )Tj
-0 -9.84 TD
-(40 40 58 0 59 # 50 )Tj
-0 -10.08 TD
-0.1212 Tw
-(40 41 58 0 59 # 51 )Tj
-T*
-(40 42 58 0 59 # 52 )Tj
-0 -9.84 TD
-(40 43 58 0 59 # 53 )Tj
-0 -10.08 TD
-(40 44 58 0 59 # 54 )Tj
-T*
-(40 45 58 0 59 # 55 )Tj
-0 -9.84 TD
-(40 46 58 0 59 # 56 )Tj
-0 -10.08 TD
-(40 47 58 0 59 # 57 )Tj
-T*
-0.1186 Tw
-(40 48 58 0 59 # 58 )Tj
-0 -9.84 TD
--0.0281 Tc
-0.133 Tw
-(20 49 59 32000 59 # 59)Tj
-0 -18 TD
-0.1233 Tc
--0.0801 Tw
-(Table 2: Default Solaris Time-Sharing Dispatch Table )Tj
-ET
-PDFVars/TermAll get exec end end
-userdict /pgsave get restore
-showpage
-%%PageTrailer
-%%EndPage
-%%Page: 5 5
-%%BeginPageSetup
-userdict /pgsave save put
-PDFVars begin PDF begin PDFVars/InitAll get exec
-%%EndPageSetup
-0 0 612 792 RC
-BT
-303.6 36 TD
-0 0 0 rg
-/N6 9.84 Tf
-0.0019 Tc
-0 Tw
-(5)Tj
--231.6 676.08 TD
-/N6 12 Tf
-0.0731 Tc
-0.3138 Tw
-(In this table, the priority of jobs ranges from a high of 59 down to 0.\
- Time-slices begin at 20ms)Tj
-0 -14.16 TD
-0.0887 Tc
-1.5553 Tw
-(at the highest priority and gradually increase in duration up to 200ms a\
-t the lowest priorities.)Tj
-0 -13.92 TD
-0.0769 Tc
-0.0521 Tw
-(Generally, the priority of a process decreases by 10 levels after it con\
-sumes its time-slice; the pri-)Tj
-T*
-0.0616 Tc
-0.091 Tw
-(ority of a process is increased to 50 or above when the starvation timer\
- expires.)Tj
-0 -26.16 TD
-/N8 12 Tf
-0.0591 Tc
-0 Tw
-(Implementation)Tj
-0 -24 TD
-/N6 12 Tf
-0.0869 Tc
-0.3571 Tw
-(For each job in the TS class, the following data structure is maintained\
- \(we)Tj
--2.652 Tc
-0 Tw
-(\222)Tj
-0.1296 Tc
-0.2544 Tw
-(ve removed a few of)Tj
-0 -13.92 TD
-0.1285 Tc
--0.0045 Tw
-(the fields for simplicity\):)Tj
-0 -12.72 TD
-/N17 9.84 Tf
-0.096 Tc
-0 Tw
-(/*)Tj
-0 -12 TD
-0.0901 Tc
-0.0059 Tw
-( * time-sharing class specific thread structure)Tj
-T*
-0.096 Tc
-0 Tw
-( */)Tj
-T*
-0.084 Tc
-0.012 Tw
-(typedef struct tsproc {)Tj
-T*
-0.096 Tc
-0 Tw
-( long)Tj
-54 0 TD
-0.076 Tc
-0.02 Tw
-( ts_timeleft;)Tj
-132 0 TD
-0.096 Tc
-0 Tw
-( /* time remaining in quantum */)Tj
--186 -12 TD
-0.09 Tc
-0.006 Tw
-( long ts_dispwait; /* number of seconds since */)Tj
-0 -12 TD
-0.096 Tc
--0.0062 Tw
-( /* start of quantum \(not reset */)Tj
-T*
--0.0067 Tw
-( /* upon preemption\) */)Tj
-T*
-0.088 Tc
-0.008 Tw
-( pri_t ts_pri; /* priority \(0-59\) */)Tj
-T*
-0.0891 Tc
-0.0069 Tw
-( kthread_t *ts_tp; /* pointer to thread */)Tj
-T*
-0.0909 Tc
-0.0051 Tw
-( struct tsproc *ts_next; /* link to next tsproc on list */)Tj
-T*
-0.0907 Tc
-0.0053 Tw
-( struct tsproc *ts_prev; /* link to previous tsproc */)Tj
-T*
-0.096 Tc
-0 Tw
-(} tsproc_t;)Tj
-0 -23.28 TD
-/N6 12 Tf
-0.0908 Tc
-0.7224 Tw
-(The kthread_t structure tracks the necessary information to context-swit\
-ch to and from this pro-)Tj
-0 -13.92 TD
-0.0673 Tc
-0.6617 Tw
-(cess. This structure is kept separate from the time-sharing class in or\
-der to separate the mecha-)Tj
-0 -14.16 TD
-0.0989 Tc
-0.0178 Tw
-(nisms of the dispatcher from the policies of the scheduler. )Tj
-0 -24 TD
-0.0592 Tc
-0.0548 Tw
-(There are seven interesting routines in the TS class:)Tj
-T*
--2.652 Tc
-0 Tw
-(\225)Tj
-18 0 TD
-/N8 12 Tf
-0.018 Tc
--0.234 Tw
-(ts_enterclass\(thread *T\):)Tj
-128.16 0 TD
-/N6 12 Tf
-0.0846 Tc
-0.0321 Tw
-( called when a new thread is added to the TS class.)Tj
--128.16 -13.92 TD
-0.0675 Tc
-0.0405 Tw
-(It initializes a tsproc structure for this process and adds it to the li\
-st of processes)Tj
--18 -24 TD
--2.652 Tc
-0 Tw
-(\225)Tj
-18 0 TD
-/N8 12 Tf
-0.0256 Tc
--0.2416 Tw
-(ts_exitclass\(thread *T\):)Tj
-120.24 0 TD
-/N6 12 Tf
-0.0819 Tc
-0.0155 Tw
-( called when the thread terminates or exits the class.)Tj
--120.24 -13.92 TD
-0.0722 Tc
-0.0518 Tw
-(The tsproc structure is removed from the list of processes.)Tj
--18 -24 TD
--2.652 Tc
-0 Tw
-(\225)Tj
-18 0 TD
-/N8 12 Tf
-0.048 Tc
--0.264 Tw
-(ts_tick\(thread *T\):)Tj
-96.96 0 TD
-/N6 12 Tf
-0.1131 Tc
--0.0891 Tw
-( called once every 10ms with a pointer to the currently running thread.)Tj
--96.96 -14.16 TD
-0.1146 Tc
-0.7934 Tw
-(The ts_timeleft variable of the running thread is decremented by one. I\
-f ts_timeleft goes to)Tj
-0 -13.92 TD
-0.094 Tc
--0.2712 Tw
-(zero, then its new priority is calculated according to the value of ts_t\
-qexp in the table, its time-)Tj
-T*
-0.0714 Tc
--0.1356 Tw
-(slice is reset, and ts_dispwait is cleared; the thread is then added to \
-the back of the appropriate)Tj
-0 -14.16 TD
-0.1083 Tc
--0.1101 Tw
-(priority queue and a new job is scheduled.)Tj
--18 -24 TD
--2.652 Tc
-0 Tw
-(\225)Tj
-18 0 TD
-/N8 12 Tf
-0.045 Tc
-(ts_update\(\):)Tj
-61.92 0 TD
-/N6 12 Tf
-0.1059 Tc
--0.0619 Tw
-( called once a second to check the starvation qualities of each job.)Tj
--61.92 -13.92 TD
-0.082 Tc
-0.5848 Tw
-(The routine increments the ts_dispwait counter of every process in the c\
-lass \(even those that)Tj
-0 -13.92 TD
-0.0962 Tc
-1.3318 Tw
-(are blocked\) by one. If the job is on the ready queue \(i.e., the job\
- is neither running nor)Tj
-0 -14.16 TD
-0.0806 Tc
-0.0034 Tw
-(blocked\), then if its ts_dispwait exceeds ts_maxwait, the priority and\
- the ts_dispwait value of)Tj
-0 -13.92 TD
-0.0752 Tc
-0.0488 Tw
-(this process are reset \(but not ts_timeleft\). Note that this may invo\
-lve rearranging the priority)Tj
-T*
-0.0394 Tc
-0.1646 Tw
-(queues. )Tj
--18 -24 TD
--2.652 Tc
-0 Tw
-(\225)Tj
-18 0 TD
-/N8 12 Tf
-0.024 Tc
--0.24 Tw
-(ts_sleep\(thread *T\):)Tj
-102.96 0 TD
-/N6 12 Tf
-0.0904 Tc
-0.0136 Tw
-( called when the thread blocks \(e.g., due to I/O or synchronization\). \
-)Tj
--102.96 -14.16 TD
-0.0935 Tc
-0.0785 Tw
-(The TS routine does not need to do anything in these circumstance. Howe\
-ver, the dispatcher,)Tj
-ET
-PDFVars/TermAll get exec end end
-userdict /pgsave get restore
-showpage
-%%PageTrailer
-%%EndPage
-%%Page: 6 6
-%%BeginPageSetup
-userdict /pgsave save put
-PDFVars begin PDF begin PDFVars/InitAll get exec
-%%EndPageSetup
-0 0 612 792 RC
-BT
-303.6 36 TD
-0 0 0 rg
-/N6 9.84 Tf
-0.0019 Tc
-0 Tw
-(6)Tj
--213.6 676.08 TD
-/N6 12 Tf
-0.081 Tc
-0.7401 Tw
-(or class-independent routines, must add the thread to the blocked queue \
-and schedule a new)Tj
-0 -14.16 TD
-0.096 Tc
-0 Tw
-(thread.)Tj
--18 -24 TD
--2.652 Tc
-(\225)Tj
-18 0 TD
-/N8 12 Tf
-0.0618 Tc
--0.1578 Tw
-(ts_wakeup\(thread *T\): )Tj
-120.48 0 TD
-/N6 12 Tf
-0.1034 Tc
--0.0194 Tw
-(called when the blocked thread becomes ready. )Tj
--120.48 -13.92 TD
-0.0809 Tc
-0.0751 Tw
-(If the ts_dispwait value associated with this process is greater than th\
-e value of ts_maxwait in)Tj
-0 -13.92 TD
-0.0816 Tc
-0.1224 Tw
-(the dispatch table, then the priority of the process is set to that spec\
-ified by ts_slpret, its time-)Tj
-0 -14.16 TD
-0.0892 Tc
--0.1385 Tw
-(slice \(ts_timeleft\) is reset, and ts_dispwait is cleared. If the prio\
-rity of this job is less than that)Tj
-0 -13.92 TD
-0.1074 Tc
--0.1567 Tw
-(of the running job, then the newly awoken job is added to the back of it\
-s priority queue; other-)Tj
-T*
-0.0831 Tc
-0.0409 Tw
-(wise, it preempts the currently running job.)Tj
--18 -24 TD
--2.652 Tc
-0 Tw
-(\225)Tj
-18 0 TD
-/N8 12 Tf
-0.0206 Tc
-0.0034 Tw
-(ts_preempt\(thread *T\): )Tj
-123.84 0 TD
-/N6 12 Tf
-0.086 Tc
-0.022 Tw
-(called when the thread is preempted by a higher priority thread.)Tj
--123.84 -14.16 TD
-0.1009 Tc
--0.0278 Tw
-(The preempted thread is added to the front of its priority queue.)Tj
--18 -25.92 TD
-/N8 12 Tf
--0.0255 Tc
-0 Tw
-(Fairness)Tj
-0 -24 TD
-/N6 12 Tf
-0.086 Tc
-0.938 Tw
-(The Solaris time-sharing scheduler approximates fair allocations by decr\
-easing the priority of a)Tj
-0 -13.92 TD
-0.0971 Tc
-0.0469 Tw
-(job the more that it is scheduled. Therefore, a job that is runnable re\
-latively infrequently remains)Tj
-0 -14.16 TD
-0.0963 Tc
-0.3477 Tw
-(at a higher priority and is scheduled over lower priority jobs. However\
-, due to the configuration)Tj
-0 -13.92 TD
-0.0914 Tc
--0.1674 Tw
-(of the default dispatch table \(i.e., the starvation interval is set to \
-zero\), you will note that the prior-)Tj
-T*
-0.1038 Tc
-0.8061 Tw
-(ity of every process is raised once a second, regardless of whether or n\
-ot it is actually starving.)Tj
-0 -14.16 TD
-0.0824 Tc
-0.1401 Tw
-(Thus, the allocation history of each process is erased every second and \
-compute-bound processes)Tj
-0 -13.92 TD
-0.0881 Tc
--0.0241 Tw
-(tend to acquire more than their fair share of the resources. )Tj
-0 -24 TD
-0.0766 Tc
-0.8794 Tw
-(This behavior is illustrated in Figure 1 for three competing jobs that r\
-elinquish the processor at)Tj
-0 -13.92 TD
-0.123 Tc
-0.1343 Tw
-(different rates while waiting for I/O to complete: a )Tj
-247.68 0 TD
-/N10 12 Tf
-0.04 Tc
-0 Tw
-(coarse)Tj
-31.92 0 TD
-/N6 12 Tf
-0.0662 Tc
-0.3092 Tw
-( job that rarely relinquishes the CPU, a)Tj
--279.6 -14.16 TD
-/N10 12 Tf
-0 Tc
-0 Tw
-(medium)Tj
-37.92 0 TD
-/N6 12 Tf
-0.1129 Tc
--0.0589 Tw
-( job that does so more frequently, and a)Tj
-189.36 0 TD
-/N10 12 Tf
--0.06 Tc
--0.18 Tw
-( fine)Tj
-21.12 0 TD
-/N6 12 Tf
-0.0796 Tc
-0.0444 Tw
-( job that often relinquishes the CPU. The fig-)Tj
--248.4 -13.92 TD
-0.091 Tc
--0.157 Tw
-(ure shows a typical snapshot over a five second execution interval. As \
-described, each second the)Tj
-0 -13.92 TD
-0.0788 Tc
-0.2452 Tw
-(priority of all three jobs is raised to level 50 or higher. As a job ex\
-ecutes and consumes its time-)Tj
-0 -14.16 TD
-0.0872 Tc
--0.1232 Tw
-(slice, its priority is lowered about ten levels Since the coarse job ru\
-ns more frequently, it drops in)Tj
-0 -13.92 TD
-0.0922 Tc
--0.0215 Tw
-(priority at a faster rate than the other two jobs.)Tj
-ET
-1 1 1 rg
-160.08 103.92 288 207.12 re
-f
-q
-288 0 0 207.12 160.08 103.92 cm
-BI
- /Width 341
- /Height 252
- /BitsPerComponent 1
- /ColorSpace /DeviceGray
- /Decode [1 0 ]
- /DecodeParms [null <</K -1
-/Columns 341 >> ]
- /Filter [/ASCII85Decode /CCITTFaxDecode ]
-ID
--D5]FA8n>d7gp!_JX[(R5">e_j!0;@j@9Z7"XAU2d2e_p*"\,c3#Ka/8'jaH&a,4-
-#\85\,N&M_PW@[i'VW`2TgqY6%"m9(Eif#,+NhRZU!,MtGK`'RHRO<b[!s=YUU#(J
-HNcCf"dN_L%^ZKa<<t)XOou=D$_Tb@q&^j>Jclh`+B1kB";)XU5`d7B!_EFsYEA<>
-W";hc#V..7_C0RG,M4,<#UTrL":JHNs8VkBJ)gS/pdI^NJ,^T3$iUPcIQulmn,>E?
-503?pi.6CU&2*jd%t&=]^]+FVoEZ5KJ'@m'?SB1PJUdA8m4e5Q":.5H#_2:^%N/<b
-Boi;HarV[V%QOEHY@8%d`s<7SJ`,$<"]<3+71nbmJ5eCZ[^!jpnco9ss8W-!ON7WQ
-oLG;RVt>f'pf!H3=[S;G<M&b"d!50g,!"op!X^VP&1SpQ@lQadcp^1%$aAZ"a,&q9
-T4E62O)t[039UtX(GPb0LRT,'6-$fn)+25l)dPWs3<cX#2;S8L"<WH\1'!hbgk6[-
-ONNX!+JIa.s/G?!j-2RE5En.'jnW'W+B/Un$iH';$9ocnK#&$i.E[.5K)#BGs4Cd*
-rUTjcrr:=i&-&m?&GZ8RFs$4&6#7GKJ,'M:_M98.%3HgGEpuL[,+nF9Q"RCX'V-U&
-F,j:K*s;q%"X!br,,b2hj8\fis83JL^AgHW5QA!Q3t6rb+-9\2K4"ZX?4\B&LFLBO
-#DTV`LcmGDK?30F`ucDo)V.l/kdiC&iO(!r6!$TbK!GfV<cClmIReu%n:D]OLuo!'
-_AXhJ*>-:'6g-A!n+)8(a8a25&G'O>A*+jmo?7,0pqB3^I#glAa5hHbrunC*s'LhS
-I"*Poa'aH'p\@1:3QM0tU%'5.aUabgr."a]are\(."B;6r'rI@s7o%^J!;s'j8Y2?
-p%\?<s2lG`q]@5+a8c2>U*0G+I)H!Es8Dpnr]g3Gs8PIG3J[Y7s6PV-PW<76s,[3Q
-q"]^FargZ\+"2-L+92B)Ld.%E0_rchs8N$HIin^jreJP<5!T(.p-g(G+3-A@s-,b@
-q"]^Fs8VG5U&8p1r-tF`r]Xc^O8o#Ck9'0`L[kEErKmdb?]US%J,^KBrr4Br*97(u
-;#!<rJ$6o:5Q3nD"oXZG6\5H/6hstej,^MPNelZ%n\fm07Bagn&"%b)qa*N34SUH,
-s7-+5O8gQ;*&U:_JUHG+X8gC(6\H0$&^_RT\X[s3L][!`)R,*K,90r1rt,g`k9%Sd
-jD`h9*/#;b*edLAs8W,hs3<_L^23i4(]WL;+9.i8JK@9Fs!-Fkne&qB&7H:Qs8VmL
-s!WBs@K6Afs1%k"TL]%^-9mQj6hq!PTLL%$J,^i[j8]/TA,hViPWt5ps8S9)a78^3
-Ir"t3s!Btl&-$ADQ9Y0Eq"XJGs7nDIIjfdi#P4#U5Q?ohnc.bQ?hn43O8kG/O,s>?
-9Re/)a?fk(J,^i[jU_@rr`K3\s5W.V3<0$S1&ptrIj#'sr."bF8,rV4+92B3L]</p
-s8W,SJ)o)h5PY9YWC-^craGj,nc/Xhs8R+ps8W"Hs3uPiNcG*s_uKbu&-(l.5QCc`
-mQ^aOaC1DW-uad\,KJ<6s7lW8+Sgf6/ie^XA,\cFs8$*n6i[2`r]a@JWXg1!Eh"CR
-Pi['QnlaJ?.EZ\+k*^<rV%->`%T)6s:ur0`jU^Si3X?oj#cI5$NZo<../AYu+e3LW
-`'f!*NZjP$8,R6(+91mK+7^D$s,RQe6BC1,s8W*k+#\B>LQD!#^]006deAlbj=(%i
-cMs!Ar]n*qr"2;\3t)[MO8o7[s7hZ9.0'>Hs,Y*JM#[M@q&'+_j='(;s8W-!kTYf[
-J&hS=a6A`&?fWWqq1o"%nhL1E+J=5as8W,sKcg5Bs7,ft&cBQHs5[\br^)W3O8o7[
-rb24WEW?'Zcm'(s$97/i0`F<97R-q6'G(6)0L,U;YN.,23<0$=m=$:II)GaZq&'*^
-IR9&]O8n8p5QCaC$ND1fJ,fPhne?R-q1nM7s8U.>ne`J#s+C6'+34E]s+GCl+#*`T
-n,NFK.0'=/_#D+Kr]WRHs851^6BC7Nr-eV@2$8oF3[:@[,G7Vm3CB#k6^0PQ9?8-p
-@"23I7!(peF@S`@7mqGh7!(peF;OuPLkrE*"7eDg"EFJ>K0]J:s8W)W"lnZ$T^dU:
-ZV[HN'sIQ#N=g8<+G/+;$?DZ7.E@QgJd@Bg.IhEf,Da_HOD>h(>^$bl&;%u<%un@(
-s7l`VO6@dCc(E6i8,d69&7:+'N.8oaO.:^j%>0K:=9&<\j?^WjoF):\r]WSuru]1/
-r8[h:&7>J;j5`MHs8O/`5lZKRs8I$<nK7f2na[g]"onU`O<B%ns8P(Ypk0I`s7lC$
-EW?'Za:LSp"onUmJ,^Vjs7-"0^]4>T&3o4Ts8W'0?iU0+j8]/ZrX`H:s8V-Zs8W'0
-?iU0+j8]/ZrX`H:s8RoTs8W'd*$E#rnc/.Zs,[(Es8G<(na[g]s8VWm&-)\0r]cM!
-Lu^l$C12AniFcIa=lC(c3"u<7a>isM*)_:ds79mDnbu!BO,nejYlFWNs8W-!s8W-!
-s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r.a!Ha20:q*@LkCEA,BG%R?\-"Tsi7
-*.^BRs8Kq9nc/+k&b60Z9G8Cu,T=`S_4ZE+*saC5j$=Z-5lr:hO?eWs7i_^E*9\N$
-kTc.KUS,XnNfa:;#bf\";l'bt8Q(TU+^lO5PrMBf8<8'$W3Q35]);`X2NTg8#,i@b
-O>@?#^EJ[U_i@)4F)f5C5i`hR,lE[-(dbk4ni*(.f.:sTX/"WS<L!cm;R6,BNpo=H
-cm/lD@K&d5"<`^h"G$]m@#4S#Qrk`sEe=/u5Q3g$)um/BYd^8r`rGfYO.]%a:[^Q"
-!r:&Zi5#[aL]7Vkpb5$c!X'SN&E).PJfr4s295Ga`*`WH+9~>
-EI
-Q
-BT
-286.08 85.92 TD
-0 0 0 rg
-/N8 12 Tf
--0.0086 Tc
-0.0326 Tw
-(Figure 1)Tj
-ET
-PDFVars/TermAll get exec end end
-userdict /pgsave get restore
-showpage
-%%PageTrailer
-%%EndPage
-%%Page: 7 7
-%%BeginPageSetup
-userdict /pgsave save put
-PDFVars begin PDF begin PDFVars/InitAll get exec
-%%EndPageSetup
-0 0 612 792 RC
-BT
-303.6 36 TD
-0 0 0 rg
-/N6 9.84 Tf
-0.0019 Tc
-0 Tw
-(7)Tj
--231.6 676.08 TD
-/N6 12 Tf
-0.1058 Tc
--0.1418 Tw
-(The impact of this policy on the relative execution times of the three a\
-pplications is shown in Fig-)Tj
-0 -14.16 TD
-0.0714 Tc
--0.2345 Tw
-(ure 2. Because the coarse application acquires more CPU time, it finish\
-es its work earlier than the)Tj
-0 -13.92 TD
-0.0967 Tc
--0.2527 Tw
-(other applications, even though all three jobs require the same amount o\
-f time in a dedicated envi-)Tj
-T*
-0.1286 Tc
-0 Tw
-(ronment)Tj
-0 -290.4 TD
-/N8 13.92 Tf
-0.0697 Tc
--0.0611 Tw
-(Project Requirements)Tj
-0 -24.72 TD
-/N6 12 Tf
-0.1132 Tc
-1.2458 Tw
-(For your project, you need to implement code that is similar in function\
-ality to the Solaris TS)Tj
-0 -13.92 TD
-0.1128 Tc
--0.0954 Tw
-(scheduler, but your code does not have to be structured in the same way.\
- Implement your code in)Tj
-0 -14.16 TD
-0.1186 Tc
--0.0253 Tw
-(whatever manner you find easiest when interfacing with the already exist\
-ing Nachos code. )Tj
-0 -24 TD
-0.0825 Tc
-0.2743 Tw
-(Specifically, you are not required to separate the class-independent and\
- class-dependent schedul-)Tj
-0 -13.92 TD
-0.1074 Tc
-0.6886 Tw
-(ing functionality. You do not need to support multiple scheduling class\
-es. You can implement)Tj
-T*
-0.13 Tc
-0.419 Tw
-(any routines that you feel are necessary, not just the seven functions w\
-e specifically listed. You)Tj
-0 -14.16 TD
-0.1262 Tc
--0.0593 Tw
-(can pass any parameters that you find helpful.)Tj
-0 -24 TD
-0.068 Tc
-1.416 Tw
-(However, it is important that your approach be table-driven, with a user\
--configurable dispatch)Tj
-0 -13.92 TD
-0.1033 Tc
-0.154 Tw
-(table. Your table should be initialized to the default values in Solari\
-s 2.6, but you may also want)Tj
-T*
-0.1348 Tc
-0.3492 Tw
-(to experiment with different configurations. To demonstrate the functio\
-nality of your scheduler,)Tj
-0 -14.16 TD
-0.1051 Tc
-0.3089 Tw
-(you may want to print out the change in priorities of several different \
-competing processes, as in)Tj
-0 -13.92 TD
-0.0405 Tc
-0.1635 Tw
-(Figure 1. )Tj
-ET
-1 1 1 rg
-150.96 432 315.12 225.12 re
-f
-q
-315.12 0 0 225.12 150.96 432 cm
-BI
- /Width 341
- /Height 252
- /BitsPerComponent 1
- /ColorSpace /DeviceGray
- /Decode [1 0 ]
- /DecodeParms [null <</K -1
-/Columns 341 >> ]
- /Filter [/ASCII85Decode /CCITTFaxDecode ]
-ID
--D5T@*#T_R#j@>3`c+g8+WV0Tfc1\<_$Ju0_BXXE`^^,YNXB)_TA[R+A:+?CLE*3A
-cXe*VS9']+%s"dE_M87$4L*'"XLs09$?CnbQ$-HLT#"/]6"dKqK-ifZ5c>5sGST*A
-('rsj";T%>n;8=KHk8UMj2""b-9Z<61Ch;jHNX\,"MoRQK%C,5ru2E%fMDO."onU]
-+Gu3`s1ub9s,ZeB^[OLe&3u1=s6("HM"grK#S\sY"mD"so%s^+Qf%]P?fV/rK.?p#
-+Ft&`5Q?BBE.8u%$H3'Q`#qF.A+CK[83)GJG\.lJa!%Pi]`\of!lcDINe/_LOL_]m
-&!;pG@$c]Ls8W-!s8W-!s8W-!q=Bu+i<ST,Jcn<6;#gM\C_RE#j;,QP/sd`E$c#&J
-*eL)L>`VE4_;c]*Bb0DMM!-%T7!Xl/FGMK.69hF'kn1c$V^i+[LEZ/f4es=0Jgc$"
-TKs19:e2-pJj=la*g7EP6jgsX?P&QdO0/kpj'fuadR0WVrK69;4jYG[j.JpS>f3A(
-,DM:660o.*j5@`^U#<`rTTYD?i].Et-ZFZ'+M#9hVNU`D77'>,BZOg+[iku9j>*GQ
-'KSVtLE-FMrV6U-#cAei.Re%_4@0#?4bB2ELH+JfLD68n.hFuP@0Al`J(NW\TKt8=
-jEqM9q&]_T#`:oC;kX@d-+2)cI"21rlnK)@c4U\SJgc,_?[r+5q?16r8KnS\TXnZQ
-=8p,\6f\*<fRL_j&1/P'5u#9?L\ull.ToN0A5UtW!X-Xd,REfq[=SP"+IYm1=Q(fO
-%<t_1'LAENW?_``;F+s07fqf1MKhQP&17o=Oj4M*_%\msq(^$ufgCWlPEn5L.gR13
-pCr2bVs,l6%tXsMJrfrJ&Q>?(Ud87/_(c7D8&9Zss00M:V1Kr9TuAUerWqQAJ"T7Q
-Jd<KN@9[<'&4<*\+9,h!FrLoN5>(:?ThEf^I"jmD^6;tZ6'aJr&,sQ[8VGVbYK,UT
-OouFHEMWG9CM]C&5nssK/dehE5ns!F&B#cJKNICb#V_E,Ml#I06'^AZ3Zs'P#X:r@
-&OV3`("E?lpdpA8&jZSBr<,ENGo[)#64uoWI4088q?\Z$oA5Zs";F0.7mR:#++bn]
-LXKT[$kC69s6(d9aUXM%`->K$#rf4Y<qI&uOAD`>V;S_6J!%WR4X(-KUd#-_2C,8C
-JZg:=+o**8aS.t34h*cg[A?H9J?K7\5qHu,'GZn#5nH/6k^!f*i?AMrTY2gIHkklK
-\Ju(C:dGVbJL%p*+I-@<Q$P]I'YPthdKC-Q^rZj)Jf-Ei3%ND`&>T5f#U"opJd;oT
-4:II*";!&H:cO-%";$WeJHR2&Uk0a[KQ6XI$%<FR$QqbDoR[3tLcllB5n'35`e"I-
-6^0Ug"HYnNW8#Zb!YBqqVp\*^qETWDK)HgD"@kaT6`$Ri+]6tA80C9[&4$FB"o:do
-*/<6^+@-8uVno1A&Po>k+JdU6d7NhZ#S;Y#s5q7N+IB9oNg(YPD-rre"<eB(=KqFr
-,WY41TRmjo"An1jKEr]P#_2Ju5qXD15lqF08.\.KOTKa!"aERmgRt@o,D)Hh&4$F]
-i%*4]&:t15*<]488e<KP_Ee;;+8ufo64dJu8s!/8O<B3!L3sa#!XL)!TQ*O+#V>eE
-O?jK*=X!Eg"??CG!XNl0&d/c!$F/"b+JYPc&4!2rjD\%nU(B]g5_026S-=./,Sq\W
-SKNM/*$C%/Jd<drJ?K7^#Z+Xe/0I=E!XM+qo10E9#V;)65p/R;(Z>LK;9t[s";8aG
-+B/pn"eEdUL99\gUcgImC')fh+ID:T+Fse`X8#+DYU#<$G(n#X5ls<'cp\F3:k)"Y
-5nVIL1,s##"G-tFNYEUi!rmoZ+UB7F_FPf83'ef$=`L5C+[KLfdKgD;&B#1$dRYYi
-&G1Q>M!-BKKFf7m&f_c/(%jirNY2I+TY2T^5nAX3#U/t.O<@,>8HK5_P!K0AJHX'X
-00pnFWX'70JHX'X0*DhP"Wp#U&2-Qc82!73#U"oP&d`kTNa[0(63quB+YQBUJg6r%
-":-:q8HK//qPZ[jTRd4[HmTg)JdWa2)PFT/59lhQNg%Ckq4!4i7QCpOaDHr)CiUJ)
-OP:b0d/F"Elp(O?s8O3R)\%&o80Fl71uQ_J:(IIbLHH-tZClrB)E:/G%9J3]TRd^E
-MKBCtF:h9PMKgO<4<R%>,+hHG-QOQRF\0qo3XmJ:ddXml^Bc"PJNs1O?6;Kr?`3o#
-lLGC&GVG#&L62/eI`#TeCc3+Qp)=,?2B*/LAfD2.6Qe+=*/7;Pj,QBUa>AoKq&Hmu
-Km3@RD`E`Z=QOg08&D@..Lfd^Ab2<1i.<2H8.\J4r/ZF85ob=[!XXOr&b&(?YYW@%
-"nipcr-Jo4s'bq9Da9GEs6rN#5`q)!hLP_3o9eLQJe3JDrX^7B@"eXb#X/eC_6,!c
-6']N,O7&?j^]XX&~>
-EI
-Q
-BT
-286.08 414 TD
-0 0 0 rg
-/N8 12 Tf
--0.0086 Tc
-0.0326 Tw
-(Figure 2)Tj
-ET
-PDFVars/TermAll get exec end end
-userdict /pgsave get restore
-showpage
-%%PageTrailer
-%%EndPage
-%%Trailer
-%%DocumentProcessColors: Cyan Magenta Yellow Black
-%%EOF