4 %%CreationDate: (D:19981004210632)
6 %%DocumentData: Clean7Bit
8 %%BoundingBox: 0 0 612 792
10 %%DocumentProcessColors: (atend)
11 %%DocumentSuppliedResources:
12 %%+ font TimesNewRoman,Italic$2X1
14 %%+ font TimesNewRoman,Bold$2X1
15 %%+ font TimesNewRoman$2X1
16 %%+ procset (Adobe Acrobat - PDF operators) 1.2 0
17 %%+ procset (Adobe Acrobat - type operators) 1.2 0
18 %%+ procset (Adobe Acrobat - general image support) 1.2 0
19 %%+ procset (Adobe Acrobat - monochrome image support) 1.2 0
27 %%Copyright: Copyright 1993 Adobe Systems Incorporated. All Rights Reserved.
28 systemdict /languagelevel known
29 { systemdict /languagelevel get 1 eq }
33 initgraphics /Helvetica findfont 18 scalefont setfont
34 72 600 moveto (Error: Your printer driver needs to be configured) dup show
35 72 580 moveto (for printing to a PostScript Level 1 printer.) dup show
37 /Helvetica-Bold findfont 16 scalefont setfont
38 72 520 moveto (Windows and Unix) show
39 /Times-Roman findfont 16 scalefont setfont
40 72 500 moveto (Select ªLevel 1º in the PostScript options section) show
41 72 480 moveto (of the Acrobat Exchange or Reader print dialog.) show
42 /Helvetica-Bold findfont 16 scalefont setfont
43 72 440 moveto (Macintosh) show
44 /Times-Roman findfont 16 scalefont setfont
45 72 420 moveto (In the Chooser, select your printer driver.) show
46 72 400 moveto (Then select your printer and click the Setup button.) show
47 72 380 moveto (Follow any on-screen dialogs that may appear.) show
53 /currentpacking where{pop currentpacking true setpacking}if
54 userdict /PDF 85 dict put
55 %%BeginFile: pdfvars.prc
56 %%Copyright: Copyright 1987-1996 Adobe Systems Incorporated. All Rights Reserved.
57 userdict /PDFVars 75 dict dup begin put
98 /_pdfEncodings 2 array def
101 /_italMtx[1 0 .212557 1 0 0]def
102 /_italMtx_WMode1 [1 -.212557 0 1 0 0]def
105 /_pdf_oldCIDInit null def
106 /_categories 10 dict def
109 /_ColorSep5044? false def
114 PDFVars begin PDF begin
115 %%BeginFile: pdfutil.prc
116 %%Copyright: Copyright 1993 Adobe Systems Incorporated. All Rights Reserved.
117 /bd {bind def} bind def
119 /dd { PDFVars 3 1 roll put } bd
122 systemdict /languagelevel known
123 { systemdict /languagelevel get 2 ge } { false } ifelse
126 dup currentdict exch known
127 { currentdict exch get true }
131 /isdefined? { where { pop true } { false } ifelse } bd
132 /StartLoad { dup dup not { /_save save dd } if } bd
133 /EndLoad { if not { _save restore } if } bd
134 /npop { { pop } repeat } bd
137 %%Copyright: Copyright 1987-1996 Adobe Systems Incorporated. All Rights Reserved.
139 _ColorSep5044? {sep_ops begin 50 dict begin} if
143 _ColorSep5044? {end end} if
149 /setSA/setstrokeadjust ld
151 Level2? not StartLoad
155 0.25 sub round 0.25 add exch
156 0.25 sub round 0.25 add exch
159 /m { _sa? { pl } if moveto } bd
160 /l { _sa? { pl } if lineto } bd
161 /c { _sa? { pl } if curveto } bd
162 /setSA { /_sa? xdd } bd
164 /v { currentpoint 6 2 roll c } bd
174 dup 0 eq { pop cf } if
177 /ilp { /_lp /none dd } bd
194 _doClip 1 eq { clip } { eoclip } ifelse
202 gsave sfc fill grestore
203 _doClip 1 eq { clip } { eoclip } ifelse
214 gsave sfc eofill grestore
215 _doClip 1 eq { clip } { eoclip } ifelse
226 gsave ssc stroke grestore
227 _doClip 1 eq { clip } { eoclip } ifelse
241 1 eq { clip } { eoclip } ifelse
255 1 eq { clip } { eoclip } ifelse
264 /W { /_doClip 1 dd } bd
265 /W* { /_doClip 2 dd } bd
267 /Q { restore ilp } bd
269 { /defineRes/defineresource ld
270 /findRes/findresource ld
272 true systemdict /setglobal get exec
273 [/Function /ExtGState /Form]
274 { /Generic /Category findresource dup length dict copy /Category defineresource pop }
276 systemdict /setglobal get exec
278 Level2? not StartLoad
280 { dup maxlength exch length sub 2 le
283 { 1 index maxlength mul cvi dict
284 dup begin exch { def } forall end
288 dup 3 index known not
289 { dup AlmostFull? { 1.5 Expand } if
294 { _categories 1 index known not
295 { /_categories _categories 2 index 10 dict xput store
297 _categories exch 2 copy get 5 -1 roll 4 index xput put
300 { _categories exch get exch get
305 dup where { pop load } if
314 dup where { pop load } if
315 dup /_scs xdd ucs _cpcs exch get /_sc xdd /_sp null dd
318 dup type /arraytype eq
368 Level2? not StartLoad {
375 /findcolorrendering isdefined?
380 { type /booleantype eq
381 { dup type /nametype eq
382 { dup /ColorRendering resourcestatus
384 dup /DefaultColorRendering ne
386 /ColorRendering findresource
398 /makePat /makepattern ld
400 Level2? not _ColorSep5044? or StartLoad
418 Level2? not _ColorSep5044? not and StartLoad
420 /_sfc { _fc L1setcolor } dd
421 /_ssc { _sc L1setcolor } dd
423 Level2? _ColorSep5044? not and StartLoad
444 _sp null eq { setcolor } { _sp setpattern } ifelse
458 dup type /dicttype eq
462 { /_fc _cpcf _fcs ucs get dd
469 dup type /dicttype eq
473 { /_sc _cpcs _scs ucs get dd
479 /g { /DefaultGray cs sc } bd
480 /rg { /DefaultRGB cs sc } bd
481 /k { /DeviceCMYK cs sc } bd
482 /G { /DefaultGray CS SC } bd
483 /RG { /DefaultRGB CS SC } bd
484 /K { /DeviceCMYK CS SC } bd
485 /cm { _mtx astore concat } bd
499 { /DefaultGray /DeviceGray dd }
503 { /DefaultRGB /DeviceRGB dd }
506 [] 0 d 0 j 0 J 10 M 1 w
511 { 180 mul cos exch 180 mul cos add 2 div } bd
513 { abs exch abs 2 copy gt { exch } if pop neg } bd
515 { abs exch abs 2 copy add .75 le
516 { dup mul exch dup mul add 1 exch sub }
518 { .85 mul add 1 exch sub }
519 { 1 sub dup mul exch 1 sub dup mul add 1 sub }
523 { exch 2 div exch 2 { 360 mul sin 2 div exch } repeat add } bd
525 { 2 { 360 mul sin 2 div exch } repeat add } bd
527 { abs exch abs 2 copy 3 mul exch 4 mul add 3 sub dup 0 lt
528 { pop dup mul exch .75 div dup mul add 4 div
531 {pop 1 exch sub dup mul exch 1 exch sub
532 .75 div dup mul add 4 div 1 sub }
533 { .5 exch sub exch pop exch pop }
537 { dup mul .9 mul exch dup mul add 1 exch sub } bd
539 { dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub } bd
541 { dup .5 gt { 1 exch sub } if
543 { .5 exch sub 4 mul dup mul 1 sub }
544 { 4 mul dup mul 1 exch sub }
547 dup .5 gt { 1 exch sub } if
549 { .5 exch sub 4 mul dup mul 1 sub }
550 { 4 mul dup mul 1 exch sub }
554 { exch 2 div exch 2 { 360 mul sin 2 div exch } repeat add neg } bd
556 { 2 { 360 mul sin 2 div exch } repeat add neg } bd
558 { dup mul .9 mul exch dup mul add 1 sub } bd
560 { dup mul exch dup mul add 1 sub } bd
562 { exch pop abs neg } bd
568 { abs exch abs 0.9 mul add 2 div } bd
570 { abs exch abs 2 copy add 1 le
571 { dup mul exch dup mul add 1 exch sub }
572 { 1 sub dup mul exch 1 sub dup mul add 1 sub }
575 { dup mul exch dup mul add 1 exch sub } bd
577 { abs exch abs 2 copy lt { exch } if pop neg } bd
579 { /Function defineRes pop } forall
580 /Identity {} /Function defineRes pop
581 _ColorSep5044? StartLoad {
582 /_defaulttransferfunc currenttransfer def
583 /currentcolortransfer where
584 { pop /_defaultcolortransferfuncs [ currentcolortransfer ] def }
586 /concattransferfuncs {
587 [ 3 1 roll /exec load exch /exec load ] cvx
589 /concatandsettransfer {
590 /_defaulttransferfunc load concattransferfuncs settransfer
592 /concatandsetcolortransfer {
595 _defaultcolortransferfuncs aload pop
596 8 -1 roll 5 -1 roll concattransferfuncs 7 1 roll
597 6 -1 roll 4 -1 roll concattransferfuncs 5 1 roll
598 4 -1 roll 3 -1 roll concattransferfuncs 3 1 roll
602 colorplate 1 ge colorplate 4 le and
604 4 colorplate sub index 4 { exch pop } repeat
609 0 index 4 { exch pop } repeat
617 { [/Default /Cyan /Magenta /Yellow /Black /Default /Default /Default]
620 /Default here not { currentdict } if
627 /TransferFunction here
630 currentdict dup length dict
633 1 index /TransferFunction ne { def } { pop pop } ifelse
649 /SA here { setstrokeadjust } if
650 /OP here { setoverprint } if
651 /BG here { setblackgeneration } if
652 /UCR here { setundercolorremoval } if
658 { concatandsettransfer }
659 { aload pop concatandsetcolortransfer }
665 { aload pop setcolortransfer }
669 /sethalftonephase isdefined? { /HTP here { sethalftonephase } if } if
672 { tn5044sethalftone }
678 /_defaulthalftone currenthalftone def
680 Level2? not StartLoad {
684 /SA here { /_sa? xdd } if
685 /OP here { dup /_op? xdd
686 /setoverprint where {pop setoverprint}
693 { concatandsettransfer }
694 { aload pop concatandsetcolortransfer }
699 { aload pop setcolortransfer }
705 { tn5044sethalftone }
713 currentscreen 1 [/HalftoneType /SpotFunction /Angle /Frequency ]
716 /_defaulthalftone exch def
719 dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul
720 exch pop add exch pop
723 dup 2 index le { exch } if pop
724 dup 2 index ge { exch } if pop
726 _ColorSep5044? StartLoad {
730 { _fcs type /arraytype eq
731 {_fcs 0 get /Separation eq
735 _fc aload pop 1 exch sub
736 /setseparationgray where pop begin setseparationgray end
739 1 _fcs 3 get exec _fcs 1 get
740 /findcmykcustomcolor where pop begin findcmykcustomcolor end
742 /setcustomcolor where pop begin setcustomcolor end
758 { _scs type /arraytype eq
759 {_scs 0 get /Separation eq
763 _sc aload pop 1 exch sub
764 /setseparationgray where pop begin setseparationgray end
767 1 _scs 3 get exec _scs 1 get
768 /findcmykcustomcolor where pop begin findcmykcustomcolor end
770 /setcustomcolor where pop begin setcustomcolor end
785 %%BeginFile: pdftext.prc
786 %%Copyright: Copyright 1987-1997 Adobe Systems Incorporated. All Rights Reserved.
787 PDF /PDFText 65 dict dup begin put
788 /initialize { PDFText begin } bd
789 /terminate { end } bd
790 /pdf_has_composefont? systemdict /composefont known def
793 1 index /FID ne 2 index /UniqueID ne and
794 { def } { pop pop } ifelse
807 dup /FontType get 0 eq
809 1 index Type0CopyFont
810 /_pdfType0 exch definefont
827 [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
828 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
829 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
830 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
831 /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
832 /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
833 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
834 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
835 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
836 /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
837 /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
838 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
839 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
840 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF] def
844 counttomark 1 sub -1 0
847 dup type /nametype eq
849 _enc _icode 3 -1 roll put
863 { Encoding exch get }
872 StandardEncoding 256 array copy modEnc
873 _pdfEncodings exch _i exch put
879 dup length 2 add dict
882 1 index /FID ne { def } { pop pop } ifelse
887 /Encoding _pdfEncodings _usePDFEncoding get def
891 _usePDFEncoding -1 eq
896 Encoding 256 array copy
897 modEnc /Encoding exch def
903 trEnc /Encoding exch def
914 systemdict /languagelevel known
915 {systemdict /languagelevel get 2 ge}
932 /_pdfFontStatusString 50 string def
933 _pdfFontStatusString 0 (fonts/) putinterval
936 _pdfFontStatusString 6 42 getinterval
938 _pdfFontStatusString exch 0 exch getinterval
940 { pop pop pop pop true}
950 /CIDFont /Category resourcestatus
953 /CIDFont resourcestatus
963 /_pdfString100 100 string def
973 length dup dup _pdfString100 exch (-) putinterval
974 _pdfString100 exch 1 add dup _pdfString100 length exch sub getinterval
975 2 index exch cvs length
976 add 1 add _pdfString100 exch 0 exch getinterval
995 1 index /CMap resourcestatus
1001 _pdfCIDFontStatus not
1007 { 3 -1 roll pop composefont true}
1013 { findfont definefont true }
1038 _pdfComposeFontName not
1043 2 copy _pdfFontStatus
1044 {pop findfont exch pop true}
1060 /_pdfFaceByStyleDict 4 dict dup begin
1064 /HeiseiMin-W3-83pv-RKSJ-H _pdfFontStatus
1070 /HeiseiKakuGo-W5-83pv-RKSJ-H _pdfFontStatus
1075 /HeiseiMaruGo-W4-83pv-RKSJ-H _pdfFontStatus
1078 /Jun101-Light-RKSJ-H _pdfFontStatus
1084 /RoundSansSerif exch def
1088 /Serif /Ryumin-Light def
1089 /SansSerif /GothicBBB-Medium def
1091 (fonts/Jun101-Light-83pv-RKSJ-H) status
1094 { pop pop pop pop /Jun101-Light }
1097 /RoundSansSerif exch def
1104 /_pdf_Adobe-Japan1-2 (Adobe-Japan1-2) def
1109 length dup dup _pdfString100 exch (-) putinterval
1110 _pdfString100 exch 1 add dup _pdfString100 length exch sub getinterval
1111 3 -1 roll exch cvs length
1112 add 1 add _pdfString100 exch 0 exch getinterval
1114 /_pdfSubSetFontByStyleDict 4 dict dup begin
1117 _pdf_Adobe-Japan1-2 _pdfConcatNames
1125 /HeiseiKakuGo-W5-Adobe-Japan1-2 dup _pdfFontStatus
1133 /HeiseiMin-W3-Adobe-Japan1-2 dup _pdfFontStatus
1154 {exch pop exch pop exch pop}
1157 0 1 _styleArr length 1 sub
1160 _pdfFaceByStyleDict exch 2 copy known not
1168 3 index 3 index 4 2 roll
1177 dup /FontType get 3 eq _wmode 1 eq and
1179 _pdfVerticalRomanT3Font dup length dict copy
1182 /Encoding _basefont /Encoding get def
1185 dup length 2 add dict
1187 {1 index /FID ne {def}{pop pop} ifelse }
1191 /BaseLineAdj _fyAdj def
1194 /Encoding Encoding dup length array copy dup 16#5c /yen put def
1204 dup length exch stringwidth
1205 exch 5 -1 roll 3 index mul add
1206 4 1 roll 3 1 roll mul add
1208 {1 index eq {/_cnt _cnt 1 add dd} if} forall pop
1209 exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop
1215 (0) exch 2 copy 0 exch put
1219 exch 6 index 6 index 6 index 5 -1 roll widthshow
1223 false charpath currentpoint
1224 4 index setmatrix stroke
1236 (0) exch 2 copy 0 exch put
1240 4 index 4 index rmoveto
1251 (0) exch 2 copy 0 exch put
1253 { exch 5 index 5 index 5 index 5 -1 roll widthshow }
1260 /trj { _cx 0 fWModeProc 32 _ax 0 fWModeProc 6 5 roll } bd
1261 /pjsf { trj sfc fawidthshowProc } bd
1262 /pjss { trj _ctm ssc jss } bd
1263 /pjsc { trj jsp } bd
1269 currentpoint 3 2 roll
1278 dup currentpoint 4 2 roll gsave
1280 grestore 3 1 roll moveto
1284 dup currentpoint 4 2 roll
1285 currentpoint gsave newpath moveto
1287 grestore 3 1 roll moveto
1291 dup currentpoint 4 2 roll gsave
1292 dup currentpoint 3 2 roll
1296 grestore 3 1 roll moveto
1304 _ctm currentmatrix pop matrix _tm copy pop
1305 0 _rise _baselineadj add translate _hs 1 scale
1312 _ctm setmatrix newpath
1315 _inT { _tr 3 le {currentpoint newpath moveto} if } if
1317 _Tjdef exch get /_Tj xdd
1320 userdict /$$copystring 2 index put
1323 /iTm { _ctm setmatrix _tm concat 0 _rise _baselineadj add translate _hs 1 scale } bd
1324 /Tm { _tm astore pop iTm 0 0 moveto } bd
1325 /Td { _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto } bd
1326 /TD { dup /_ld xdd Td } bd
1329 dup 1000 div /_fScl xdd
1334 1 index /WMode get 1 eq
1339 load /fWModeProc xdd
1341 /FontType get 0 eq dup _cx 0 ne and
1345 load /fawidthshowProc xdd
1347 dup /BaseLineAdj known
1348 { dup /BaseLineAdj get _fScl mul }
1352 currentpoint iTm moveto
1353 exch scalefont setfont
1355 /TL { neg /_ld xdd } bd
1358 _cx 0 ne _fTzero and
1362 load /fawidthshowProc xdd
1365 /Ts { /_rise xdd currentpoint iTm moveto } bd
1366 /Tz { 100 div /_hs xdd iTm } bd
1367 /Tk { exch pop _fScl mul neg 0 fWModeProc rmoveto } bd
1370 /" { exch Tc exch Tw ' } bd
1373 dup type /stringtype eq
1381 /d1 { setcachedevice /sfc{}dd /ssc{}dd } bd
1382 /nND {{/.notdef} repeat} bd
1386 1 index /Encoding get exch get
1387 1 index /BuildGlyph get exec
1392 GlyphProcs exch get exec
1396 /_pdfBoldRomanWidthProc
1398 stringwidth 1 index 0 ne { exch .03 add exch }if setcharwidth
1402 dup stringwidth 0 0 moveto
1403 2 index true charpath pathbbox
1412 /FontMatrix[1 0 0 1 0 0]def
1413 /FontBBox[0 0 1 1]def
1414 /Encoding cHexEncoding def
1415 /_setwidthProc /_pdfBoldRomanWidthProc load def
1416 /_bcstr1 1 string def
1421 _bcstr1 dup 0 4 -1 roll put
1434 /_pdfVerticalRomanT3Font
1437 /FontMatrix[1 0 0 1 0 0]def
1438 /FontBBox[0 0 1 1]def
1439 /_bcstr1 1 string def
1444 _bcstr1 dup 0 4 -1 roll put
1456 dup dup length 2 add dict
1460 /StrokeWidth .03 0 FontMatrix idtransform pop def
1461 /dummybold currentdict
1464 _pdfBoldBaseFont 8 dict copy begin
1466 /_basefonto exch def
1475 _pdfBoldBaseFont /_setwidthProc /_pdfType0WidthProc load put
1476 {MakeBoldFont} Type0CopyFont definefont
1479 dup /_fauxfont known not
1481 _pdfBoldBaseFont /_setwidthProc /_pdfBoldRomanWidthProc load put
1492 dup /WMode 2 copy known
1499 { pop pop _italMtx }
1510 currentdict readonly pop end
1513 [39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
1514 /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
1515 /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
1516 /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
1517 /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
1518 /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
1519 /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
1520 /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
1521 /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
1522 /guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
1523 /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
1524 /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
1525 /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
1526 /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
1527 /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
1528 /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
1529 /hungarumlaut/ogonek/caron
1531 [1/dotlessi/caron 39/quotesingle 96/grave
1532 127/bullet/bullet/bullet/quotesinglbase/florin/quotedblbase/ellipsis
1533 /dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE
1534 /bullet/bullet/bullet/bullet/quoteleft/quoteright/quotedblleft
1535 /quotedblright/bullet/endash/emdash/tilde/trademark/scaron
1536 /guilsinglright/oe/bullet/bullet/Ydieresis/space/exclamdown/cent/sterling
1537 /currency/yen/brokenbar/section/dieresis/copyright/ordfeminine
1538 /guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus
1539 /twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla
1540 /onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters
1541 /questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
1542 /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
1543 /Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash
1544 /Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave
1545 /aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute
1546 /ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde
1547 /ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute
1548 /ucircumflex/udieresis/yacute/thorn/ydieresis
1551 %%BeginFile: pdfimage.prc
1552 %%Copyright: Copyright 1987-1993 Adobe Systems Incorporated. All Rights Reserved.
1553 PDF /PDFImage 38 dict put
1554 PDF /PDFIVars 20 dict put
1555 PDF /PDFImage get begin
1556 /initialize { PDFImage begin } bd
1557 /terminate { end } bd
1558 /nulldict 0 dict def
1559 /gv { PDFIVars exch get } bd
1560 /pv { PDFIVars 3 1 roll put } bd
1561 /BI { save /savelevel exch pv mark } bd
1562 /EI { /savelevel gv restore } bd
1565 %%BeginFile: pdfimg2.prc
1566 %%Copyright: Copyright 1987-1993 Adobe Systems Incorporated. All Rights Reserved.
1567 PDF /PDFImage get begin
1570 5 counttomark 2 idiv
1579 /ImageMatrix [ Width 0 0 Height neg 0 Height ] def
1580 /ImageMask here { not } { true } ifelse
1581 { /ImageMask false def } if
1582 ImageMask not { ColorSpace setcolorspace } if
1583 /Intent here { ri } if
1584 /Decode here { pop } {
1589 currentcolorspace 0 get /Indexed eq {
1590 0 2 BitsPerComponent exp 1 sub
1592 mark currentcolor counttomark
1593 dup 2 add 1 roll cleartomark
1600 /DataSource here { pop } {
1603 dup type /arraytype eq { length } { pop 1 } ifelse
1604 1 sub 0 1 3 -1 roll {
1606 dup type /arraytype eq {
1609 dup null eq { pop } { exch } ifelse
1611 Filter dup type /arraytype eq
1612 { exch get } { exch pop } ifelse
1617 /DataSource exch def
1620 /ImageMask here not { false } if
1621 { sfc imagemask } { image } ifelse
1624 { dup flushfile closefile }
1632 currentdict readonly pop
1636 currentdict readonly pop
1638 /currentpacking where {pop setpacking}if
1639 PDFVars/InitAll{[PDF PDFText PDFImage]{/initialize get exec}forall initgs 0 Tr}put
1640 PDFVars/TermAll{[PDFImage PDFText PDF]{/terminate get exec}forall}put
1641 PDFVars begin PDF begin PDFVars/InitAll get exec
1643 %%BeginResource: font TimesNewRoman,Bold
1646 % Begin encoding-delta
1647 [/N8/Times-Bold 1 TZ
1648 % End encoding-delta
1650 %%BeginResource: font TimesNewRoman
1653 % Begin encoding-delta
1654 [/N6/Times-Roman 1 TZ
1655 % End encoding-delta
1657 %%BeginResource: font TimesNewRoman,Italic
1660 % Begin encoding-delta
1661 [/N10/Times-Italic 1 TZ
1662 % End encoding-delta
1664 %%BeginResource: font CourierNew
1667 % Begin encoding-delta
1669 % End encoding-delta
1670 PDFVars/TermAll get exec end end
1675 userdict /pgsave save put
1676 PDFVars begin PDF begin PDFVars/InitAll get exec
1688 180 657.12 252 62.88 re
1696 (Stanford University)Tj
1700 (Computer Science Department)Tj
1704 (CS140: Operating Systems)Tj
1714 (A. Arpaci-Dusseau)Tj
1728 (In this handout, we give a brief overview of the behavior of the Solaris\
1729 2.6 Time-Sharing \(TS\))Tj
1733 (scheduler, an example of a )Tj
1738 (Multilevel Feedback Queue )Tj
1743 (scheduler. The information in this hand-)Tj
1747 (out, in conjunction with that given in Lecture, should be used to answer\
1748 Problem 4 of the first)Tj
1752 (assignment. The end of this document specifies in more detail which asp\
1753 ects of the Solaris sched-)Tj
1757 (uler that you should implement. )Tj
1762 (Multilevel Feedback Queue Schedulers)Tj
1767 (The goal of a multilevel feedback queue scheduler is to fairly and effic\
1768 iently schedule a mix of)Tj
1772 (processes with a variety of execution characteristics. By controlling h\
1773 ow a process moves)Tj
1777 (between priority levels, processes with different characteristics can be\
1778 scheduled as appropriate.)Tj
1782 (Priority-based schedulers attempt to provide a compromise between severa\
1783 l desirable metrics)Tj
1787 (\(e.g., response time for interactive jobs, throughput for compute-inte\
1788 nsive jobs, and fair alloca-)Tj
1792 (tions for all jobs\). )Tj
1796 (The queues in the system are ranked according to priority. Processes wai\
1797 ting in higher priority)Tj
1801 (queues are always scheduled over those in lower priority queues. Proces\
1802 ses at the same priority)Tj
1806 (are usually scheduled in a round-robin fashion.)Tj
1810 (Such schedulers tend to be )Tj
1820 (in order to support interactive processes. That is, a higher)Tj
1824 (priority process is immediately scheduled if a lower priority process is\
1825 running on the CPU. )Tj
1830 (Scheduling in Solaris)Tj
1835 (The Solaris operating system is based on Unix System V Release 4 \(SVR4\)\
1840 (Solaris, as in all SVR4-based schedulers, is performed at two levels: cl\
1841 ass-independent routines)Tj
1845 (and class-dependent routines. Class-independent routines are those that\
1846 are responsible for dis-)Tj
1850 (patching and preempting processes \(the low-level mechanisms\). Class-d\
1851 ependent routines are)Tj
1855 (those that are responsible for setting the priority of each of its proce\
1856 sses \(the high-level policy\). )Tj
1860 (By default, Solaris supports three scheduling classes: time-sharing \(TS\
1861 \), real-time \(RT\), and sys-)Tj
1865 (tem \(SYS\). Users with root privileges can easily implement and add ne\
1866 w scheduling classes by)Tj
1870 (adhering to a predefined interface. Each scheduling class gives each of\
1871 its processes a priority,)Tj
1875 (the range of which is shown below.)Tj
1881 PDFVars/TermAll get exec end end
1882 userdict /pgsave get restore
1888 userdict /pgsave save put
1889 PDFVars begin PDF begin PDFVars/InitAll get exec
1903 (As long as a user has the correct privileges, he or she can submit jobs \
1904 to any scheduling class.)Tj
1908 (\(See the man pages for )Tj
1918 ( on any machine running Solaris for information on how to sub-)Tj
1922 (mit jobs to different scheduling classes; however, since you probably do\
1929 (t have root privileges)Tj
1933 (on your machine, you won)Tj
1939 (t be able to do much.\) By default, jobs are executed in the same)Tj
1943 (scheduling class as the parent process that forked the job. Since your \
1944 shell is running in the time-)Tj
1948 (sharing class, all of your jobs run by default in the time-sharing class\
1953 (To see the scheduling class of each process in the system, run )Tj
1979 (is the flag that)Tj
1983 (shows the scheduling class\). The fourth column shows the scheduling cl\
1984 ass of the running pro-)Tj
1988 (cess. Most jobs will be running in the TS class, with a few \(owned by \
1989 root\) running in the SYS)Tj
1998 (elaine1:~> ps -edafc)Tj
2002 ( UID PID PPID CLS PRI STIME TTY TIME CMD)Tj
2006 ( root 0 0 SYS 96 Aug 01 ? 0:00 sched)Tj
2009 ( root 1 0 TS 58 Aug 01 ? 1:06 /etc/init -)Tj
2012 ( root 2 0 SYS 98 Aug 01 ? 0:02 pageout)Tj
2015 ( root 3 0 SYS 60 Aug 01 ? 15:22 fsflush)Tj
2019 ( root 245 239 TS 59 Aug 01 ? 0:00 ttymon)Tj
2023 ( root 181 1 TS 48 Aug 01 ? 0:00 sendmail -q15m)Tj
2026 ( root 239 1 TS 59 Aug 01 ? 0:00 sac -t 300)Tj
2029 ( root 96 1 TS 58 Aug 01 ? 0:00 rpcbind)Tj
2032 ( root 125 1 TS 59 Aug 01 ? 0:32 syslogd)Tj
2037 (In this document, we only discuss the Solaris time-sharing \(TS\) class.\
2038 Note the priorities of each)Tj
2042 (of the processes, as listed in the fifth column.)Tj
2047 (Class Independent Functionality)Tj
2052 (The class independent routines arbitrate across the scheduling classes. \
2053 This involves three basic)Tj
2057 (responsibilities.)Tj
2064 (The process with the highest priority must be dispatched, and the state \
2065 of the preempted pro-)Tj
2077 (The class independent functions must notifying the class-dependent routi\
2078 nes when the state of)Tj
2082 (its processes changes \(for example, at creation and termination, when a\
2083 process changes from)Tj
2087 (blocked to runnable, or runnable to blocked, and when a 10ms timer expir\
2092 (Scheduling Class)Tj
2123 (Range of Priorities for Scheduling Classes in Solaris)Tj
2125 188.64 628.32 0.48 91.44 re
2127 296.64 627.84 0.48 92.4 re
2129 422.88 628.32 0.48 91.44 re
2167 PDFVars/TermAll get exec end end
2168 userdict /pgsave get restore
2174 userdict /pgsave save put
2175 PDFVars begin PDF begin PDFVars/InitAll get exec
2192 (Processes must be moved between priority queues in the class independent\
2193 data structures, as)Tj
2197 (directed by its scheduling class, and must be moved between blocked and \
2203 (Time-Sharing Scheduling Class)Tj
2208 (The Time-Sharing scheduler in Solaris is an example of a multi-level fee\
2209 dback queue sched-)Tj
2213 (uler. A job begins at priority 29. Compute-bound jobs then filter do\
2214 wn to the lower priorities,)Tj
2218 (where they are scheduled less frequently \(but for longer time-slices\) \
2219 and interactive jobs propa-)Tj
2223 (gate to the higher priorities \(where they are scheduled whenever they h\
2224 ave work to perform, on)Tj
2228 (the assumption that they will soon relinquish the processor again\). In\
2229 the TS scheduler, the prior-)Tj
2233 (ity of a process is lowered after it consumes its allocated time-slice. \
2234 Its priority is raised if it has)Tj
2238 (not consumed its time-slice before a )Tj
2243 (starvation interval )Tj
2258 (The durations of the time-slices, the changes in priorities, and the sta\
2259 rvation interval are specified)Tj
2263 (in a user-tunable dispatch table. The system administrator \(or anyone \
2264 with root privileges again\))Tj
2268 (can change the values in this table, thus configuring how the time-shari\
2269 ng scheduler manages its)Tj
2273 (jobs. While this has the noble intention of allowing different systems \
2274 to tune the scheduler to bet-)Tj
2278 (ter handle their workloads, in reality no one really knows how to config\
2279 ure these tables well.)Tj
2283 (Therefore, we will focus on the default dispatch table. )Tj
2287 (To see how this table is configured in your system, run)Tj
2292 (dispadmin -c TS -g)Tj
2297 (You should see something like that in Table 2. \(Looking at the man pag\
2298 es on dispadmin and)Tj
2302 (ts_dptbl may also be helpful\). You will see one row for every priority\
2303 in the scheduling class:)Tj
2307 (from 0 to 59. For each priority, there are five columns: )Tj
2320 ( Length of the time-slice \(in the actual table, this value is specified\
2325 (clock ticks; in the output from running dispadmin, the value is specifie\
2326 d in units of 1ms\).)Tj
2339 ( Priority level of the new queue on which to place a process if it exc\
2344 (quantum. Normally this field links to a lower priority time-sharing\
2358 ( the priority to change to \(generally a higher priority\) when the job \
2363 (sleeping \(i.e., from the blocked queue\) if ts_dispwait exceeds ts_max\
2364 wait \(see next entry\).)Tj
2377 (: A per process counter,)Tj
2387 (is initialized to zero each time a process)Tj
2391 (is placed back on the dispatcher queue after its time quantum has e\
2392 xpired or when it is)Tj
2396 (awakened \(ts_dispwait is not reset to zero when a process is preempt\
2397 ed by a higher prior-)Tj
2401 (ity process\). This counter is incremented once per second. If a \
2408 (s ts_dispwait value)Tj
2412 (exceeds the ts_maxwait value for its level, the process)Tj
2418 (s priority is changed to that indicated)Tj
2422 (by ts_lwait. The purpose of this field is to prevent starvation.)Tj
2435 ( the priority to change to \(generally a higher priority\) if the starva\
2436 tion timer expires)Tj
2440 (before the job consumes its time-slice \(i.e., if ts_dispwait exceeds ts\
2443 PDFVars/TermAll get exec end end
2444 userdict /pgsave get restore
2450 userdict /pgsave save put
2451 PDFVars begin PDF begin PDFVars/InitAll get exec
2463 103.44 80.88 405.12 630.24 re
2470 (# ts_quantum ts_tqexp ts_slpret ts_maxwait ts_lwait #PRIORITY LEVEL \
2475 (200 0 50 0 50 # 0 )Tj
2478 (200 0 50 0 50 # 1 )Tj
2481 (200 0 50 0 50 # 2 )Tj
2483 (200 0 50 0 50 # 3 )Tj
2485 (200 0 50 0 50 # 4 )Tj
2487 (200 0 50 0 50 # 5 )Tj
2489 (200 0 50 0 50 # 6 )Tj
2491 (200 0 50 0 50 # 7 )Tj
2493 (200 0 50 0 50 # 8 )Tj
2495 (200 0 50 0 50 # 9 )Tj
2499 (160 0 51 0 51 # 10 )Tj
2501 (160 1 51 0 51 # 11 )Tj
2503 (160 2 51 0 51 # 12 )Tj
2505 (160 3 51 0 51 # 13 )Tj
2507 (160 4 51 0 51 # 14 )Tj
2509 (160 5 51 0 51 # 15 )Tj
2511 (160 6 51 0 51 # 16 )Tj
2513 (160 7 51 0 51 # 17 )Tj
2515 (160 8 51 0 51 # 18 )Tj
2517 (160 9 51 0 51 # 19 )Tj
2521 (120 10 52 0 52 # 20 )Tj
2523 (120 11 52 0 52 # 21 )Tj
2525 (120 12 52 0 52 # 22 )Tj
2527 (120 13 52 0 52 # 23 )Tj
2529 (120 14 52 0 52 # 24 )Tj
2531 (120 15 52 0 52 # 25 )Tj
2533 (120 16 52 0 52 # 26 )Tj
2535 (120 17 52 0 52 # 27 )Tj
2537 (120 18 52 0 52 # 28 )Tj
2540 (120 19 52 0 52 # 29 )Tj
2544 (80 20 53 0 53 # 30 )Tj
2546 (80 21 53 0 53 # 31 )Tj
2548 (80 22 53 0 53 # 32 )Tj
2550 (80 23 53 0 53 # 33 )Tj
2553 (80 24 53 0 53 # 34 )Tj
2556 (80 25 54 0 54 # 35 )Tj
2558 (80 26 54 0 54 # 36 )Tj
2560 (80 27 54 0 54 # 37 )Tj
2563 (80 28 54 0 54 # 38 )Tj
2566 (80 29 54 0 54 # 39 )Tj
2568 (40 30 55 0 55 # 40 )Tj
2571 (40 31 55 0 55 # 41 )Tj
2574 (40 32 55 0 55 # 42 )Tj
2577 (40 33 55 0 55 # 43 )Tj
2580 (40 34 55 0 55 # 44 )Tj
2582 (40 35 56 0 56 # 45 )Tj
2584 (40 36 57 0 57 # 46 )Tj
2586 (40 37 58 0 58 # 47 )Tj
2588 (40 38 58 0 58 # 48 )Tj
2591 (40 39 58 0 59 # 49 )Tj
2593 (40 40 58 0 59 # 50 )Tj
2596 (40 41 58 0 59 # 51 )Tj
2598 (40 42 58 0 59 # 52 )Tj
2600 (40 43 58 0 59 # 53 )Tj
2602 (40 44 58 0 59 # 54 )Tj
2604 (40 45 58 0 59 # 55 )Tj
2606 (40 46 58 0 59 # 56 )Tj
2608 (40 47 58 0 59 # 57 )Tj
2611 (40 48 58 0 59 # 58 )Tj
2615 (20 49 59 32000 59 # 59)Tj
2619 (Table 2: Default Solaris Time-Sharing Dispatch Table )Tj
2621 PDFVars/TermAll get exec end end
2622 userdict /pgsave get restore
2628 userdict /pgsave save put
2629 PDFVars begin PDF begin PDFVars/InitAll get exec
2643 (In this table, the priority of jobs ranges from a high of 59 down to 0.\
2644 Time-slices begin at 20ms)Tj
2648 (at the highest priority and gradually increase in duration up to 200ms a\
2649 t the lowest priorities.)Tj
2653 (Generally, the priority of a process decreases by 10 levels after it con\
2654 sumes its time-slice; the pri-)Tj
2658 (ority of a process is increased to 50 or above when the starvation timer\
2669 (For each job in the TS class, the following data structure is maintained\
2676 (ve removed a few of)Tj
2680 (the fields for simplicity\):)Tj
2689 ( * time-sharing class specific thread structure)Tj
2697 (typedef struct tsproc {)Tj
2709 ( /* time remaining in quantum */)Tj
2713 ( long ts_dispwait; /* number of seconds since */)Tj
2717 ( /* start of quantum \(not reset */)Tj
2720 ( /* upon preemption\) */)Tj
2724 ( pri_t ts_pri; /* priority \(0-59\) */)Tj
2728 ( kthread_t *ts_tp; /* pointer to thread */)Tj
2732 ( struct tsproc *ts_next; /* link to next tsproc on list */)Tj
2736 ( struct tsproc *ts_prev; /* link to previous tsproc */)Tj
2745 (The kthread_t structure tracks the necessary information to context-swit\
2746 ch to and from this pro-)Tj
2750 (cess. This structure is kept separate from the time-sharing class in or\
2751 der to separate the mecha-)Tj
2755 (nisms of the dispatcher from the policies of the scheduler. )Tj
2759 (There are seven interesting routines in the TS class:)Tj
2768 (ts_enterclass\(thread *T\):)Tj
2773 ( called when a new thread is added to the TS class.)Tj
2777 (It initializes a tsproc structure for this process and adds it to the li\
2787 (ts_exitclass\(thread *T\):)Tj
2792 ( called when the thread terminates or exits the class.)Tj
2796 (The tsproc structure is removed from the list of processes.)Tj
2805 (ts_tick\(thread *T\):)Tj
2810 ( called once every 10ms with a pointer to the currently running thread.)Tj
2814 (The ts_timeleft variable of the running thread is decremented by one. I\
2815 f ts_timeleft goes to)Tj
2819 (zero, then its new priority is calculated according to the value of ts_t\
2820 qexp in the table, its time-)Tj
2824 (slice is reset, and ts_dispwait is cleared; the thread is then added to \
2825 the back of the appropriate)Tj
2829 (priority queue and a new job is scheduled.)Tj
2842 ( called once a second to check the starvation qualities of each job.)Tj
2846 (The routine increments the ts_dispwait counter of every process in the c\
2847 lass \(even those that)Tj
2851 (are blocked\) by one. If the job is on the ready queue \(i.e., the job\
2852 is neither running nor)Tj
2856 (blocked\), then if its ts_dispwait exceeds ts_maxwait, the priority and\
2857 the ts_dispwait value of)Tj
2861 (this process are reset \(but not ts_timeleft\). Note that this may invo\
2862 lve rearranging the priority)Tj
2875 (ts_sleep\(thread *T\):)Tj
2880 ( called when the thread blocks \(e.g., due to I/O or synchronization\). \
2885 (The TS routine does not need to do anything in these circumstance. Howe\
2886 ver, the dispatcher,)Tj
2888 PDFVars/TermAll get exec end end
2889 userdict /pgsave get restore
2895 userdict /pgsave save put
2896 PDFVars begin PDF begin PDFVars/InitAll get exec
2910 (or class-independent routines, must add the thread to the blocked queue \
2911 and schedule a new)Tj
2923 (ts_wakeup\(thread *T\): )Tj
2928 (called when the blocked thread becomes ready. )Tj
2932 (If the ts_dispwait value associated with this process is greater than th\
2933 e value of ts_maxwait in)Tj
2937 (the dispatch table, then the priority of the process is set to that spec\
2938 ified by ts_slpret, its time-)Tj
2942 (slice \(ts_timeleft\) is reset, and ts_dispwait is cleared. If the prio\
2943 rity of this job is less than that)Tj
2947 (of the running job, then the newly awoken job is added to the back of it\
2948 s priority queue; other-)Tj
2952 (wise, it preempts the currently running job.)Tj
2961 (ts_preempt\(thread *T\): )Tj
2966 (called when the thread is preempted by a higher priority thread.)Tj
2970 (The preempted thread is added to the front of its priority queue.)Tj
2980 (The Solaris time-sharing scheduler approximates fair allocations by decr\
2981 easing the priority of a)Tj
2985 (job the more that it is scheduled. Therefore, a job that is runnable re\
2986 latively infrequently remains)Tj
2990 (at a higher priority and is scheduled over lower priority jobs. However\
2991 , due to the configuration)Tj
2995 (of the default dispatch table \(i.e., the starvation interval is set to \
2996 zero\), you will note that the prior-)Tj
3000 (ity of every process is raised once a second, regardless of whether or n\
3001 ot it is actually starving.)Tj
3005 (Thus, the allocation history of each process is erased every second and \
3006 compute-bound processes)Tj
3010 (tend to acquire more than their fair share of the resources. )Tj
3014 (This behavior is illustrated in Figure 1 for three competing jobs that r\
3015 elinquish the processor at)Tj
3019 (different rates while waiting for I/O to complete: a )Tj
3029 ( job that rarely relinquishes the CPU, a)Tj
3039 ( job that does so more frequently, and a)Tj
3049 ( job that often relinquishes the CPU. The fig-)Tj
3053 (ure shows a typical snapshot over a five second execution interval. As \
3054 described, each second the)Tj
3058 (priority of all three jobs is raised to level 50 or higher. As a job ex\
3059 ecutes and consumes its time-)Tj
3063 (slice, its priority is lowered about ten levels Since the coarse job ru\
3064 ns more frequently, it drops in)Tj
3068 (priority at a faster rate than the other two jobs.)Tj
3071 160.08 103.92 288 207.12 re
3074 288 0 0 207.12 160.08 103.92 cm
3079 /ColorSpace /DeviceGray
3081 /DecodeParms [null <</K -1
3083 /Filter [/ASCII85Decode /CCITTFaxDecode ]
3085 -D5]FA8n>d7gp!_JX[(R5">e_j!0;@j@9Z7"XAU2d2e_p*"\,c3#Ka/8'jaH&a,4-
3086 #\85\,N&M_PW@[i'VW`2TgqY6%"m9(Eif#,+NhRZU!,MtGK`'RHRO<b[!s=YUU#(J
3087 HNcCf"dN_L%^ZKa<<t)XOou=D$_Tb@q&^j>Jclh`+B1kB";)XU5`d7B!_EFsYEA<>
3088 W";hc#V..7_C0RG,M4,<#UTrL":JHNs8VkBJ)gS/pdI^NJ,^T3$iUPcIQulmn,>E?
3089 503?pi.6CU&2*jd%t&=]^]+FVoEZ5KJ'@m'?SB1PJUdA8m4e5Q":.5H#_2:^%N/<b
3090 Boi;HarV[V%QOEHY@8%d`s<7SJ`,$<"]<3+71nbmJ5eCZ[^!jpnco9ss8W-!ON7WQ
3091 oLG;RVt>f'pf!H3=[S;G<M&b"d!50g,!"op!X^VP&1SpQ@lQadcp^1%$aAZ"a,&q9
3092 T4E62O)t[039UtX(GPb0LRT,'6-$fn)+25l)dPWs3<cX#2;S8L"<WH\1'!hbgk6[-
3093 ONNX!+JIa.s/G?!j-2RE5En.'jnW'W+B/Un$iH';$9ocnK#&$i.E[.5K)#BGs4Cd*
3094 rUTjcrr:=i&-&m?&GZ8RFs$4&6#7GKJ,'M:_M98.%3HgGEpuL[,+nF9Q"RCX'V-U&
3095 F,j:K*s;q%"X!br,,b2hj8\fis83JL^AgHW5QA!Q3t6rb+-9\2K4"ZX?4\B&LFLBO
3096 #DTV`LcmGDK?30F`ucDo)V.l/kdiC&iO(!r6!$TbK!GfV<cClmIReu%n:D]OLuo!'
3097 _AXhJ*>-:'6g-A!n+)8(a8a25&G'O>A*+jmo?7,0pqB3^I#glAa5hHbrunC*s'LhS
3098 I"*Poa'aH'p\@1:3QM0tU%'5.aUabgr."a]are\(."B;6r'rI@s7o%^J!;s'j8Y2?
3099 p%\?<s2lG`q]@5+a8c2>U*0G+I)H!Es8Dpnr]g3Gs8PIG3J[Y7s6PV-PW<76s,[3Q
3100 q"]^FargZ\+"2-L+92B)Ld.%E0_rchs8N$HIin^jreJP<5!T(.p-g(G+3-A@s-,b@
3101 q"]^Fs8VG5U&8p1r-tF`r]Xc^O8o#Ck9'0`L[kEErKmdb?]US%J,^KBrr4Br*97(u
3102 ;#!<rJ$6o:5Q3nD"oXZG6\5H/6hstej,^MPNelZ%n\fm07Bagn&"%b)qa*N34SUH,
3103 s7-+5O8gQ;*&U:_JUHG+X8gC(6\H0$&^_RT\X[s3L][!`)R,*K,90r1rt,g`k9%Sd
3104 jD`h9*/#;b*edLAs8W,hs3<_L^23i4(]WL;+9.i8JK@9Fs!-Fkne&qB&7H:Qs8VmL
3105 s!WBs@K6Afs1%k"TL]%^-9mQj6hq!PTLL%$J,^i[j8]/TA,hViPWt5ps8S9)a78^3
3106 Ir"t3s!Btl&-$ADQ9Y0Eq"XJGs7nDIIjfdi#P4#U5Q?ohnc.bQ?hn43O8kG/O,s>?
3107 9Re/)a?fk(J,^i[jU_@rr`K3\s5W.V3<0$S1&ptrIj#'sr."bF8,rV4+92B3L]</p
3108 s8W,SJ)o)h5PY9YWC-^craGj,nc/Xhs8R+ps8W"Hs3uPiNcG*s_uKbu&-(l.5QCc`
3109 mQ^aOaC1DW-uad\,KJ<6s7lW8+Sgf6/ie^XA,\cFs8$*n6i[2`r]a@JWXg1!Eh"CR
3110 Pi['QnlaJ?.EZ\+k*^<rV%->`%T)6s:ur0`jU^Si3X?oj#cI5$NZo<../AYu+e3LW
3111 `'f!*NZjP$8,R6(+91mK+7^D$s,RQe6BC1,s8W*k+#\B>LQD!#^]006deAlbj=(%i
3112 cMs!Ar]n*qr"2;\3t)[MO8o7[s7hZ9.0'>Hs,Y*JM#[M@q&'+_j='(;s8W-!kTYf[
3113 J&hS=a6A`&?fWWqq1o"%nhL1E+J=5as8W,sKcg5Bs7,ft&cBQHs5[\br^)W3O8o7[
3114 rb24WEW?'Zcm'(s$97/i0`F<97R-q6'G(6)0L,U;YN.,23<0$=m=$:II)GaZq&'*^
3115 IR9&]O8n8p5QCaC$ND1fJ,fPhne?R-q1nM7s8U.>ne`J#s+C6'+34E]s+GCl+#*`T
3116 n,NFK.0'=/_#D+Kr]WRHs851^6BC7Nr-eV@2$8oF3[:@[,G7Vm3CB#k6^0PQ9?8-p
3117 @"23I7!(peF@S`@7mqGh7!(peF;OuPLkrE*"7eDg"EFJ>K0]J:s8W)W"lnZ$T^dU:
3118 ZV[HN'sIQ#N=g8<+G/+;$?DZ7.E@QgJd@Bg.IhEf,Da_HOD>h(>^$bl&;%u<%un@(
3119 s7l`VO6@dCc(E6i8,d69&7:+'N.8oaO.:^j%>0K:=9&<\j?^WjoF):\r]WSuru]1/
3120 r8[h:&7>J;j5`MHs8O/`5lZKRs8I$<nK7f2na[g]"onU`O<B%ns8P(Ypk0I`s7lC$
3121 EW?'Za:LSp"onUmJ,^Vjs7-"0^]4>T&3o4Ts8W'0?iU0+j8]/ZrX`H:s8V-Zs8W'0
3122 ?iU0+j8]/ZrX`H:s8RoTs8W'd*$E#rnc/.Zs,[(Es8G<(na[g]s8VWm&-)\0r]cM!
3123 Lu^l$C12AniFcIa=lC(c3"u<7a>isM*)_:ds79mDnbu!BO,nejYlFWNs8W-!s8W-!
3124 s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r.a!Ha20:q*@LkCEA,BG%R?\-"Tsi7
3125 *.^BRs8Kq9nc/+k&b60Z9G8Cu,T=`S_4ZE+*saC5j$=Z-5lr:hO?eWs7i_^E*9\N$
3126 kTc.KUS,XnNfa:;#bf\";l'bt8Q(TU+^lO5PrMBf8<8'$W3Q35]);`X2NTg8#,i@b
3127 O>@?#^EJ[U_i@)4F)f5C5i`hR,lE[-(dbk4ni*(.f.:sTX/"WS<L!cm;R6,BNpo=H
3128 cm/lD@K&d5"<`^h"G$]m@#4S#Qrk`sEe=/u5Q3g$)um/BYd^8r`rGfYO.]%a:[^Q"
3129 !r:&Zi5#[aL]7Vkpb5$c!X'SN&E).PJfr4s295Ga`*`WH+9~>
3140 PDFVars/TermAll get exec end end
3141 userdict /pgsave get restore
3147 userdict /pgsave save put
3148 PDFVars begin PDF begin PDFVars/InitAll get exec
3162 (The impact of this policy on the relative execution times of the three a\
3163 pplications is shown in Fig-)Tj
3167 (ure 2. Because the coarse application acquires more CPU time, it finish\
3168 es its work earlier than the)Tj
3172 (other applications, even though all three jobs require the same amount o\
3173 f time in a dedicated envi-)Tj
3182 (Project Requirements)Tj
3187 (For your project, you need to implement code that is similar in function\
3188 ality to the Solaris TS)Tj
3192 (scheduler, but your code does not have to be structured in the same way.\
3193 Implement your code in)Tj
3197 (whatever manner you find easiest when interfacing with the already exist\
3198 ing Nachos code. )Tj
3202 (Specifically, you are not required to separate the class-independent and\
3203 class-dependent schedul-)Tj
3207 (ing functionality. You do not need to support multiple scheduling class\
3208 es. You can implement)Tj
3212 (any routines that you feel are necessary, not just the seven functions w\
3213 e specifically listed. You)Tj
3217 (can pass any parameters that you find helpful.)Tj
3221 (However, it is important that your approach be table-driven, with a user\
3222 -configurable dispatch)Tj
3226 (table. Your table should be initialized to the default values in Solari\
3227 s 2.6, but you may also want)Tj
3231 (to experiment with different configurations. To demonstrate the functio\
3232 nality of your scheduler,)Tj
3236 (you may want to print out the change in priorities of several different \
3237 competing processes, as in)Tj
3244 150.96 432 315.12 225.12 re
3247 315.12 0 0 225.12 150.96 432 cm
3252 /ColorSpace /DeviceGray
3254 /DecodeParms [null <</K -1
3256 /Filter [/ASCII85Decode /CCITTFaxDecode ]
3258 -D5T@*#T_R#j@>3`c+g8+WV0Tfc1\<_$Ju0_BXXE`^^,YNXB)_TA[R+A:+?CLE*3A
3259 cXe*VS9']+%s"dE_M87$4L*'"XLs09$?CnbQ$-HLT#"/]6"dKqK-ifZ5c>5sGST*A
3260 ('rsj";T%>n;8=KHk8UMj2""b-9Z<61Ch;jHNX\,"MoRQK%C,5ru2E%fMDO."onU]
3261 +Gu3`s1ub9s,ZeB^[OLe&3u1=s6("HM"grK#S\sY"mD"so%s^+Qf%]P?fV/rK.?p#
3262 +Ft&`5Q?BBE.8u%$H3'Q`#qF.A+CK[83)GJG\.lJa!%Pi]`\of!lcDINe/_LOL_]m
3263 &!;pG@$c]Ls8W-!s8W-!s8W-!q=Bu+i<ST,Jcn<6;#gM\C_RE#j;,QP/sd`E$c#&J
3264 *eL)L>`VE4_;c]*Bb0DMM!-%T7!Xl/FGMK.69hF'kn1c$V^i+[LEZ/f4es=0Jgc$"
3265 TKs19:e2-pJj=la*g7EP6jgsX?P&QdO0/kpj'fuadR0WVrK69;4jYG[j.JpS>f3A(
3266 ,DM:660o.*j5@`^U#<`rTTYD?i].Et-ZFZ'+M#9hVNU`D77'>,BZOg+[iku9j>*GQ
3267 'KSVtLE-FMrV6U-#cAei.Re%_4@0#?4bB2ELH+JfLD68n.hFuP@0Al`J(NW\TKt8=
3268 jEqM9q&]_T#`:oC;kX@d-+2)cI"21rlnK)@c4U\SJgc,_?[r+5q?16r8KnS\TXnZQ
3269 =8p,\6f\*<fRL_j&1/P'5u#9?L\ull.ToN0A5UtW!X-Xd,REfq[=SP"+IYm1=Q(fO
3270 %<t_1'LAENW?_``;F+s07fqf1MKhQP&17o=Oj4M*_%\msq(^$ufgCWlPEn5L.gR13
3271 pCr2bVs,l6%tXsMJrfrJ&Q>?(Ud87/_(c7D8&9Zss00M:V1Kr9TuAUerWqQAJ"T7Q
3272 Jd<KN@9[<'&4<*\+9,h!FrLoN5>(:?ThEf^I"jmD^6;tZ6'aJr&,sQ[8VGVbYK,UT
3273 OouFHEMWG9CM]C&5nssK/dehE5ns!F&B#cJKNICb#V_E,Ml#I06'^AZ3Zs'P#X:r@
3274 &OV3`("E?lpdpA8&jZSBr<,ENGo[)#64uoWI4088q?\Z$oA5Zs";F0.7mR:#++bn]
3275 LXKT[$kC69s6(d9aUXM%`->K$#rf4Y<qI&uOAD`>V;S_6J!%WR4X(-KUd#-_2C,8C
3276 JZg:=+o**8aS.t34h*cg[A?H9J?K7\5qHu,'GZn#5nH/6k^!f*i?AMrTY2gIHkklK
3277 \Ju(C:dGVbJL%p*+I-@<Q$P]I'YPthdKC-Q^rZj)Jf-Ei3%ND`&>T5f#U"opJd;oT
3278 4:II*";!&H:cO-%";$WeJHR2&Uk0a[KQ6XI$%<FR$QqbDoR[3tLcllB5n'35`e"I-
3279 6^0Ug"HYnNW8#Zb!YBqqVp\*^qETWDK)HgD"@kaT6`$Ri+]6tA80C9[&4$FB"o:do
3280 */<6^+@-8uVno1A&Po>k+JdU6d7NhZ#S;Y#s5q7N+IB9oNg(YPD-rre"<eB(=KqFr
3281 ,WY41TRmjo"An1jKEr]P#_2Ju5qXD15lqF08.\.KOTKa!"aERmgRt@o,D)Hh&4$F]
3282 i%*4]&:t15*<]488e<KP_Ee;;+8ufo64dJu8s!/8O<B3!L3sa#!XL)!TQ*O+#V>eE
3283 O?jK*=X!Eg"??CG!XNl0&d/c!$F/"b+JYPc&4!2rjD\%nU(B]g5_026S-=./,Sq\W
3284 SKNM/*$C%/Jd<drJ?K7^#Z+Xe/0I=E!XM+qo10E9#V;)65p/R;(Z>LK;9t[s";8aG
3285 +B/pn"eEdUL99\gUcgImC')fh+ID:T+Fse`X8#+DYU#<$G(n#X5ls<'cp\F3:k)"Y
3286 5nVIL1,s##"G-tFNYEUi!rmoZ+UB7F_FPf83'ef$=`L5C+[KLfdKgD;&B#1$dRYYi
3287 &G1Q>M!-BKKFf7m&f_c/(%jirNY2I+TY2T^5nAX3#U/t.O<@,>8HK5_P!K0AJHX'X
3288 00pnFWX'70JHX'X0*DhP"Wp#U&2-Qc82!73#U"oP&d`kTNa[0(63quB+YQBUJg6r%
3289 ":-:q8HK//qPZ[jTRd4[HmTg)JdWa2)PFT/59lhQNg%Ckq4!4i7QCpOaDHr)CiUJ)
3290 OP:b0d/F"Elp(O?s8O3R)\%&o80Fl71uQ_J:(IIbLHH-tZClrB)E:/G%9J3]TRd^E
3291 MKBCtF:h9PMKgO<4<R%>,+hHG-QOQRF\0qo3XmJ:ddXml^Bc"PJNs1O?6;Kr?`3o#
3292 lLGC&GVG#&L62/eI`#TeCc3+Qp)=,?2B*/LAfD2.6Qe+=*/7;Pj,QBUa>AoKq&Hmu
3293 Km3@RD`E`Z=QOg08&D@..Lfd^Ab2<1i.<2H8.\J4r/ZF85ob=[!XXOr&b&(?YYW@%
3294 "nipcr-Jo4s'bq9Da9GEs6rN#5`q)!hLP_3o9eLQJe3JDrX^7B@"eXb#X/eC_6,!c
3306 PDFVars/TermAll get exec end end
3307 userdict /pgsave get restore
3312 %%DocumentProcessColors: Cyan Magenta Yellow Black