Work on projects.
[pintos-anon] / doc / mlfqs.ps
1 %!PS-Adobe-3.0
2 %%Title: (Solaris)
3 %%Version: 1 2
4 %%CreationDate: (D:19981004210632)
5 %%For: (Administrator)
6 %%DocumentData: Clean7Bit
7 %%LanguageLevel: 2
8 %%BoundingBox: 0 0 612 792
9 %%Pages: 7
10 %%DocumentProcessColors: (atend)
11 %%DocumentSuppliedResources:
12 %%+ font TimesNewRoman,Italic$2X1
13 %%+ font CourierNew
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
20 %%EndComments
21 %%BeginDefaults
22 %%EndDefaults
23 %%BeginProlog
24 %%EndProlog
25 %%BeginSetup
26 %%BeginFile: l2check
27 %%Copyright: Copyright 1993 Adobe Systems Incorporated. All Rights Reserved.
28 systemdict /languagelevel known
29 { systemdict /languagelevel get 1 eq }
30 { true }
31 ifelse
32 {
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
36 exch = =
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
48 showpage
49 quit
50 }
51 if
52 %%EndFile
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
58 /_save 0 def
59 /_cshow 0 def
60 /InitAll 0 def
61 /TermAll 0 def
62 /_lp /none def
63 /_doClip 0 def
64 /sfc 0 def
65 /_sfcs 0 def
66 /_sfc 0 def
67 /ssc 0 def
68 /_sscs 0 def
69 /_ssc 0 def
70 /_fcs 0 def
71 /_scs 0 def
72 /_fp 0 def
73 /_sp 0 def
74 /_f0 0 array def
75 /_f1 1 array def
76 /_f3 3 array def
77 /_f4 4 array def
78 /_fc null def
79 /_s0 0 array def
80 /_s1 1 array def
81 /_s3 3 array def
82 /_s4 4 array def
83 /_sc null def
84 /_cpcf null def
85 /_cpcs null def
86 /_inT false def
87 /_tr -1 def
88 /_rise 0 def
89 /_ax 0 def
90 /_cx 0 def
91 /_ld 0 def
92 /_tm matrix def
93 /_ctm matrix def
94 /_mtx matrix def
95 /_hy (-) def
96 /_fScl 0 def
97 /_hs 1 def
98 /_pdfEncodings 2 array def
99 /_baselineadj 0 def
100 /_Tj 0 def
101 /_italMtx[1 0 .212557 1 0 0]def
102 /_italMtx_WMode1 [1 -.212557 0 1 0 0]def
103 /_basefont 0 def
104 /_basefonto 0 def
105 /_pdf_oldCIDInit null def
106 /_categories 10 dict def
107 /_sa? true def
108 /_op? false def
109 /_ColorSep5044? false def
110 /_tmpcolr? [] def
111 /_tmpop? {} def
112 end
113 %%EndFile
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
118 /ld {load def} bd
119 /dd { PDFVars 3 1 roll put } bd
120 /xdd { exch dd } bd
121 /Level2?
122 systemdict /languagelevel known
123 { systemdict /languagelevel get 2 ge } { false } ifelse
124 def
125 /here {
126 dup currentdict exch known
127 { currentdict exch get true }
128 { pop false }
129 ifelse
130 } bd
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
135 %%EndFile
136 %%BeginFile: pdf.prc
137 %%Copyright: Copyright 1987-1996 Adobe Systems Incorporated. All Rights Reserved.
138 /initialize {
139 _ColorSep5044? {sep_ops begin 50 dict begin} if
140 newpath
141 } bd
142 /terminate {
143 _ColorSep5044? {end end} if
144 } bd
145 Level2? StartLoad
146 { /m/moveto ld
147 /l/lineto ld
148 /c/curveto ld
149 /setSA/setstrokeadjust ld
150 } EndLoad
151 Level2? not StartLoad
152 {
153 /pl {
154 transform
155 0.25 sub round 0.25 add exch
156 0.25 sub round 0.25 add exch
157 itransform
158 } bd
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
163 } EndLoad
164 /v { currentpoint 6 2 roll c } bd
165 /y { 2 copy c } bd
166 /h/closepath ld
167 /d/setdash ld
168 /j/setlinejoin ld
169 /J/setlinecap ld
170 /M/setmiterlimit ld
171 /w/setlinewidth ld
172 /cf currentflat def
173 /i {
174 dup 0 eq { pop cf } if
175 setflat
176 } bd
177 /ilp { /_lp /none dd } bd
178 /sfc {
179 _lp /fill ne {
180 _sfcs
181 _sfc
182 /_lp /fill dd
183 } if
184 } dd
185 /ssc {
186 _lp /stroke ne {
187 _sscs
188 _ssc
189 /_lp /stroke dd
190 } if
191 } dd
192 /n {
193 _doClip 1 ge {
194 _doClip 1 eq { clip } { eoclip } ifelse
195 /_doClip 0 dd
196 } if
197 newpath
198 } bd
199 /f {
200 _doClip 1 ge
201 {
202 gsave sfc fill grestore
203 _doClip 1 eq { clip } { eoclip } ifelse
204 newpath
205 ilp
206 /_doClip 0 dd
207 }
208 { sfc fill }
209 ifelse
210 } bd
211 /f* {
212 _doClip 1 ge
213 {
214 gsave sfc eofill grestore
215 _doClip 1 eq { clip } { eoclip } ifelse
216 newpath
217 ilp
218 /_doClip 0 dd
219 }
220 { sfc eofill }
221 ifelse
222 } bd
223 /S {
224 _doClip 1 ge
225 {
226 gsave ssc stroke grestore
227 _doClip 1 eq { clip } { eoclip } ifelse
228 newpath
229 ilp
230 /_doClip 0 dd
231 }
232 { ssc stroke }
233 ifelse
234 } bd
235 /s { h S } bd
236 /B {
237 _doClip dup 1 ge
238 gsave f grestore
239 {
240 gsave S grestore
241 1 eq { clip } { eoclip } ifelse
242 newpath
243 ilp
244 /_doClip 0 dd
245 }
246 { pop S }
247 ifelse
248 } bd
249 /b { h B } bd
250 /B* {
251 _doClip dup 1 ge
252 gsave f* grestore
253 {
254 gsave S grestore
255 1 eq { clip } { eoclip } ifelse
256 newpath
257 ilp
258 /_doClip 0 dd
259 }
260 { pop S }
261 ifelse
262 } bd
263 /b* { h B* } bd
264 /W { /_doClip 1 dd } bd
265 /W* { /_doClip 2 dd } bd
266 /q/save ld
267 /Q { restore ilp } bd
268 Level2? StartLoad
269 { /defineRes/defineresource ld
270 /findRes/findresource ld
271 currentglobal
272 true systemdict /setglobal get exec
273 [/Function /ExtGState /Form]
274 { /Generic /Category findresource dup length dict copy /Category defineresource pop }
275 forall
276 systemdict /setglobal get exec
277 } EndLoad
278 Level2? not StartLoad
279 { /AlmostFull?
280 { dup maxlength exch length sub 2 le
281 } bind def
282 /Expand
283 { 1 index maxlength mul cvi dict
284 dup begin exch { def } forall end
285 } bind def
286 /xput
287 { 3 2 roll
288 dup 3 index known not
289 { dup AlmostFull? { 1.5 Expand } if
290 } if
291 dup 4 2 roll put
292 } bind def
293 /defineRes
294 { _categories 1 index known not
295 { /_categories _categories 2 index 10 dict xput store
296 } if
297 _categories exch 2 copy get 5 -1 roll 4 index xput put
298 } bind def
299 /findRes
300 { _categories exch get exch get
301 } bind def
302 } EndLoad
303 /cs
304 {
305 dup where { pop load } if
306 dup /_fcs xdd
307 ucs
308 _cpcf exch get
309 /_fc xdd
310 /_fp null dd
311 } bd
312 /CS
313 {
314 dup where { pop load } if
315 dup /_scs xdd ucs _cpcs exch get /_sc xdd /_sp null dd
316 } bd
317 /ucs {
318 dup type /arraytype eq
319 { dup 0 get
320 dup /Indexed eq
321 { pop 0 get }
322 { /Pattern eq
323 { dup length 2 eq
324 { 1 get ucs }
325 { 0 get }
326 ifelse }
327 { 0 get }
328 ifelse }
329 ifelse }
330 if }
331 bd
332 /_cpcf
333 15 dict dup begin
334 /DefaultGray _f1 def
335 /DeviceGray _f1 def
336 /DefaultRGB _f3 def
337 /DeviceRGB _f3 def
338 /DeviceCMYK _f4 def
339 /CalGray _f1 def
340 /CalRGB _f3 def
341 /CalCMYK _f4 def
342 /Lab _f3 def
343 /Pattern _f0 def
344 /Indexed _f1 def
345 /Separation _f1 def
346 /CIEBasedA _f1 def
347 /CIEBasedABC _f3 def
348 end
349 dd
350 /_cpcs
351 15 dict dup begin
352 /DefaultGray _s1 def
353 /DeviceGray _s1 def
354 /DefaultRGB _s3 def
355 /DeviceRGB _s3 def
356 /DeviceCMYK _s4 def
357 /CalGray _s1 def
358 /CalRGB _s3 def
359 /CalCMYK _s4 def
360 /Lab _s3 def
361 /Pattern _s0 def
362 /Indexed _s1 def
363 /Separation _s1 def
364 /CIEBasedA _s1 def
365 /CIEBasedABC _s3 def
366 end
367 dd
368 Level2? not StartLoad {
369 /ri/pop ld
370 /makePat/pop ld
371 } EndLoad
372 Level2? StartLoad {
373 /ri
374 {
375 /findcolorrendering isdefined?
376 {
377 mark exch
378 findcolorrendering
379 counttomark 2 eq
380 { type /booleantype eq
381 { dup type /nametype eq
382 { dup /ColorRendering resourcestatus
383 { pop pop
384 dup /DefaultColorRendering ne
385 {
386 /ColorRendering findresource
387 setcolorrendering
388 } if
389 } if
390 } if
391 } if
392 } if
393 cleartomark
394 }
395 { pop
396 } ifelse
397 } bd
398 /makePat /makepattern ld
399 } EndLoad
400 Level2? not _ColorSep5044? or StartLoad
401 {
402 /L1setcolor {
403 aload length
404 dup 0 eq
405 { pop .5 setgray }
406 { dup 1 eq
407 { pop setgray }
408 { 3 eq
409 { setrgbcolor }
410 { setcmykcolor }
411 ifelse }
412 ifelse }
413 ifelse
414 } bind dd
415 /_sfcs { } dd
416 /_sscs { } dd
417 } EndLoad
418 Level2? not _ColorSep5044? not and StartLoad
419 {
420 /_sfc { _fc L1setcolor } dd
421 /_ssc { _sc L1setcolor } dd
422 } EndLoad
423 Level2? _ColorSep5044? not and StartLoad
424 {
425 /_sfcs
426 {
427 _fcs setcolorspace
428 } bind dd
429 /_sscs
430 {
431 _scs setcolorspace
432 } bind dd
433 /_sfc
434 {
435 _fc aload pop
436 _fp null eq
437 { setcolor }
438 { _fp setpattern }
439 ifelse
440 } bind dd
441 /_ssc
442 {
443 _sc aload pop
444 _sp null eq { setcolor } { _sp setpattern } ifelse
445 } bind dd
446 } EndLoad
447 /sc
448 {
449 _fc astore pop
450 ilp
451 } bd
452 /SC
453 {
454 _sc astore pop
455 ilp
456 } bd
457 /scn {
458 dup type /dicttype eq
459 { dup /_fp xdd
460 /PaintType get 1 eq
461 { /_fc _f0 dd ilp }
462 { /_fc _cpcf _fcs ucs get dd
463 sc }
464 ifelse }
465 { sc }
466 ifelse
467 } bd
468 /SCN {
469 dup type /dicttype eq
470 { dup /_sp xdd
471 /PaintType get 1 eq
472 { /_sc _s0 dd ilp }
473 { /_sc _cpcs _scs ucs get dd
474 SC }
475 ifelse }
476 { SC }
477 ifelse
478 } bd
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
486 /re {
487 4 2 roll m
488 1 index 0 rlineto
489 0 exch rlineto
490 neg 0 rlineto
491 h
492 } bd
493 /RC/rectclip ld
494 /EF/execform ld
495 /PS { cvx exec } bd
496 /initgs {
497 /DefaultGray where
498 { pop }
499 { /DefaultGray /DeviceGray dd }
500 ifelse
501 /DefaultRGB where
502 { pop }
503 { /DefaultRGB /DeviceRGB dd }
504 ifelse
505 0 g 0 G
506 [] 0 d 0 j 0 J 10 M 1 w
507 true setSA
508 } bd
509 21 dict dup begin
510 /CosineDot
511 { 180 mul cos exch 180 mul cos add 2 div } bd
512 /Cross
513 { abs exch abs 2 copy gt { exch } if pop neg } bd
514 /Diamond
515 { abs exch abs 2 copy add .75 le
516 { dup mul exch dup mul add 1 exch sub }
517 { 2 copy add 1.23 le
518 { .85 mul add 1 exch sub }
519 { 1 sub dup mul exch 1 sub dup mul add 1 sub }
520 ifelse }
521 ifelse } bd
522 /Double
523 { exch 2 div exch 2 { 360 mul sin 2 div exch } repeat add } bd
524 /DoubleDot
525 { 2 { 360 mul sin 2 div exch } repeat add } bd
526 /Ellipse
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
529 1 exch sub }
530 { dup 1 gt
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 }
534 ifelse }
535 ifelse } bd
536 /EllipseA
537 { dup mul .9 mul exch dup mul add 1 exch sub } bd
538 /EllipseB
539 { dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub } bd
540 /EllipseC
541 { dup .5 gt { 1 exch sub } if
542 dup .25 ge
543 { .5 exch sub 4 mul dup mul 1 sub }
544 { 4 mul dup mul 1 exch sub }
545 ifelse
546 exch
547 dup .5 gt { 1 exch sub } if
548 dup .25 ge
549 { .5 exch sub 4 mul dup mul 1 sub }
550 { 4 mul dup mul 1 exch sub }
551 ifelse
552 add -2 div } bd
553 /InvertedDouble
554 { exch 2 div exch 2 { 360 mul sin 2 div exch } repeat add neg } bd
555 /InvertedDoubleDot
556 { 2 { 360 mul sin 2 div exch } repeat add neg } bd
557 /InvertedEllipseA
558 { dup mul .9 mul exch dup mul add 1 sub } bd
559 /InvertedSimpleDot
560 { dup mul exch dup mul add 1 sub } bd
561 /Line
562 { exch pop abs neg } bd
563 /LineX
564 { pop } bd
565 /LineY
566 { exch pop } bd
567 /Rhomboid
568 { abs exch abs 0.9 mul add 2 div } bd
569 /Round
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 }
573 ifelse } bd
574 /SimpleDot
575 { dup mul exch dup mul add 1 exch sub } bd
576 /Square
577 { abs exch abs 2 copy lt { exch } if pop neg } bd
578 end
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 }
585 if
586 /concattransferfuncs {
587 [ 3 1 roll /exec load exch /exec load ] cvx
588 } bd
589 /concatandsettransfer {
590 /_defaulttransferfunc load concattransferfuncs settransfer
591 } bd
592 /concatandsetcolortransfer {
593 colorplate 0 eq
594 {
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
599 concattransferfuncs
600 setcolortransfer
601 } if
602 colorplate 1 ge colorplate 4 le and
603 {
604 4 colorplate sub index 4 { exch pop } repeat
605 concatandsettransfer
606 } if
607 colorplate 5 ge
608 {
609 0 index 4 { exch pop } repeat
610 concatandsettransfer
611 } if
612 } bd
613 /tn5044sethalftone
614 {
615 begin
616 HalftoneType 5 eq
617 { [/Default /Cyan /Magenta /Yellow /Black /Default /Default /Default]
618 colorplate get
619 here not {
620 /Default here not { currentdict } if
621 } if
622 }
623 { currentdict }
624 ifelse
625 end
626 begin
627 /TransferFunction here
628 {
629 concatandsettransfer
630 currentdict dup length dict
631 begin
632 {
633 1 index /TransferFunction ne { def } { pop pop } ifelse
634 } forall
635 currentdict
636 end
637 }
638 {
639 currentdict
640 } ifelse
641 end
642 sethalftone
643 } bd
644 } EndLoad
645 Level2? StartLoad {
646 /gs
647 {
648 begin
649 /SA here { setstrokeadjust } if
650 /OP here { setoverprint } if
651 /BG here { setblackgeneration } if
652 /UCR here { setundercolorremoval } if
653 /TR here
654 {
655 _ColorSep5044?
656 {
657 dup xcheck
658 { concatandsettransfer }
659 { aload pop concatandsetcolortransfer }
660 ifelse
661 }
662 {
663 dup xcheck
664 { settransfer }
665 { aload pop setcolortransfer }
666 ifelse
667 } ifelse
668 } if
669 /sethalftonephase isdefined? { /HTP here { sethalftonephase } if } if
670 /HT here
671 { _ColorSep5044?
672 { tn5044sethalftone }
673 { sethalftone }
674 ifelse
675 } if
676 end
677 } bd
678 /_defaulthalftone currenthalftone def
679 } EndLoad
680 Level2? not StartLoad {
681 /gs
682 {
683 begin
684 /SA here { /_sa? xdd } if
685 /OP here { dup /_op? xdd
686 /setoverprint where {pop setoverprint}
687 {pop} ifelse
688 } if
689 /TR here
690 {
691 _ColorSep5044?
692 { dup xcheck
693 { concatandsettransfer }
694 { aload pop concatandsetcolortransfer }
695 ifelse
696 }
697 { dup xcheck
698 { settransfer }
699 { aload pop setcolortransfer }
700 ifelse
701 } ifelse
702 } if
703 /HT here
704 { _ColorSep5044?
705 { tn5044sethalftone }
706 { sethalftone }
707 ifelse
708 } if
709 end
710 } bd
711 5 dict dup
712 begin
713 currentscreen 1 [/HalftoneType /SpotFunction /Angle /Frequency ]
714 { exch def } forall
715 end
716 /_defaulthalftone exch def
717 } EndLoad
718 /int {
719 dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul
720 exch pop add exch pop
721 } bd
722 /limit {
723 dup 2 index le { exch } if pop
724 dup 2 index ge { exch } if pop
725 } bd
726 _ColorSep5044? StartLoad {
727 /_sfc
728 {
729 _fp null eq
730 { _fcs type /arraytype eq
731 {_fcs 0 get /Separation eq
732 {
733 _fcs 1 get /All eq
734 {
735 _fc aload pop 1 exch sub
736 /setseparationgray where pop begin setseparationgray end
737 }
738 {
739 1 _fcs 3 get exec _fcs 1 get
740 /findcmykcustomcolor where pop begin findcmykcustomcolor end
741 _fc aload pop
742 /setcustomcolor where pop begin setcustomcolor end
743 }
744 ifelse
745 }
746 { _fc L1setcolor }
747 ifelse
748 }
749 { _fc L1setcolor }
750 ifelse
751 }
752 { _fc L1setcolor }
753 ifelse
754 } bind dd
755 /_ssc
756 {
757 _sp null eq
758 { _scs type /arraytype eq
759 {_scs 0 get /Separation eq
760 {
761 _scs 1 get /All eq
762 {
763 _sc aload pop 1 exch sub
764 /setseparationgray where pop begin setseparationgray end
765 }
766 {
767 1 _scs 3 get exec _scs 1 get
768 /findcmykcustomcolor where pop begin findcmykcustomcolor end
769 _sc aload pop
770 /setcustomcolor where pop begin setcustomcolor end
771 }
772 ifelse
773 }
774 { _sc L1setcolor }
775 ifelse
776 }
777 { _sc L1setcolor }
778 ifelse
779 }
780 { _sc L1setcolor }
781 ifelse
782 } bind dd
783 } EndLoad
784 %%EndFile
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
791 /CopyFont {
792 {
793 1 index /FID ne 2 index /UniqueID ne and
794 { def } { pop pop } ifelse
795 } forall
796 } bd
797 /Type0CopyFont
798 {
799 exch
800 dup length dict
801 begin
802 CopyFont
803 [
804 exch
805 FDepVector
806 {
807 dup /FontType get 0 eq
808 {
809 1 index Type0CopyFont
810 /_pdfType0 exch definefont
811 }
812 {
813 /_pdfBaseFont exch
814 2 index exec
815 }
816 ifelse
817 exch
818 }
819 forall
820 pop
821 ]
822 /FDepVector exch def
823 currentdict
824 end
825 } bd
826 /cHexEncoding
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
841 /modEnc {
842 /_enc xdd
843 /_icode 0 dd
844 counttomark 1 sub -1 0
845 {
846 index
847 dup type /nametype eq
848 {
849 _enc _icode 3 -1 roll put
850 _icode 1 add
851 }
852 if
853 /_icode xdd
854 } for
855 cleartomark
856 _enc
857 } bd
858 /trEnc {
859 /_enc xdd
860 255 -1 0 {
861 exch dup -1 eq
862 { pop /.notdef }
863 { Encoding exch get }
864 ifelse
865 _enc 3 1 roll put
866 } for
867 pop
868 _enc
869 } bd
870 /TE {
871 /_i xdd
872 StandardEncoding 256 array copy modEnc
873 _pdfEncodings exch _i exch put
874 } bd
875 /TZ
876 {
877 /_usePDFEncoding xdd
878 findfont
879 dup length 2 add dict
880 begin
881 {
882 1 index /FID ne { def } { pop pop } ifelse
883 } forall
884 /FontName exch def
885 _usePDFEncoding 0 ge
886 {
887 /Encoding _pdfEncodings _usePDFEncoding get def
888 pop
889 }
890 {
891 _usePDFEncoding -1 eq
892 {
893 counttomark 0 eq
894 { pop }
895 {
896 Encoding 256 array copy
897 modEnc /Encoding exch def
898 }
899 ifelse
900 }
901 {
902 256 array
903 trEnc /Encoding exch def
904 }
905 ifelse
906 }
907 ifelse
908 FontName currentdict
909 end
910 definefont pop
911 }
912 bd
913 /Level2?
914 systemdict /languagelevel known
915 {systemdict /languagelevel get 2 ge}
916 {false}
917 ifelse
918 def
919 Level2?
920 {
921 /_pdfFontStatus
922 {
923 currentglobal exch
924 /Font resourcestatus
925 {pop pop true}
926 {false}
927 ifelse
928 exch setglobal
929 } bd
930 }
931 {
932 /_pdfFontStatusString 50 string def
933 _pdfFontStatusString 0 (fonts/) putinterval
934 /_pdfFontStatus
935 {
936 _pdfFontStatusString 6 42 getinterval
937 cvs length 6 add
938 _pdfFontStatusString exch 0 exch getinterval
939 status
940 { pop pop pop pop true}
941 { false }
942 ifelse
943 } bd
944 }
945 ifelse
946 Level2?
947 {
948 /_pdfCIDFontStatus
949 {
950 /CIDFont /Category resourcestatus
951 {
952 pop pop
953 /CIDFont resourcestatus
954 {pop pop true}
955 {false}
956 ifelse
957 }
958 { pop false }
959 ifelse
960 } bd
961 }
962 if
963 /_pdfString100 100 string def
964 /_pdfComposeFontName
965 {
966 dup length 1 eq
967 {
968 0 get
969 1 index
970 type /nametype eq
971 {
972 _pdfString100 cvs
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
977 exch pop
978 true
979 }
980 {
981 pop pop
982 false
983 }
984 ifelse
985 }
986 {
987 false
988 }
989 ifelse
990 } bd
991 pdf_has_composefont?
992 {
993 /_pdfComposeFont
994 {
995 1 index /CMap resourcestatus
996 {pop pop true}
997 {false}
998 ifelse
999 1 index true exch
1000 {
1001 _pdfCIDFontStatus not
1002 {pop false exit}
1003 if
1004 }
1005 forall
1006 and
1007 { 3 -1 roll pop composefont true}
1008 {
1009 4 -1 roll pop
1010 _pdfComposeFontName
1011 {
1012 dup _pdfFontStatus
1013 { findfont definefont true }
1014 {
1015 pop
1016 dup _pdfFontStatus
1017 { findfont true }
1018 { pop false }
1019 ifelse
1020 }
1021 ifelse
1022 }
1023 {
1024 dup _pdfFontStatus
1025 { findfont true }
1026 { pop false }
1027 ifelse
1028 }
1029 ifelse
1030 }
1031 ifelse
1032 } bd
1033 }
1034 {
1035 /_pdfComposeFont
1036 {
1037 4 -1 roll pop
1038 _pdfComposeFontName not
1039 {
1040 dup
1041 }
1042 if
1043 2 copy _pdfFontStatus
1044 {pop findfont exch pop true}
1045 {
1046 eq
1047 {pop false}
1048 {
1049 dup _pdfFontStatus
1050 {findfont true}
1051 {pop false}
1052 ifelse
1053 }
1054 ifelse
1055 }
1056 ifelse
1057 } bd
1058 }
1059 ifelse
1060 /_pdfFaceByStyleDict 4 dict dup begin
1061 Level2?
1062 {
1063 /Serif
1064 /HeiseiMin-W3-83pv-RKSJ-H _pdfFontStatus
1065 {/HeiseiMin-W3}
1066 {/Ryumin-Light}
1067 ifelse
1068 def
1069 /SansSerif
1070 /HeiseiKakuGo-W5-83pv-RKSJ-H _pdfFontStatus
1071 {/HeiseiKakuGo-W5}
1072 {/GothicBBB-Medium}
1073 ifelse
1074 def
1075 /HeiseiMaruGo-W4-83pv-RKSJ-H _pdfFontStatus
1076 {/HeiseiMaruGo-W4}
1077 {
1078 /Jun101-Light-RKSJ-H _pdfFontStatus
1079 { /Jun101-Light }
1080 { SansSerif }
1081 ifelse
1082 }
1083 ifelse
1084 /RoundSansSerif exch def
1085 /Default Serif def
1086 }
1087 {
1088 /Serif /Ryumin-Light def
1089 /SansSerif /GothicBBB-Medium def
1090 {
1091 (fonts/Jun101-Light-83pv-RKSJ-H) status
1092 }stopped
1093 {pop}{
1094 { pop pop pop pop /Jun101-Light }
1095 { SansSerif }
1096 ifelse
1097 /RoundSansSerif exch def
1098 }ifelse
1099 /Default Serif def
1100 }
1101 ifelse
1102 end
1103 def
1104 /_pdf_Adobe-Japan1-2 (Adobe-Japan1-2) def
1105 /_pdfConcatNames
1106 {
1107 exch
1108 _pdfString100 cvs
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
1113 } bind def
1114 /_pdfSubSetFontByStyleDict 4 dict dup begin
1115 _pdfFaceByStyleDict
1116 {
1117 _pdf_Adobe-Japan1-2 _pdfConcatNames
1118 dup _pdfFontStatus
1119 { def }
1120 {
1121 {
1122 pop
1123 dup /SansSerif eq
1124 {
1125 /HeiseiKakuGo-W5-Adobe-Japan1-2 dup _pdfFontStatus
1126 { def exit }
1127 { pop }
1128 ifelse
1129 }
1130 if
1131 dup /Serif eq
1132 {
1133 /HeiseiMin-W3-Adobe-Japan1-2 dup _pdfFontStatus
1134 { def exit }
1135 { pop }
1136 ifelse
1137 }
1138 if
1139 pop exit
1140 }
1141 loop
1142 }
1143 ifelse
1144 }
1145 forall
1146 end def
1147 /TZzero
1148 {
1149 /_fyAdj xdd
1150 /_wmode xdd
1151 /_styleArr xdd
1152 4 copy
1153 _pdfComposeFont
1154 {exch pop exch pop exch pop}
1155 {
1156 [
1157 0 1 _styleArr length 1 sub
1158 {
1159 _styleArr exch get
1160 _pdfFaceByStyleDict exch 2 copy known not
1161 { pop /Default }
1162 if
1163 get
1164 }
1165 for
1166 ]
1167 exch pop
1168 3 index 3 index 4 2 roll
1169 _pdfComposeFont
1170 {exch pop}
1171 {
1172 findfont
1173 }
1174 ifelse
1175 }
1176 ifelse
1177 dup /FontType get 3 eq _wmode 1 eq and
1178 {
1179 _pdfVerticalRomanT3Font dup length dict copy
1180 begin
1181 /_basefont exch def
1182 /Encoding _basefont /Encoding get def
1183 }
1184 {
1185 dup length 2 add dict
1186 begin
1187 {1 index /FID ne {def}{pop pop} ifelse }
1188 forall
1189 } ifelse
1190 /WMode _wmode def
1191 /BaseLineAdj _fyAdj def
1192 FontType 0 ne
1193 {
1194 /Encoding Encoding dup length array copy dup 16#5c /yen put def
1195 /_fauxfont true def
1196 } if
1197 currentdict
1198 end
1199 definefont pop
1200 }
1201 bd
1202 /swj {
1203 dup 4 1 roll
1204 dup length exch stringwidth
1205 exch 5 -1 roll 3 index mul add
1206 4 1 roll 3 1 roll mul add
1207 6 2 roll /_cnt 0 dd
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
1210 } bd
1211 /jss {
1212 4 1 roll
1213 {
1214 2 npop
1215 (0) exch 2 copy 0 exch put
1216 gsave
1217 32 eq
1218 {
1219 exch 6 index 6 index 6 index 5 -1 roll widthshow
1220 currentpoint
1221 }
1222 {
1223 false charpath currentpoint
1224 4 index setmatrix stroke
1225 }
1226 ifelse
1227 grestore
1228 moveto
1229 2 copy rmoveto
1230 } exch cshow
1231 6 npop
1232 } def
1233 /jsfTzero {
1234 {
1235 2 npop
1236 (0) exch 2 copy 0 exch put
1237 exch show
1238 32 eq
1239 {
1240 4 index 4 index rmoveto
1241 }
1242 if
1243 2 copy rmoveto
1244 } exch cshow
1245 5 npop
1246 } def
1247 /jsp
1248 {
1249 {
1250 2 npop
1251 (0) exch 2 copy 0 exch put
1252 32 eq
1253 { exch 5 index 5 index 5 index 5 -1 roll widthshow }
1254 { false charpath }
1255 ifelse
1256 2 copy rmoveto
1257 } exch cshow
1258 5 npop
1259 } bd
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
1264 /_Tjdef [
1265 /pjsf load
1266 /pjss load
1267 {
1268 dup
1269 currentpoint 3 2 roll
1270 pjsf
1271 newpath moveto
1272 pjss
1273 } bind
1274 {
1275 trj swj rmoveto
1276 } bind
1277 {
1278 dup currentpoint 4 2 roll gsave
1279 pjsf
1280 grestore 3 1 roll moveto
1281 pjsc
1282 } bind
1283 {
1284 dup currentpoint 4 2 roll
1285 currentpoint gsave newpath moveto
1286 pjss
1287 grestore 3 1 roll moveto
1288 pjsc
1289 } bind
1290 {
1291 dup currentpoint 4 2 roll gsave
1292 dup currentpoint 3 2 roll
1293 pjsf
1294 newpath moveto
1295 pjss
1296 grestore 3 1 roll moveto
1297 pjsc
1298 } bind
1299 /pjsc load
1300 ] def
1301 /BT
1302 {
1303 /_inT true dd
1304 _ctm currentmatrix pop matrix _tm copy pop
1305 0 _rise _baselineadj add translate _hs 1 scale
1306 0 0 moveto
1307 } bd
1308 /ET
1309 {
1310 /_inT false dd
1311 _tr 3 gt {clip} if
1312 _ctm setmatrix newpath
1313 } bd
1314 /Tr {
1315 _inT { _tr 3 le {currentpoint newpath moveto} if } if
1316 dup /_tr xdd
1317 _Tjdef exch get /_Tj xdd
1318 } bd
1319 /Tj {
1320 userdict /$$copystring 2 index put
1321 _Tj
1322 } bd
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
1327 /_nullProc {} bd
1328 /Tf {
1329 dup 1000 div /_fScl xdd
1330 exch findfont dup
1331 /_nullProc exch
1332 /WMode known
1333 {
1334 1 index /WMode get 1 eq
1335 {pop /exch}
1336 if
1337 }
1338 if
1339 load /fWModeProc xdd
1340 dup
1341 /FontType get 0 eq dup _cx 0 ne and
1342 { /jsfTzero }
1343 { /awidthshow }
1344 ifelse
1345 load /fawidthshowProc xdd
1346 /_fTzero xdd
1347 dup /BaseLineAdj known
1348 { dup /BaseLineAdj get _fScl mul }
1349 { 0 }
1350 ifelse
1351 /_baselineadj xdd
1352 currentpoint iTm moveto
1353 exch scalefont setfont
1354 } bd
1355 /TL { neg /_ld xdd } bd
1356 /Tw {
1357 /_cx xdd
1358 _cx 0 ne _fTzero and
1359 { /jsfTzero }
1360 { /awidthshow }
1361 ifelse
1362 load /fawidthshowProc xdd
1363 } bd
1364 /Tc { /_ax xdd } bd
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
1368 /T* { 0 _ld Td } bd
1369 /' { T* Tj } bd
1370 /" { exch Tc exch Tw ' } bd
1371 /TJ {
1372 {
1373 dup type /stringtype eq
1374 { Tj }
1375 { 0 exch Tk }
1376 ifelse
1377 } forall
1378 } bd
1379 /T- { _hy Tj } bd
1380 /d0/setcharwidth ld
1381 /d1 { setcachedevice /sfc{}dd /ssc{}dd } bd
1382 /nND {{/.notdef} repeat} bd
1383 /T3Defs {
1384 /BuildChar
1385 {
1386 1 index /Encoding get exch get
1387 1 index /BuildGlyph get exec
1388 }
1389 def
1390 /BuildGlyph {
1391 exch begin
1392 GlyphProcs exch get exec
1393 end
1394 } def
1395 } bd
1396 /_pdfBoldRomanWidthProc
1397 {
1398 stringwidth 1 index 0 ne { exch .03 add exch }if setcharwidth
1399 } bd
1400 /_pdfType0WidthProc
1401 {
1402 dup stringwidth 0 0 moveto
1403 2 index true charpath pathbbox
1404 0 -1
1405 7 index 2 div .88
1406 setcachedevice2
1407 pop
1408 } bd
1409 /_pdfBoldBaseFont
1410 10 dict begin
1411 /FontType 3 def
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
1417 /BuildChar
1418 {
1419 exch begin
1420 _basefont setfont
1421 _bcstr1 dup 0 4 -1 roll put
1422 dup
1423 _setwidthProc
1424 0 0 moveto
1425 dup show
1426 _basefonto setfont
1427 0 0 moveto
1428 show
1429 end
1430 }bd
1431 currentdict
1432 end
1433 def
1434 /_pdfVerticalRomanT3Font
1435 10 dict begin
1436 /FontType 3 def
1437 /FontMatrix[1 0 0 1 0 0]def
1438 /FontBBox[0 0 1 1]def
1439 /_bcstr1 1 string def
1440 /BuildChar
1441 {
1442 exch begin
1443 _basefont setfont
1444 _bcstr1 dup 0 4 -1 roll put
1445 dup
1446 _pdfType0WidthProc
1447 0 0 moveto
1448 show
1449 end
1450 }bd
1451 currentdict
1452 end
1453 def
1454 /MakeBoldFont
1455 {
1456 dup dup length 2 add dict
1457 begin
1458 CopyFont
1459 /PaintType 2 def
1460 /StrokeWidth .03 0 FontMatrix idtransform pop def
1461 /dummybold currentdict
1462 end
1463 definefont
1464 _pdfBoldBaseFont 8 dict copy begin
1465 /_basefont exch def
1466 /_basefonto exch def
1467 currentdict
1468 end
1469 definefont
1470 } bd
1471 /MakeBold {
1472 findfont dup
1473 /FontType get 0 eq
1474 {
1475 _pdfBoldBaseFont /_setwidthProc /_pdfType0WidthProc load put
1476 {MakeBoldFont} Type0CopyFont definefont
1477 }
1478 {
1479 dup /_fauxfont known not
1480 {
1481 _pdfBoldBaseFont /_setwidthProc /_pdfBoldRomanWidthProc load put
1482 MakeBoldFont
1483 }
1484 { definefont }
1485 ifelse
1486 }
1487 ifelse
1488 pop
1489 }bd
1490 /MakeItalic {
1491 findfont
1492 dup /WMode 2 copy known
1493 {
1494 get 1 eq
1495 { _italMtx_WMode1 }
1496 { _italMtx }
1497 ifelse
1498 }
1499 { pop pop _italMtx }
1500 ifelse
1501 makefont
1502 definefont pop
1503 }bd
1504 /MakeBoldItalic {
1505 /dummybold exch
1506 MakeBold
1507 /dummybold
1508 MakeItalic
1509 }bd
1510 currentdict readonly pop end
1511 %%EndFile
1512 PDFText begin
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
1530 0 TE
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
1549 1 TE
1550 end
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
1563 end
1564 %%EndFile
1565 %%BeginFile: pdfimg2.prc
1566 %%Copyright: Copyright 1987-1993 Adobe Systems Incorporated. All Rights Reserved.
1567 PDF /PDFImage get begin
1568 Level2? StartLoad {
1569 /ID {
1570 5 counttomark 2 idiv
1571 dup 3 1 roll add
1572 dict begin
1573 { def } repeat
1574 cleartomark
1575 currentdict
1576 end
1577 begin
1578 /ImageType 1 def
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 } {
1585 /Decode [
1586 ImageMask {
1587 0 1
1588 } {
1589 currentcolorspace 0 get /Indexed eq {
1590 0 2 BitsPerComponent exp 1 sub
1591 } {
1592 mark currentcolor counttomark
1593 dup 2 add 1 roll cleartomark
1594 { 0 1 } repeat
1595 } ifelse
1596 } ifelse
1597 ] def
1598 } ifelse
1599 [
1600 /DataSource here { pop } {
1601 currentfile
1602 /Filter here {
1603 dup type /arraytype eq { length } { pop 1 } ifelse
1604 1 sub 0 1 3 -1 roll {
1605 /DecodeParms here {
1606 dup type /arraytype eq {
1607 1 index get
1608 } if
1609 dup null eq { pop } { exch } ifelse
1610 } if
1611 Filter dup type /arraytype eq
1612 { exch get } { exch pop } ifelse
1613 filter
1614 dup
1615 } for
1616 } if
1617 /DataSource exch def
1618 } ifelse
1619 currentdict
1620 /ImageMask here not { false } if
1621 { sfc imagemask } { image } ifelse
1622 counttomark
1623 { dup status
1624 { dup flushfile closefile }
1625 { pop }
1626 ifelse
1627 }
1628 repeat
1629 pop
1630 end
1631 } bd
1632 currentdict readonly pop
1633 } EndLoad
1634 end
1635 %%EndFile
1636 currentdict readonly pop
1637 end end
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
1642 userdict begin
1643 %%BeginResource: font TimesNewRoman,Bold
1644 %%EndResource
1645 end
1646 % Begin encoding-delta
1647 [/N8/Times-Bold 1 TZ
1648 % End encoding-delta
1649 userdict begin
1650 %%BeginResource: font TimesNewRoman
1651 %%EndResource
1652 end
1653 % Begin encoding-delta
1654 [/N6/Times-Roman 1 TZ
1655 % End encoding-delta
1656 userdict begin
1657 %%BeginResource: font TimesNewRoman,Italic
1658 %%EndResource
1659 end
1660 % Begin encoding-delta
1661 [/N10/Times-Italic 1 TZ
1662 % End encoding-delta
1663 userdict begin
1664 %%BeginResource: font CourierNew
1665 %%EndResource
1666 end
1667 % Begin encoding-delta
1668 [/N17/Courier 1 TZ
1669 % End encoding-delta
1670 PDFVars/TermAll get exec end end
1671
1672 %%EndSetup
1673 %%Page: 1 1
1674 %%BeginPageSetup
1675 userdict /pgsave save put
1676 PDFVars begin PDF begin PDFVars/InitAll get exec
1677 %%EndPageSetup
1678 0 0 612 792 RC
1679 BT
1680 303.6 36 TD
1681 0 0 0 rg
1682 /N6 9.84 Tf
1683 0.0019 Tc
1684 0 Tw
1685 (1)Tj
1686 ET
1687 1 1 1 rg
1688 180 657.12 252 62.88 re
1689
1690 BT
1691 180 712.08 TD
1692 0 0 0 rg
1693 /N6 12 Tf
1694 0.0933 Tc
1695 -0.1293 Tw
1696 (Stanford University)Tj
1697 0 -14.16 TD
1698 0.0768 Tc
1699 -0.1128 Tw
1700 (Computer Science Department)Tj
1701 0 -27.84 TD
1702 0.0447 Tc
1703 0.0393 Tw
1704 (CS140: Operating Systems)Tj
1705 ET
1706 1 1 1 rg
1707 432 684 108 36 re
1708
1709 BT
1710 448.08 712.08 TD
1711 0 0 0 rg
1712 0.03 Tc
1713 0.174 Tw
1714 (A. Arpaci-Dusseau)Tj
1715 25.68 -14.16 TD
1716 0.024 Tc
1717 0.18 Tw
1718 (Autumn 1998)Tj
1719 -401.76 -77.28 TD
1720 /N8 13.92 Tf
1721 0.076 Tc
1722 0 Tw
1723 (Purpose)Tj
1724 0 -24.72 TD
1725 /N6 12 Tf
1726 0.0743 Tc
1727 1.0447 Tw
1728 (In this handout, we give a brief overview of the behavior of the Solaris\
1729  2.6 Time-Sharing \(TS\))Tj
1730 0 -13.92 TD
1731 0.096 Tc
1732 0.3 Tw
1733 (scheduler, an example of a )Tj
1734 132.96 0 TD
1735 /N10 12 Tf
1736 0.0104 Tc
1737 0.1496 Tw
1738 (Multilevel Feedback Queue )Tj
1739 136.8 0 TD
1740 /N6 12 Tf
1741 0.1083 Tc
1742 0.3357 Tw
1743 (scheduler.  The information in this hand-)Tj
1744 -269.76 -13.92 TD
1745 0.1074 Tc
1746 1.0849 Tw
1747 (out, in conjunction with that given in Lecture, should be used to answer\
1748  Problem 4 of the first)Tj
1749 0 -14.16 TD
1750 0.0991 Tc
1751 -0.2251 Tw
1752 (assignment.  The end of this document specifies in more detail which asp\
1753 ects of the Solaris sched-)Tj
1754 0 -13.92 TD
1755 0.1191 Tc
1756 0.0369 Tw
1757 (uler that you should implement. )Tj
1758 0 -29.28 TD
1759 /N8 13.92 Tf
1760 0.0723 Tc
1761 -0.1437 Tw
1762 (Multilevel Feedback Queue Schedulers)Tj
1763 0 -24.72 TD
1764 /N6 12 Tf
1765 0.1389 Tc
1766 0.7251 Tw
1767 (The goal of a multilevel feedback queue scheduler is to fairly and effic\
1768 iently schedule a mix of)Tj
1769 0 -13.92 TD
1770 0.0972 Tc
1771 2.6544 Tw
1772 (processes with a variety of execution characteristics.  By controlling h\
1773 ow a process moves)Tj
1774 0 -14.16 TD
1775 0.063 Tc
1776 0.7301 Tw
1777 (between priority levels, processes with different characteristics can be\
1778  scheduled as appropriate.)Tj
1779 0 -13.92 TD
1780 0.0613 Tc
1781 2.0627 Tw
1782 (Priority-based schedulers attempt to provide a compromise between severa\
1783 l desirable metrics)Tj
1784 T*
1785 0.0834 Tc
1786 0.6929 Tw
1787 (\(e.g., response time for interactive jobs,  throughput for compute-inte\
1788 nsive jobs, and fair alloca-)Tj
1789 0 -14.16 TD
1790 0.0875 Tc
1791 0.0205 Tw
1792 (tions for all jobs\).  )Tj
1793 0 -24 TD
1794 0.0825 Tc
1795 1.1158 Tw
1796 (The queues in the system are ranked according to priority. Processes wai\
1797 ting in higher priority)Tj
1798 0 -13.92 TD
1799 0.0821 Tc
1800 0.4899 Tw
1801 (queues are always scheduled over those in lower priority queues.  Proces\
1802 ses at the same priority)Tj
1803 T*
1804 0.1077 Tc
1805 -0.0237 Tw
1806 (are usually scheduled in a round-robin fashion.)Tj
1807 0 -24 TD
1808 0.072 Tc
1809 -0.204 Tw
1810 (Such schedulers tend to be )Tj
1811 129.6 0 TD
1812 /N10 12 Tf
1813 0.0218 Tc
1814 -0.2618 Tw
1815 ( preemptible )Tj
1816 62.64 0 TD
1817 /N6 12 Tf
1818 0.0642 Tc
1819 -0.2922 Tw
1820 (in order to support interactive processes.  That is, a higher)Tj
1821 -192.24 -14.16 TD
1822 0.0929 Tc
1823 -0.0009 Tw
1824 (priority process is immediately scheduled if a lower priority process is\
1825  running on the CPU. )Tj
1826 0 -29.28 TD
1827 /N8 13.92 Tf
1828 0.1088 Tc
1829 -0.1001 Tw
1830 (Scheduling in Solaris)Tj
1831 0 -24.72 TD
1832 /N6 12 Tf
1833 0.0748 Tc
1834 2.3577 Tw
1835 (The Solaris operating system is based on Unix System V Release 4 \(SVR4\)\
1836 . Scheduling in)Tj
1837 0 -13.92 TD
1838 0.0614 Tc
1839 0.8226 Tw
1840 (Solaris, as in all SVR4-based schedulers, is performed at two levels: cl\
1841 ass-independent routines)Tj
1842 T*
1843 0.068 Tc
1844 0.836 Tw
1845 (and class-dependent routines.  Class-independent routines are those that\
1846  are responsible for dis-)Tj
1847 0 -14.16 TD
1848 0.0641 Tc
1849 1.6279 Tw
1850 (patching and preempting processes \(the low-level mechanisms\).  Class-d\
1851 ependent routines are)Tj
1852 0 -13.92 TD
1853 0.0854 Tc
1854 0.0198 Tw
1855 (those that are responsible for setting the priority of each of its proce\
1856 sses \(the high-level policy\).  )Tj
1857 0 -24 TD
1858 0.0772 Tc
1859 0.2668 Tw
1860 (By default, Solaris supports three scheduling classes: time-sharing \(TS\
1861 \), real-time \(RT\), and sys-)Tj
1862 0 -13.92 TD
1863 0.0817 Tc
1864 0.3623 Tw
1865 (tem \(SYS\).  Users with root privileges can easily implement and add ne\
1866 w scheduling classes  by)Tj
1867 0 -14.16 TD
1868 0.0944 Tc
1869 0.7656 Tw
1870 (adhering to a predefined interface.  Each scheduling class gives each of\
1871  its processes a priority,)Tj
1872 0 -13.92 TD
1873 0.1174 Tc
1874 -0.0334 Tw
1875 (the range of which is shown below.)Tj
1876 0 562.08 TD
1877 0.072 Tc
1878 -0.108 Tw
1879 (Handout #9)Tj
1880 ET
1881 PDFVars/TermAll get exec end end
1882 userdict /pgsave get restore
1883 showpage
1884 %%PageTrailer
1885 %%EndPage
1886 %%Page: 2 2
1887 %%BeginPageSetup
1888 userdict /pgsave save put
1889 PDFVars begin PDF begin PDFVars/InitAll get exec
1890 %%EndPageSetup
1891 0 0 612 792 RC
1892 BT
1893 303.6 36 TD
1894 0 0 0 rg
1895 /N6 9.84 Tf
1896 0.0019 Tc
1897 0 Tw
1898 (2)Tj
1899 -231.6 553.92 TD
1900 /N6 12 Tf
1901 0.0772 Tc
1902 1.0334 Tw
1903 (As long as a user has the correct privileges, he or she can submit jobs \
1904 to any scheduling class.)Tj
1905 0 -13.92 TD
1906 0.0647 Tc
1907 0.2993 Tw
1908 (\(See the man pages for  )Tj
1909 117.6 0 TD
1910 /N8 12 Tf
1911 0.03 Tc
1912 0 Tw
1913 (priocntl)Tj
1914 40.56 0 TD
1915 /N6 12 Tf
1916 0.1242 Tc
1917 0.2325 Tw
1918 ( on any machine running Solaris for information on how to sub-)Tj
1919 -158.16 -13.92 TD
1920 0.1112 Tc
1921 0.7168 Tw
1922 (mit jobs to different scheduling classes; however, since you probably do\
1923 n)Tj
1924 -2.892 Tc
1925 0 Tw
1926 (\222)Tj
1927 0.0493 Tc
1928 0.8747 Tw
1929 (t have root privileges)Tj
1930 0 -14.16 TD
1931 0.18 Tc
1932 1.464 Tw
1933 (on your machine, you won)Tj
1934 -2.652 Tc
1935 0 Tw
1936 (\222)Tj
1937 0.1005 Tc
1938 1.5435 Tw
1939 (t be able to do much.\)  By default, jobs are executed in the same)Tj
1940 0 -13.92 TD
1941 0.0876 Tc
1942 -0.0036 Tw
1943 (scheduling class as the parent process that forked the job.  Since your \
1944 shell is running in the time-)Tj
1945 T*
1946 0.1086 Tc
1947 -0.0246 Tw
1948 (sharing class, all of your jobs run by default in the time-sharing class\
1949 .)Tj
1950 0 -24 TD
1951 0.0816 Tc
1952 1.2824 Tw
1953 (To see the scheduling class of each process in the system, run )Tj
1954 -1.692 Tc
1955 0 Tw
1956 (\223)Tj
1957 318.72 0 TD
1958 /N8 12 Tf
1959 -0.0267 Tc
1960 1.2507 Tw
1961 (ps -edaflc)Tj
1962 50.16 0 TD
1963 /N6 12 Tf
1964 -1.452 Tc
1965 2.856 Tw
1966 (\224 )Tj
1967 -0.012 Tc
1968 0 Tw
1969 (\()Tj
1970 13.68 0 TD
1971 /N8 12 Tf
1972 -0.09 Tc
1973 0.114 Tw
1974 (-c )Tj
1975 13.44 0 TD
1976 /N6 12 Tf
1977 0.1292 Tc
1978 1.2748 Tw
1979 (is the flag that)Tj
1980 -396 -14.16 TD
1981 0.1028 Tc
1982 0.6452 Tw
1983 (shows the scheduling class\).  The fourth column shows the scheduling cl\
1984 ass of the running pro-)Tj
1985 0 -13.92 TD
1986 0.091 Tc
1987 0.461 Tw
1988 (cess.  Most jobs will be running in the TS class, with a few \(owned by \
1989 root\) running in the SYS)Tj
1990 T*
1991 0.062 Tc
1992 0 Tw
1993 (class.)Tj
1994 0 -14.16 TD
1995 /N17 12 Tf
1996 -0.0133 Tc
1997 0.0133 Tw
1998 (elaine1:~> ps -edafc)Tj
1999 0 -13.92 TD
2000 -0.0077 Tc
2001 0.0077 Tw
2002 (     UID   PID  PPID  CLS PRI    STIME TTY   TIME CMD)Tj
2003 T*
2004 0 Tc
2005 -0.0083 Tw
2006 (    root     0     0  SYS  96   Aug 01 ?     0:00 sched)Tj
2007 0 -14.16 TD
2008 -0.0077 Tw
2009 (    root     1     0   TS  58   Aug 01 ?     1:06 /etc/init -)Tj
2010 0 -13.92 TD
2011 -0.0083 Tw
2012 (    root     2     0  SYS  98   Aug 01 ?     0:02 pageout)Tj
2013 T*
2014 -0.0086 Tw
2015 (    root     3     0  SYS  60   Aug 01 ?    15:22 fsflush)Tj
2016 0 -14.16 TD
2017 -0.008 Tc
2018 0.008 Tw
2019 (    root   245   239   TS  59   Aug 01 ?     0:00 ttymon)Tj
2020 0 -13.92 TD
2021 0 Tc
2022 -0.0083 Tw
2023 (    root   181     1   TS  48   Aug 01 ?     0:00 sendmail -q15m)Tj
2024 T*
2025 -0.008 Tw
2026 (    root   239     1   TS  59   Aug 01 ?     0:00 sac -t 300)Tj
2027 0 -14.16 TD
2028 -0.0083 Tw
2029 (    root    96     1   TS  58   Aug 01 ?     0:00 rpcbind)Tj
2030 0 -13.92 TD
2031 -0.0092 Tw
2032 (    root   125    1   TS  59   Aug 01 ?    0:32 syslogd)Tj
2033 0 -37.92 TD
2034 /N6 12 Tf
2035 0.0821 Tc
2036 0.1519 Tw
2037 (In this document, we only discuss the Solaris time-sharing \(TS\) class.\
2038   Note the priorities of each)Tj
2039 0 -14.16 TD
2040 0.1155 Tc
2041 -0.0315 Tw
2042 (of the processes, as listed in the fifth column.)Tj
2043 0 -29.28 TD
2044 /N8 13.92 Tf
2045 0.1063 Tc
2046 -0.2177 Tw
2047 (Class Independent Functionality)Tj
2048 0 -24.72 TD
2049 /N6 12 Tf
2050 0.0693 Tc
2051 0.4855 Tw
2052 (The class independent routines arbitrate across the scheduling classes. \
2053  This involves three basic)Tj
2054 0 -13.92 TD
2055 0.0438 Tc
2056 0 Tw
2057 (responsibilities.)Tj
2058 0 -24 TD
2059 -2.652 Tc
2060 (\225)Tj
2061 18 0 TD
2062 0.0745 Tc
2063 0.4015 Tw
2064 (The process with the highest priority must be dispatched, and the state \
2065 of the preempted pro-)Tj
2066 0 -13.92 TD
2067 0.0444 Tc
2068 0.0796 Tw
2069 (cess saved.  )Tj
2070 -18 -24 TD
2071 -2.652 Tc
2072 0 Tw
2073 (\225)Tj
2074 18 0 TD
2075 0.1096 Tc
2076 -0.1256 Tw
2077 (The class independent functions must notifying the class-dependent routi\
2078 nes when the state of)Tj
2079 0 -14.16 TD
2080 0.0722 Tc
2081 0.1318 Tw
2082 (its processes changes \(for example, at creation and termination, when a\
2083  process changes from)Tj
2084 0 -13.92 TD
2085 0.057 Tc
2086 0.067 Tw
2087 (blocked to runnable, or runnable to blocked, and when a 10ms timer expir\
2088 es\).   )Tj
2089 111.6 613.92 TD
2090 0.084 Tc
2091 0.12 Tw
2092 (Scheduling Class)Tj
2093 136.32 0 TD
2094 0.0348 Tc
2095 0 Tw
2096 (Priorities)Tj
2097 -143.04 -24 TD
2098 0.084 Tc
2099 (Real-Time)Tj
2100 108 0 TD
2101 -0.1251 Tc
2102 (100-159)Tj
2103 -108 -21.84 TD
2104 0.134 Tc
2105 (System)Tj
2106 108 0 TD
2107 -0.1176 Tc
2108 (60-99)Tj
2109 -108 -22.08 TD
2110 0.077 Tc
2111 (Time-Sharing)Tj
2112 108 0 TD
2113 -0.111 Tc
2114 (0-59)Tj
2115 -152.64 -22.08 TD
2116 /N8 12 Tf
2117 0.012 Tc
2118 -0.108 Tw
2119 (Table 1: )Tj
2120 45.36 0 TD
2121 0.0258 Tc
2122 -0.139 Tw
2123 (Range of Priorities for Scheduling Classes in Solaris)Tj
2124 ET
2125 188.64 628.32 0.48 91.44 re
2126
2127 296.64 627.84 0.48 92.4 re
2128
2129 422.88 628.32 0.48 91.44 re
2130
2131 188.64 720.24 m
2132 188.64 719.76 l
2133 423.36 719.76 l
2134 423.36 720.24 l
2135 h
2136
2137 189.36 695.52 m
2138 189.36 695.04 l
2139 422.64 695.04 l
2140 422.64 695.52 l
2141 h
2142
2143 189.36 693.12 m
2144 189.36 692.64 l
2145 422.64 692.64 l
2146 422.64 693.12 l
2147 h
2148
2149 188.64 672.24 m
2150 188.64 671.76 l
2151 423.36 671.76 l
2152 423.36 672.24 l
2153 h
2154
2155 188.64 650.16 m
2156 188.64 649.68 l
2157 423.36 649.68 l
2158 423.36 650.16 l
2159 h
2160
2161 188.64 628.32 m
2162 188.64 627.84 l
2163 423.36 627.84 l
2164 423.36 628.32 l
2165 h
2166
2167 PDFVars/TermAll get exec end end
2168 userdict /pgsave get restore
2169 showpage
2170 %%PageTrailer
2171 %%EndPage
2172 %%Page: 3 3
2173 %%BeginPageSetup
2174 userdict /pgsave save put
2175 PDFVars begin PDF begin PDFVars/InitAll get exec
2176 %%EndPageSetup
2177 0 0 612 792 RC
2178 BT
2179 303.6 36 TD
2180 0 0 0 rg
2181 /N6 9.84 Tf
2182 0.0019 Tc
2183 0 Tw
2184 (3)Tj
2185 -231.6 676.08 TD
2186 /N6 12 Tf
2187 -2.652 Tc
2188 (\225)Tj
2189 18 0 TD
2190 0.0755 Tc
2191 0.147 Tw
2192 (Processes must be moved between priority queues in the class independent\
2193  data structures, as)Tj
2194 0 -14.16 TD
2195 0.0968 Tc
2196 -0.0048 Tw
2197 (directed by its scheduling class, and must be moved between blocked and \
2198 ready queues.  )Tj
2199 -18 -29.28 TD
2200 /N8 13.92 Tf
2201 0.0866 Tc
2202 -0.078 Tw
2203 (Time-Sharing Scheduling Class)Tj
2204 0 -24.72 TD
2205 /N6 12 Tf
2206 0.0848 Tc
2207 1.8361 Tw
2208 (The Time-Sharing scheduler in Solaris is an example of a multi-level fee\
2209 dback queue sched-)Tj
2210 0 -13.92 TD
2211 0.0841 Tc
2212 0.4104 Tw
2213 (uler.   A job begins at priority 29.   Compute-bound jobs then filter do\
2214 wn to the lower priorities,)Tj
2215 T*
2216 0.0777 Tc
2217 0.5377 Tw
2218 (where they are scheduled less frequently \(but for longer time-slices\) \
2219 and  interactive jobs propa-)Tj
2220 0 -14.16 TD
2221 0.0919 Tc
2222 0.7521 Tw
2223 (gate to the higher priorities \(where they are scheduled whenever they h\
2224 ave work to perform, on)Tj
2225 0 -13.92 TD
2226 0.0831 Tc
2227 -0.0441 Tw
2228 (the assumption that they will soon relinquish the processor again\).  In\
2229  the TS scheduler, the prior-)Tj
2230 T*
2231 0.1006 Tc
2232 0.2297 Tw
2233 (ity of a process is lowered after it consumes its allocated time-slice. \
2234  Its priority is raised if it has)Tj
2235 0 -14.16 TD
2236 0.091 Tc
2237 0.033 Tw
2238 (not consumed its time-slice before a )Tj
2239 176.64 0 TD
2240 /N10 12 Tf
2241 0.0133 Tc
2242 -0.0133 Tw
2243 (starvation interval  )Tj
2244 94.8 0 TD
2245 /N6 12 Tf
2246 0.0315 Tc
2247 0 Tw
2248 (expires.)Tj
2249 -271.44 -25.92 TD
2250 /N8 12 Tf
2251 0.0175 Tc
2252 -0.2335 Tw
2253 (Dispatch Table)Tj
2254 0 -24 TD
2255 /N6 12 Tf
2256 0.084 Tc
2257 0.0343 Tw
2258 (The durations of the time-slices, the changes in priorities, and the sta\
2259 rvation interval are specified)Tj
2260 0 -13.92 TD
2261 0.0961 Tc
2262 0.1593 Tw
2263 (in a user-tunable dispatch table.  The system administrator \(or anyone \
2264 with root privileges again\))Tj
2265 0 -14.16 TD
2266 0.089 Tc
2267 0.4579 Tw
2268 (can change the values in this table, thus configuring how the time-shari\
2269 ng scheduler manages its)Tj
2270 0 -13.92 TD
2271 0.12 Tc
2272 -0.3693 Tw
2273 (jobs.  While this has the noble intention of allowing different systems \
2274  to tune the scheduler to bet-)Tj
2275 T*
2276 0.1129 Tc
2277 1.5151 Tw
2278 (ter handle their workloads, in reality no one really knows how to config\
2279 ure these tables well.)Tj
2280 0 -14.16 TD
2281 0.0878 Tc
2282 0.1162 Tw
2283 (Therefore, we will focus on the default dispatch table. )Tj
2284 0 -24 TD
2285 0.116 Tc
2286 -0.032 Tw
2287 (To see how this table is configured in your system, run)Tj
2288 185.52 -24 TD
2289 /N8 12 Tf
2290 0.044 Tc
2291 -0.18 Tw
2292 (dispadmin -c TS -g)Tj
2293 -185.52 -24 TD
2294 /N6 12 Tf
2295 0.1011 Tc
2296 1.2888 Tw
2297 (You should see something like that in Table 2.  \(Looking at the man pag\
2298 es on dispadmin and)Tj
2299 0 -13.92 TD
2300 0.0963 Tc
2301 0.9689 Tw
2302 (ts_dptbl may also be helpful\).  You will see one row for every priority\
2303  in the scheduling class:)Tj
2304 T*
2305 0.0871 Tc
2306 0.0369 Tw
2307 (from 0 to 59.  For each priority, there are five columns: )Tj
2308 0 -24 TD
2309 -2.652 Tc
2310 0 Tw
2311 (\225)Tj
2312 18 0 TD
2313 /N8 12 Tf
2314 0.0905 Tc
2315 (ts_quantum:)Tj
2316 65.28 0 TD
2317 /N6 12 Tf
2318 0.1021 Tc
2319 1.6619 Tw
2320 ( Length of the time-slice \(in the actual table, this value is specified\
2321  in 10ms)Tj
2322 -65.28 -14.16 TD
2323 0.111 Tc
2324 -0.051 Tw
2325 (clock ticks; in the output from running dispadmin, the value is specifie\
2326 d in units of 1ms\).)Tj
2327 -18 -24 TD
2328 -2.652 Tc
2329 0 Tw
2330 (\225)Tj
2331 18 0 TD
2332 /N8 12 Tf
2333 0.0413 Tc
2334 (ts_tqexp:)Tj
2335 47.28 0 TD
2336 /N6 12 Tf
2337 0.1113 Tc
2338 0.4969 Tw
2339 (  Priority level of the new queue on which to place a process  if it exc\
2340 eeds its time)Tj
2341 -47.28 -13.92 TD
2342 0.1106 Tc
2343 -0.0196 Tw
2344 (quantum.  Normally this field  links  to  a lower  priority time-sharing\
2345  level.  )Tj
2346 -18 -24 TD
2347 -2.652 Tc
2348 0 Tw
2349 (\225)Tj
2350 18 0 TD
2351 /N8 12 Tf
2352 0.006 Tc
2353 (ts_slpret:)Tj
2354 48 0 TD
2355 /N6 12 Tf
2356 0.0994 Tc
2357 1.3732 Tw
2358 ( the priority to change to \(generally a higher priority\) when the job \
2359 returns from)Tj
2360 -48 -13.92 TD
2361 0.0863 Tc
2362 -0.0115 Tw
2363 (sleeping \(i.e., from the blocked queue\)  if ts_dispwait exceeds ts_max\
2364 wait \(see next entry\).)Tj
2365 -18 -24 TD
2366 -2.652 Tc
2367 0 Tw
2368 (\225)Tj
2369 18 0 TD
2370 /N8 12 Tf
2371 0.048 Tc
2372 (ts_maxwait)Tj
2373 58.56 0 TD
2374 /N6 12 Tf
2375 0.0504 Tc
2376 -0.0864 Tw
2377 (:   A per process counter,)Tj
2378 119.52 0 TD
2379 /N8 12 Tf
2380 0.018 Tc
2381 -0.154 Tw
2382 ( ts_dispwait,  )Tj
2383 69.6 0 TD
2384 /N6 12 Tf
2385 0.072 Tc
2386 -0.108 Tw
2387 (is initialized  to  zero  each  time a process)Tj
2388 -247.68 -14.16 TD
2389 0.0602 Tc
2390 1.081 Tw
2391 (is placed back on the  dispatcher  queue  after  its  time quantum has e\
2392 xpired or when it is)Tj
2393 0 -13.92 TD
2394 0.0602 Tc
2395 0.0347 Tw
2396 (awakened  \(ts_dispwait is not reset  to zero when a process  is preempt\
2397 ed  by  a  higher  prior-)Tj
2398 T*
2399 0.0862 Tc
2400 -0.1889 Tw
2401 (ity  process\).   This counter is incremented once per second.   If  a  \
2402 process)Tj
2403 -2.652 Tc
2404 0 Tw
2405 (\222)Tj
2406 0.0572 Tc
2407 -0.0932 Tw
2408 (s ts_dispwait value)Tj
2409 0 -14.16 TD
2410 0.0843 Tc
2411 0.1197 Tw
2412 (exceeds the ts_maxwait  value  for its level, the process)Tj
2413 -2.652 Tc
2414 0 Tw
2415 (\222)Tj
2416 0.1033 Tc
2417 0.1007 Tw
2418 (s priority is changed to that indicated)Tj
2419 0 -13.92 TD
2420 0.092 Tc
2421 -0.0189 Tw
2422 (by ts_lwait.  The purpose of this field is to prevent starvation.)Tj
2423 -18 -24 TD
2424 -2.652 Tc
2425 0 Tw
2426 (\225)Tj
2427 18 0 TD
2428 /N8 12 Tf
2429 0.036 Tc
2430 (ts_lwait:)Tj
2431 43.92 0 TD
2432 /N6 12 Tf
2433 0.0936 Tc
2434 0.5047 Tw
2435 ( the priority to change to \(generally a higher priority\) if the starva\
2436 tion timer expires)Tj
2437 -43.92 -13.92 TD
2438 0.0825 Tc
2439 -0.0225 Tw
2440 (before the job consumes its time-slice \(i.e., if ts_dispwait exceeds ts\
2441 _maxwait\).)Tj
2442 ET
2443 PDFVars/TermAll get exec end end
2444 userdict /pgsave get restore
2445 showpage
2446 %%PageTrailer
2447 %%EndPage
2448 %%Page: 4 4
2449 %%BeginPageSetup
2450 userdict /pgsave save put
2451 PDFVars begin PDF begin PDFVars/InitAll get exec
2452 %%EndPageSetup
2453 0 0 612 792 RC
2454 BT
2455 303.6 36 TD
2456 0 0 0 rg
2457 /N6 9.84 Tf
2458 0.0019 Tc
2459 0 Tw
2460 (4)Tj
2461 ET
2462 1 1 1 rg
2463 103.44 80.88 405.12 630.24 re
2464
2465 BT
2466 103.44 704.4 TD
2467 0 0 0 rg
2468 0.1271 Tc
2469 -0.0582 Tw
2470 (# ts_quantum  ts_tqexp  ts_slpret  ts_maxwait ts_lwait  #PRIORITY LEVEL \
2471     )Tj
2472 0 -10.08 TD
2473 -0.0635 Tc
2474 0.1735 Tw
2475 (200         0        50           0        50        #     0        )Tj
2476 T*
2477 0.1753 Tw
2478 (200         0        50           0        50        #     1       )Tj
2479 0 -9.84 TD
2480 0.1735 Tw
2481 (200         0        50           0        50        #     2        )Tj
2482 0 -10.08 TD
2483 (200         0        50           0        50        #     3        )Tj
2484 T*
2485 (200         0        50           0        50        #     4        )Tj
2486 0 -9.84 TD
2487 (200         0        50           0        50        #     5        )Tj
2488 0 -10.08 TD
2489 (200         0        50           0        50        #     6        )Tj
2490 T*
2491 (200         0        50           0        50        #     7        )Tj
2492 0 -9.84 TD
2493 (200         0        50           0        50        #     8        )Tj
2494 0 -10.08 TD
2495 (200         0        50           0        50        #     9        )Tj
2496 T*
2497 -0.0581 Tc
2498 0.1698 Tw
2499 (160         0        51           0        51        #    10        )Tj
2500 0 -9.84 TD
2501 (160         1        51           0        51        #    11        )Tj
2502 0 -10.08 TD
2503 (160         2        51           0        51        #    12        )Tj
2504 T*
2505 (160         3        51           0        51        #    13        )Tj
2506 0 -9.84 TD
2507 (160         4        51           0        51        #    14        )Tj
2508 0 -10.08 TD
2509 (160         5        51           0        51        #    15        )Tj
2510 T*
2511 (160         6        51           0        51        #    16        )Tj
2512 0 -9.84 TD
2513 (160         7        51           0        51        #    17        )Tj
2514 0 -10.08 TD
2515 (160         8        51           0        51        #    18        )Tj
2516 T*
2517 (160         9        51           0        51        #    19        )Tj
2518 0 -9.84 TD
2519 -0.0535 Tc
2520 0.1627 Tw
2521 (120        10        52           0        52        #    20        )Tj
2522 0 -10.08 TD
2523 (120        11        52           0        52        #    21        )Tj
2524 T*
2525 (120        12        52           0        52        #    22        )Tj
2526 0 -9.84 TD
2527 (120        13        52           0        52        #    23        )Tj
2528 0 -10.08 TD
2529 (120        14        52           0        52        #    24        )Tj
2530 T*
2531 (120        15        52           0        52        #    25        )Tj
2532 0 -9.84 TD
2533 (120        16        52           0        52        #    26        )Tj
2534 0 -10.08 TD
2535 (120        17        52           0        52        #    27        )Tj
2536 T*
2537 (120        18        52           0        52        #    28        )Tj
2538 0 -9.84 TD
2539 0.1609 Tw
2540 (120        19        52           0        52        #    29         )Tj
2541 0 -10.08 TD
2542 -0.0181 Tc
2543 0.1212 Tw
2544 (80        20        53           0        53        #    30         )Tj
2545 T*
2546 (80        21        53           0        53        #    31         )Tj
2547 0 -9.84 TD
2548 (80        22        53           0        53        #    32         )Tj
2549 0 -10.08 TD
2550 (80        23        53           0        53        #    33         )Tj
2551 T*
2552 0.1186 Tw
2553 (80        24        53           0        53        #    34        )Tj
2554 0 -9.84 TD
2555 0.1212 Tw
2556 (80        25        54           0        54        #    35         )Tj
2557 0 -10.08 TD
2558 (80        26        54           0        54        #    36         )Tj
2559 T*
2560 (80        27        54           0        54        #    37         )Tj
2561 0 -9.84 TD
2562 0.1186 Tw
2563 (80        28        54           0        54        #    38        )Tj
2564 0 -10.08 TD
2565 0.1212 Tw
2566 (80        29        54           0        54        #    39         )Tj
2567 T*
2568 (40        30        55           0        55        #    40         )Tj
2569 0 -9.84 TD
2570 0.1186 Tw
2571 (40        31        55           0        55        #    41        )Tj
2572 0 -10.08 TD
2573 0.1212 Tw
2574 (40        32        55           0        55        #    42         )Tj
2575 T*
2576 0.1186 Tw
2577 (40        33        55           0        55        #    43        )Tj
2578 0 -9.84 TD
2579 0.1212 Tw
2580 (40        34        55           0        55        #    44         )Tj
2581 0 -10.08 TD
2582 (40        35        56           0        56        #    45         )Tj
2583 T*
2584 (40        36        57           0        57        #    46         )Tj
2585 0 -9.84 TD
2586 (40        37        58           0        58        #    47         )Tj
2587 0 -10.08 TD
2588 (40        38        58           0        58        #    48         )Tj
2589 T*
2590 0.1186 Tw
2591 (40        39        58           0        59        #    49        )Tj
2592 0 -9.84 TD
2593 (40        40        58           0        59        #    50        )Tj
2594 0 -10.08 TD
2595 0.1212 Tw
2596 (40        41        58           0        59        #    51         )Tj
2597 T*
2598 (40        42        58           0        59        #    52         )Tj
2599 0 -9.84 TD
2600 (40        43        58           0        59        #    53         )Tj
2601 0 -10.08 TD
2602 (40        44        58           0        59        #    54         )Tj
2603 T*
2604 (40        45        58           0        59        #    55         )Tj
2605 0 -9.84 TD
2606 (40        46        58           0        59        #    56         )Tj
2607 0 -10.08 TD
2608 (40        47        58           0        59        #    57         )Tj
2609 T*
2610 0.1186 Tw
2611 (40        48        58           0        59        #    58        )Tj
2612 0 -9.84 TD
2613 -0.0281 Tc
2614 0.133 Tw
2615 (20        49        59       32000     59        #    59)Tj
2616 0 -18 TD
2617 0.1233 Tc
2618 -0.0801 Tw
2619 (Table 2: Default Solaris Time-Sharing Dispatch Table )Tj
2620 ET
2621 PDFVars/TermAll get exec end end
2622 userdict /pgsave get restore
2623 showpage
2624 %%PageTrailer
2625 %%EndPage
2626 %%Page: 5 5
2627 %%BeginPageSetup
2628 userdict /pgsave save put
2629 PDFVars begin PDF begin PDFVars/InitAll get exec
2630 %%EndPageSetup
2631 0 0 612 792 RC
2632 BT
2633 303.6 36 TD
2634 0 0 0 rg
2635 /N6 9.84 Tf
2636 0.0019 Tc
2637 0 Tw
2638 (5)Tj
2639 -231.6 676.08 TD
2640 /N6 12 Tf
2641 0.0731 Tc
2642 0.3138 Tw
2643 (In this table,  the priority of jobs ranges from a high of 59 down to 0.\
2644   Time-slices begin at 20ms)Tj
2645 0 -14.16 TD
2646 0.0887 Tc
2647 1.5553 Tw
2648 (at the highest priority and gradually increase in duration up to 200ms a\
2649 t the lowest priorities.)Tj
2650 0 -13.92 TD
2651 0.0769 Tc
2652 0.0521 Tw
2653 (Generally, the priority of a process decreases by 10 levels after it con\
2654 sumes its time-slice; the pri-)Tj
2655 T*
2656 0.0616 Tc
2657 0.091 Tw
2658 (ority of a process is increased to 50 or above when the starvation timer\
2659  expires.)Tj
2660 0 -26.16 TD
2661 /N8 12 Tf
2662 0.0591 Tc
2663 0 Tw
2664 (Implementation)Tj
2665 0 -24 TD
2666 /N6 12 Tf
2667 0.0869 Tc
2668 0.3571 Tw
2669 (For each job in the TS class, the following data structure is maintained\
2670  \(we)Tj
2671 -2.652 Tc
2672 0 Tw
2673 (\222)Tj
2674 0.1296 Tc
2675 0.2544 Tw
2676 (ve removed a few of)Tj
2677 0 -13.92 TD
2678 0.1285 Tc
2679 -0.0045 Tw
2680 (the fields for simplicity\):)Tj
2681 0 -12.72 TD
2682 /N17 9.84 Tf
2683 0.096 Tc
2684 0 Tw
2685 (/*)Tj
2686 0 -12 TD
2687 0.0901 Tc
2688 0.0059 Tw
2689 ( * time-sharing class specific thread structure)Tj
2690 T*
2691 0.096 Tc
2692 0 Tw
2693 ( */)Tj
2694 T*
2695 0.084 Tc
2696 0.012 Tw
2697 (typedef struct tsproc {)Tj
2698 T*
2699 0.096 Tc
2700 0 Tw
2701 (     long)Tj
2702 54 0 TD
2703 0.076 Tc
2704 0.02 Tw
2705 (          ts_timeleft;)Tj
2706 132 0 TD
2707 0.096 Tc
2708 0 Tw
2709 (  /* time remaining in quantum */)Tj
2710 -186 -12 TD
2711 0.09 Tc
2712 0.006 Tw
2713 (     long          ts_dispwait;  /* number of seconds since */)Tj
2714 0 -12 TD
2715 0.096 Tc
2716 -0.0062 Tw
2717 (                                 /* start of quantum \(not reset */)Tj
2718 T*
2719 -0.0067 Tw
2720 (                                 /* upon preemption\) */)Tj
2721 T*
2722 0.088 Tc
2723 0.008 Tw
2724 (     pri_t         ts_pri;       /* priority \(0-59\) */)Tj
2725 T*
2726 0.0891 Tc
2727 0.0069 Tw
2728 (     kthread_t     *ts_tp;       /* pointer to thread */)Tj
2729 T*
2730 0.0909 Tc
2731 0.0051 Tw
2732 (     struct tsproc *ts_next;     /* link to next tsproc on list */)Tj
2733 T*
2734 0.0907 Tc
2735 0.0053 Tw
2736 (     struct tsproc *ts_prev;     /* link to previous tsproc */)Tj
2737 T*
2738 0.096 Tc
2739 0 Tw
2740 (} tsproc_t;)Tj
2741 0 -23.28 TD
2742 /N6 12 Tf
2743 0.0908 Tc
2744 0.7224 Tw
2745 (The kthread_t structure tracks the necessary information to context-swit\
2746 ch to and from this pro-)Tj
2747 0 -13.92 TD
2748 0.0673 Tc
2749 0.6617 Tw
2750 (cess.  This structure is kept separate from the time-sharing class in or\
2751 der to separate the mecha-)Tj
2752 0 -14.16 TD
2753 0.0989 Tc
2754 0.0178 Tw
2755 (nisms of the dispatcher from the policies of the scheduler.  )Tj
2756 0 -24 TD
2757 0.0592 Tc
2758 0.0548 Tw
2759 (There are seven interesting routines in the TS class:)Tj
2760 T*
2761 -2.652 Tc
2762 0 Tw
2763 (\225)Tj
2764 18 0 TD
2765 /N8 12 Tf
2766 0.018 Tc
2767 -0.234 Tw
2768 (ts_enterclass\(thread *T\):)Tj
2769 128.16 0 TD
2770 /N6 12 Tf
2771 0.0846 Tc
2772 0.0321 Tw
2773 ( called when a new thread is added to the TS class.)Tj
2774 -128.16 -13.92 TD
2775 0.0675 Tc
2776 0.0405 Tw
2777 (It initializes a tsproc structure for this process and adds it to the li\
2778 st of processes)Tj
2779 -18 -24 TD
2780 -2.652 Tc
2781 0 Tw
2782 (\225)Tj
2783 18 0 TD
2784 /N8 12 Tf
2785 0.0256 Tc
2786 -0.2416 Tw
2787 (ts_exitclass\(thread *T\):)Tj
2788 120.24 0 TD
2789 /N6 12 Tf
2790 0.0819 Tc
2791 0.0155 Tw
2792 ( called when the thread terminates or exits the class.)Tj
2793 -120.24 -13.92 TD
2794 0.0722 Tc
2795 0.0518 Tw
2796 (The tsproc structure is removed from the list of processes.)Tj
2797 -18 -24 TD
2798 -2.652 Tc
2799 0 Tw
2800 (\225)Tj
2801 18 0 TD
2802 /N8 12 Tf
2803 0.048 Tc
2804 -0.264 Tw
2805 (ts_tick\(thread *T\):)Tj
2806 96.96 0 TD
2807 /N6 12 Tf
2808 0.1131 Tc
2809 -0.0891 Tw
2810 ( called once every 10ms with a pointer to the currently running thread.)Tj
2811 -96.96 -14.16 TD
2812 0.1146 Tc
2813 0.7934 Tw
2814 (The ts_timeleft variable of the running thread is decremented by one.  I\
2815 f ts_timeleft goes to)Tj
2816 0 -13.92 TD
2817 0.094 Tc
2818 -0.2712 Tw
2819 (zero, then its new priority is calculated according to the value of ts_t\
2820 qexp in the table, its time-)Tj
2821 T*
2822 0.0714 Tc
2823 -0.1356 Tw
2824 (slice is reset, and ts_dispwait is cleared; the thread is then added to \
2825 the back of the appropriate)Tj
2826 0 -14.16 TD
2827 0.1083 Tc
2828 -0.1101 Tw
2829 (priority queue and a new job is scheduled.)Tj
2830 -18 -24 TD
2831 -2.652 Tc
2832 0 Tw
2833 (\225)Tj
2834 18 0 TD
2835 /N8 12 Tf
2836 0.045 Tc
2837 (ts_update\(\):)Tj
2838 61.92 0 TD
2839 /N6 12 Tf
2840 0.1059 Tc
2841 -0.0619 Tw
2842 ( called once a second to check the starvation qualities of each job.)Tj
2843 -61.92 -13.92 TD
2844 0.082 Tc
2845 0.5848 Tw
2846 (The routine increments the ts_dispwait counter of every process in the c\
2847 lass \(even those that)Tj
2848 0 -13.92 TD
2849 0.0962 Tc
2850 1.3318 Tw
2851 (are blocked\)  by one.  If the job is on the ready queue \(i.e., the job\
2852  is neither running nor)Tj
2853 0 -14.16 TD
2854 0.0806 Tc
2855 0.0034 Tw
2856 (blocked\), then if  its ts_dispwait exceeds ts_maxwait, the priority and\
2857  the ts_dispwait value of)Tj
2858 0 -13.92 TD
2859 0.0752 Tc
2860 0.0488 Tw
2861 (this process are reset \(but not ts_timeleft\).  Note that this may invo\
2862 lve rearranging the priority)Tj
2863 T*
2864 0.0394 Tc
2865 0.1646 Tw
2866 (queues. )Tj
2867 -18 -24 TD
2868 -2.652 Tc
2869 0 Tw
2870 (\225)Tj
2871 18 0 TD
2872 /N8 12 Tf
2873 0.024 Tc
2874 -0.24 Tw
2875 (ts_sleep\(thread *T\):)Tj
2876 102.96 0 TD
2877 /N6 12 Tf
2878 0.0904 Tc
2879 0.0136 Tw
2880 ( called when the thread blocks \(e.g., due to I/O or synchronization\). \
2881 )Tj
2882 -102.96 -14.16 TD
2883 0.0935 Tc
2884 0.0785 Tw
2885 (The TS routine does not need to do anything in these circumstance.  Howe\
2886 ver, the dispatcher,)Tj
2887 ET
2888 PDFVars/TermAll get exec end end
2889 userdict /pgsave get restore
2890 showpage
2891 %%PageTrailer
2892 %%EndPage
2893 %%Page: 6 6
2894 %%BeginPageSetup
2895 userdict /pgsave save put
2896 PDFVars begin PDF begin PDFVars/InitAll get exec
2897 %%EndPageSetup
2898 0 0 612 792 RC
2899 BT
2900 303.6 36 TD
2901 0 0 0 rg
2902 /N6 9.84 Tf
2903 0.0019 Tc
2904 0 Tw
2905 (6)Tj
2906 -213.6 676.08 TD
2907 /N6 12 Tf
2908 0.081 Tc
2909 0.7401 Tw
2910 (or class-independent routines, must add the thread to the blocked queue \
2911 and schedule a new)Tj
2912 0 -14.16 TD
2913 0.096 Tc
2914 0 Tw
2915 (thread.)Tj
2916 -18 -24 TD
2917 -2.652 Tc
2918 (\225)Tj
2919 18 0 TD
2920 /N8 12 Tf
2921 0.0618 Tc
2922 -0.1578 Tw
2923 (ts_wakeup\(thread *T\): )Tj
2924 120.48 0 TD
2925 /N6 12 Tf
2926 0.1034 Tc
2927 -0.0194 Tw
2928 (called when the blocked thread becomes ready.  )Tj
2929 -120.48 -13.92 TD
2930 0.0809 Tc
2931 0.0751 Tw
2932 (If the ts_dispwait value associated with this process is greater than th\
2933 e value of ts_maxwait in)Tj
2934 0 -13.92 TD
2935 0.0816 Tc
2936 0.1224 Tw
2937 (the dispatch table, then the priority of the process is set to that spec\
2938 ified by ts_slpret, its time-)Tj
2939 0 -14.16 TD
2940 0.0892 Tc
2941 -0.1385 Tw
2942 (slice \(ts_timeleft\) is reset, and ts_dispwait is cleared.  If the prio\
2943 rity of this job is less than that)Tj
2944 0 -13.92 TD
2945 0.1074 Tc
2946 -0.1567 Tw
2947 (of the running job, then the newly awoken job is added to the back of it\
2948 s priority queue; other-)Tj
2949 T*
2950 0.0831 Tc
2951 0.0409 Tw
2952 (wise, it preempts the currently running job.)Tj
2953 -18 -24 TD
2954 -2.652 Tc
2955 0 Tw
2956 (\225)Tj
2957 18 0 TD
2958 /N8 12 Tf
2959 0.0206 Tc
2960 0.0034 Tw
2961 (ts_preempt\(thread *T\): )Tj
2962 123.84 0 TD
2963 /N6 12 Tf
2964 0.086 Tc
2965 0.022 Tw
2966 (called when the thread is preempted by a higher priority thread.)Tj
2967 -123.84 -14.16 TD
2968 0.1009 Tc
2969 -0.0278 Tw
2970 (The preempted thread is added to the front of its priority queue.)Tj
2971 -18 -25.92 TD
2972 /N8 12 Tf
2973 -0.0255 Tc
2974 0 Tw
2975 (Fairness)Tj
2976 0 -24 TD
2977 /N6 12 Tf
2978 0.086 Tc
2979 0.938 Tw
2980 (The Solaris time-sharing scheduler approximates fair allocations by decr\
2981 easing the priority of a)Tj
2982 0 -13.92 TD
2983 0.0971 Tc
2984 0.0469 Tw
2985 (job the more that it is scheduled.  Therefore, a job that is runnable re\
2986 latively infrequently remains)Tj
2987 0 -14.16 TD
2988 0.0963 Tc
2989 0.3477 Tw
2990 (at a higher priority and is scheduled over lower priority jobs.  However\
2991 , due to the configuration)Tj
2992 0 -13.92 TD
2993 0.0914 Tc
2994 -0.1674 Tw
2995 (of the default dispatch table \(i.e., the starvation interval is set to \
2996 zero\), you will note that the prior-)Tj
2997 T*
2998 0.1038 Tc
2999 0.8061 Tw
3000 (ity of every process is raised once a second, regardless of whether or n\
3001 ot it is actually starving.)Tj
3002 0 -14.16 TD
3003 0.0824 Tc
3004 0.1401 Tw
3005 (Thus, the allocation history of each process is erased every second and \
3006 compute-bound processes)Tj
3007 0 -13.92 TD
3008 0.0881 Tc
3009 -0.0241 Tw
3010 (tend to acquire more than their fair share of the resources.  )Tj
3011 0 -24 TD
3012 0.0766 Tc
3013 0.8794 Tw
3014 (This behavior is illustrated in Figure 1 for three competing jobs that r\
3015 elinquish the processor at)Tj
3016 0 -13.92 TD
3017 0.123 Tc
3018 0.1343 Tw
3019 (different rates while waiting for I/O to complete: a )Tj
3020 247.68 0 TD
3021 /N10 12 Tf
3022 0.04 Tc
3023 0 Tw
3024 (coarse)Tj
3025 31.92 0 TD
3026 /N6 12 Tf
3027 0.0662 Tc
3028 0.3092 Tw
3029 ( job that rarely relinquishes the CPU, a)Tj
3030 -279.6 -14.16 TD
3031 /N10 12 Tf
3032 0 Tc
3033 0 Tw
3034 (medium)Tj
3035 37.92 0 TD
3036 /N6 12 Tf
3037 0.1129 Tc
3038 -0.0589 Tw
3039 ( job that does so more frequently, and a)Tj
3040 189.36 0 TD
3041 /N10 12 Tf
3042 -0.06 Tc
3043 -0.18 Tw
3044 ( fine)Tj
3045 21.12 0 TD
3046 /N6 12 Tf
3047 0.0796 Tc
3048 0.0444 Tw
3049 ( job that often relinquishes the CPU.  The fig-)Tj
3050 -248.4 -13.92 TD
3051 0.091 Tc
3052 -0.157 Tw
3053 (ure shows a typical snapshot over a five second execution interval.  As \
3054 described, each second the)Tj
3055 0 -13.92 TD
3056 0.0788 Tc
3057 0.2452 Tw
3058 (priority of all three jobs is raised to level 50 or higher.  As a job ex\
3059 ecutes and consumes its time-)Tj
3060 0 -14.16 TD
3061 0.0872 Tc
3062 -0.1232 Tw
3063 (slice, its priority is lowered about ten levels  Since the coarse job ru\
3064 ns more frequently, it drops in)Tj
3065 0 -13.92 TD
3066 0.0922 Tc
3067 -0.0215 Tw
3068 (priority at a faster rate than the other two jobs.)Tj
3069 ET
3070 1 1 1 rg
3071 160.08 103.92 288 207.12 re
3072
3073 q
3074 288 0 0 207.12 160.08 103.92 cm
3075 BI
3076         /Width 341
3077         /Height 252
3078         /BitsPerComponent 1
3079         /ColorSpace /DeviceGray 
3080         /Decode [1 0 ]
3081         /DecodeParms [null <</K -1 
3082 /Columns 341 >> ]
3083         /Filter [/ASCII85Decode /CCITTFaxDecode ]
3084 ID
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~>
3130 EI 
3131 Q
3132 BT
3133 286.08 85.92 TD
3134 0 0 0 rg
3135 /N8 12 Tf
3136 -0.0086 Tc
3137 0.0326 Tw
3138 (Figure 1)Tj
3139 ET
3140 PDFVars/TermAll get exec end end
3141 userdict /pgsave get restore
3142 showpage
3143 %%PageTrailer
3144 %%EndPage
3145 %%Page: 7 7
3146 %%BeginPageSetup
3147 userdict /pgsave save put
3148 PDFVars begin PDF begin PDFVars/InitAll get exec
3149 %%EndPageSetup
3150 0 0 612 792 RC
3151 BT
3152 303.6 36 TD
3153 0 0 0 rg
3154 /N6 9.84 Tf
3155 0.0019 Tc
3156 0 Tw
3157 (7)Tj
3158 -231.6 676.08 TD
3159 /N6 12 Tf
3160 0.1058 Tc
3161 -0.1418 Tw
3162 (The impact of this policy on the relative execution times of the three a\
3163 pplications is shown in Fig-)Tj
3164 0 -14.16 TD
3165 0.0714 Tc
3166 -0.2345 Tw
3167 (ure 2.  Because the coarse application acquires more CPU time, it finish\
3168 es its work earlier than the)Tj
3169 0 -13.92 TD
3170 0.0967 Tc
3171 -0.2527 Tw
3172 (other applications, even though all three jobs require the same amount o\
3173 f time in a dedicated envi-)Tj
3174 T*
3175 0.1286 Tc
3176 0 Tw
3177 (ronment)Tj
3178 0 -290.4 TD
3179 /N8 13.92 Tf
3180 0.0697 Tc
3181 -0.0611 Tw
3182 (Project Requirements)Tj
3183 0 -24.72 TD
3184 /N6 12 Tf
3185 0.1132 Tc
3186 1.2458 Tw
3187 (For your project, you need to implement code that is similar in function\
3188 ality to the Solaris TS)Tj
3189 0 -13.92 TD
3190 0.1128 Tc
3191 -0.0954 Tw
3192 (scheduler, but your code does not have to be structured in the same way.\
3193   Implement your code in)Tj
3194 0 -14.16 TD
3195 0.1186 Tc
3196 -0.0253 Tw
3197 (whatever manner you find easiest when interfacing with the already exist\
3198 ing Nachos code. )Tj
3199 0 -24 TD
3200 0.0825 Tc
3201 0.2743 Tw
3202 (Specifically, you are not required to separate the class-independent and\
3203  class-dependent schedul-)Tj
3204 0 -13.92 TD
3205 0.1074 Tc
3206 0.6886 Tw
3207 (ing functionality.  You do not need to support multiple scheduling class\
3208 es.  You can implement)Tj
3209 T*
3210 0.13 Tc
3211 0.419 Tw
3212 (any routines that you feel are necessary, not just the seven functions w\
3213 e specifically listed.  You)Tj
3214 0 -14.16 TD
3215 0.1262 Tc
3216 -0.0593 Tw
3217 (can pass any parameters that you find helpful.)Tj
3218 0 -24 TD
3219 0.068 Tc
3220 1.416 Tw
3221 (However, it is important that your approach be table-driven, with a user\
3222 -configurable dispatch)Tj
3223 0 -13.92 TD
3224 0.1033 Tc
3225 0.154 Tw
3226 (table.  Your table should be initialized to the default values in Solari\
3227 s 2.6, but you may also want)Tj
3228 T*
3229 0.1348 Tc
3230 0.3492 Tw
3231 (to experiment with different configurations.  To demonstrate the functio\
3232 nality of your scheduler,)Tj
3233 0 -14.16 TD
3234 0.1051 Tc
3235 0.3089 Tw
3236 (you may want to print out the change in priorities of several different \
3237 competing processes, as in)Tj
3238 0 -13.92 TD
3239 0.0405 Tc
3240 0.1635 Tw
3241 (Figure 1.  )Tj
3242 ET
3243 1 1 1 rg
3244 150.96 432 315.12 225.12 re
3245
3246 q
3247 315.12 0 0 225.12 150.96 432 cm
3248 BI
3249         /Width 341
3250         /Height 252
3251         /BitsPerComponent 1
3252         /ColorSpace /DeviceGray 
3253         /Decode [1 0 ]
3254         /DecodeParms [null <</K -1 
3255 /Columns 341 >> ]
3256         /Filter [/ASCII85Decode /CCITTFaxDecode ]
3257 ID
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
3295 6']N,O7&?j^]XX&~>
3296 EI 
3297 Q
3298 BT
3299 286.08 414 TD
3300 0 0 0 rg
3301 /N8 12 Tf
3302 -0.0086 Tc
3303 0.0326 Tw
3304 (Figure 2)Tj
3305 ET
3306 PDFVars/TermAll get exec end end
3307 userdict /pgsave get restore
3308 showpage
3309 %%PageTrailer
3310 %%EndPage
3311 %%Trailer
3312 %%DocumentProcessColors: Cyan Magenta Yellow Black
3313 %%EOF