AaTd   p@@P0 0 `0PP P HH $ @d HHHHff@  d Footnote TableFootnote**.\t.\t/ - :;,.!?4cZ7cZTOCHeading1Heading2   FEquationVariables@=?`???@@====== <$lastpagenum><$monthname> <$daynum>, <$year>"<$monthnum>/<$daynum>/<$shortyear>J<$hour>:<$minute00> <$ampm> on <$dayname>, <$monthname> <$daynum>, <$year>"<$monthnum>/<$daynum>/<$shortyear><$monthname> <$daynum>, <$year>"<$monthnum>/<$daynum>/<$shortyear> <$fullfilename> <$filename> <$paratext[Title]> <$paratext[Heading1]> <$curpagenum> <$marker1> <$marker2> (Continued)+ (Sheet <$tblsheetnum> of <$tblsheetcount>)Heading & Page <$paratext> on page<$pagenum>Pagepage<$pagenum>See Heading & Page%See <$paratext> on page<$pagenum>. Table All7Table<$paranumonly>, <$paratext>, on page<$pagenum>Table Number & Page'Table<$paranumonly> on page<$pagenum>Heading <$paratext>?HTML Headings++A88::33557BAHHA====>>>>> > > >>>>>>>>>>!>#>%>'>)>+>->/>1>3>5>7>9>;>=>?>A>B>C>E>G>I>K>M>O>Q>S>U>W>X>Y>[>]>_>a>c>e>g>i>k>m>o>q>s>u>w>y>{>}>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????? ? ? ??????????!?#?%?'?)?+?-?/?1?3?5?7?9?;?=???A?C?E?G?I?K?M?O?Q?S?U?W?Y?[?]?_?b?d?f?h?j?l?n?p?r?t?v?x?z?|?~???????????????????????????????????????????????????@@!@#@%@'@)@+@-@/@1@3@5@7@9@;@=@?@A@B==???;#???;/;2;5=??????@@@@@ @ @@@@@D*@G,@H$@J,@K.@L.@M.@N.@O.@P.@Q.@R.@S.@T.@U.@V.@W.@X.@Y.@Z.@[.@\.@].@^.@_.@`.@a.@b.@c.@d.@e.@f.@g.@h.@i.@j.@k.@l.@m.@o,@p/@q/@r/@s/@t/@u/dq5+d@xBB d=d=; HmR=HmRHRHRFootnote Hr@=Hr@HzHz Single LineH靕= Footnote =  HD= HDHH Double LineH=  Double Line= = H֝=  Single Line= d5p77HZ֝=; TableFootnoted=d?靕l d=d1QRUX[^adgjmpsvy| %).1W,܁܁@m }蝝d =蝝d WaHTML Mapping Table }H蝝d =H蝝d Wa }H蝝d =H蝝d Wa }H蝝d =H蝝d Wa }H蝝d >H蝝d Wa }H>H! FrameMaker PA Source Item }H >H Wa HTML Item }H >H Wa }H>H W aInclude Auto# } H>  H W a Comments }H> H W a }HH> HH W aElement }H>#H W a New Topic? }H>H Wa } H> H Wa }H > $H Wa P:Date Line }HH >#%HH WaP }H >$&H WaN }H >%'H WaN } H >&( H Wa }EH > ')EH Wa P:Reading }HEH >"(*HEH WaP }EH >$)+EH WaN }EH >&*,EH WaN } EH >(+- EH Wa }QH >*,.QH WaP:Title }HQH >,-/HQH WaH* }QH >..0QH WaN }QH >0/1QH WaN } QH >202 QH Wa }]H >413]H WaP:Body }H]H >624H]H W aP }]H >835]H W!aN }]H >:46]H W"aN } ]H ><57 ]H W#a }iH(>>68iH( W$a P:Numbered1 }HiH(>@79HiH((%aLI &a Parent = OL Q'a Depth = 0 }iH(>D8:iH( W(aN }iH(>F9;iH( W)aY } iH(>H:< iH( W*a }띝H >J;=띝H  W+a P:Heading1 }H띝H >L<>H띝H  W,aH* }띝H >N=?띝H  W-aN }띝H >P>@띝H  W.aN } 띝H >R?A 띝H  W/a }H(>T@BH(  W0a P:Numbered }HH(>VACHH(( 1aP 2a Parent = OL Q3a Depth = 0 }H(>ZBDH(  W4aN }H(>\CEH(  W5aY } H(>^DF H(  W6a }H >`EGH  W7a P:CellBody }HH >bFHHH  W8aP }H >dGIH  W9aN }H >fHJH  W:aN } H >hIK H  W;a }H >jJLH  W<aP:CellHeading }HH >lKMHH  W=aP }H >nLNH  W>aN }H >pMOH  W?aN } H >rNP H  W@a }H >tOQH  WAa P:Footnote }HH >vPRHH  WBaP }H >xQSH  WCaN }H >zRTH  WDaN } H >|SU H  WEa }ȝH(>~TVȝH( WFa P:Bulleted }HȝH(>UWHȝH((GaLI Ha Parent = UL QIa Depth = 0 }ȝH(>VXȝH( WJaN }ȝH(>WYȝH( WKaN } ȝH(>XZ ȝH( WLa }H >Y[H WMa P:Heading2 }HH >Z\HH WNaH* }H >[]H WOaN }H >\^H WPaN } H >]_ H WQa }H>^`HR! P:HeadingRuPAnIn }HH>_aHH WSaP }H>`bH WTaN }H>acH WUaN } H>bd H WVa }7H >ce7H WWa P:Indented }H7H >dfH7H WXaP }7H >eg7H WYaN }7H >fh7H WZaN } 7H >gi 7H W[a }CH>hjCH\! P:TableFootPAnote }HCH>ikHCH W]aP }CH>jlCH W^aN }CH>kmCH W_aN } CH>ln CH W`a }]H(>mo]H( Waa P:TableTitle }H]H(>npH]H((baLI ca Parent = OL Qda Depth = 0 }]H(>oq]H( WeaN }]H(>pr]H( WfaN } ]H(>qs ]H( Wga }֝H >rt֝H Wha P:BodySpaced }H֝H >suH֝H WiaP }֝H >tv֝H WjaN }֝H >uw֝H WkaN } ֝H >vx ֝H Wla }띝H >wy띝H WmaP:Date }H띝H >xzH띝H WnaP }띝H >y{띝H WoaN }띝H >z|띝H WpaN } 띝H >{} 띝H Wqa }H(>|~H(r! P:NumberedPASpaced }HH(>}HH((saP ta Parent = OL Qua Depth = 0 }H(>~H( WvaN }H(>H( WwaY } H(> H( Wxa }H >H WyaP:DateProject }HH >HH WzaP }H >H W{aN }H >H W|aN } H > H W}a }H >H W~a C:BoldItalic }HH > HH WaSTRONG }H > H WaN }H > H WaN } H > H Wa }H> H! C:EquationPA Variables }HH> HH WaEM }H> H WaN }H>H WaN } H> H Wa }H >H Wa C:Italic }HH >HH W aEM }H ?H W aN }H ?H W aN } H ? H W a }H ?H W aC:Bold }HH ?HH WaSTRONG }H ? H WaN }H ? H WaN } H ? H Wa }H?H! X:Heading & PAPage }HH?HH Wa See Also }H?H WaN }H?H WaN } H? H Wa })H ?!)H WaX:Page }H)H ? "H)H Wa See Also })H ?!#)H WaN })H ? "$)H WaN } )H ?"#% )H Wa }5H?$$&5H! X:See HeadPA ing & Page }H5H?&%'H5H Wa See Also }5H?(&(5H WaN }5H?*')5H WaN } 5H?,(* 5H W a }OH ?.)+OH W!a X:Table All }HOH ?0*,HOH W"a See Also }OH ?2+-OH W#aN }OH ?4,.OH W$aN } OH ?6-/ OH W%a }[H?8.0[H &! X:Table NumPA ber & Page }H[H?:/1H[H  W'a See Also }[H?<02[H  W(aN }[H?>13[H  W)aN } [H?@24 [H  W*a }uH?B35uH !W+a X:Heading }HuH?D46HuH!,! USE XREF PAFMT }uH?F57uH !W-aN }uH?H68uH !W.aN } uH?J79 uH !W/a }蝝H?L8:蝝H "W0a P:Header }H蝝H?N9;H蝝H"1!THROW PAAWAY }蝝H?P:<蝝H "W2aN }蝝H?R;=蝝H "W3aN } 蝝H?T<> 蝝H "W4a }H ?V=?H #W5a }HH ?X>@HH #W6a }H ?Z?AH #W7a }H ?\@BH #W8a } H ?^AC H #W9a }d ?aBFd $W:aHTML Options Table }Dd ?cDd $W;a }Dd ?eDd $W<a }D ?gCGD %W=a }DH ?iFHDH %W>a }H ?kGIH %W?a }םD ?mHJםD &W@a Image Format }DםH ?oIKDםH &WAaIMAGGIF }םH ?qJLםH &WBa }D ?sKMD 'WCaBanners }DH ?uLNDH 'WDaN }H ?wMOH 'WEa }ԝD?yNPԝD(F! Banner ReferPA ence Frame }DԝH?{OQDԝH (WGa }ԝH?}PԝH (WHa }D(?>SD((@)I! Copy Files  Imported by PA Rerefernce }DH(?>RTDH( @)WJa }H(?>SUH( @)WKa }DD ?>TVDD @*WLa }DDH ?>UWDDH @*WMa }DH ?>VXDH @*WNa }Vd ?>W[Vd @+WOaSystem Macros }?Vd ?>?Vd @+WPa }?Vd ?>?Vd @+WQa }f? ?>X\f? @,WRa Macro Name }?fH ?>[]?fH @,WSa Replace With }fH ?>\^fH @,WTa Comments }r? ?>]_r? @-WUa StartOfDoc }?rH ?>^`?rH @-WVa }rH ?>_arH @-WWa }~? ?>`b~? @.WXa EndOfDoc }?~H ?>ac?~H @.WYa }~H ?>bd~H @.WZa }??>ce?@/[! StartOfSubPADoc }?H?>df?H @/W\a }H?>egH @/W]a }??>fh?@0^! EndOfSubPADoc }?H?>gi?H @0W_a }H?>hjH @0W`a }??>ik?@1a! StartOfFirstPASubDoc }?H?>jl?H @1Wba }H?>kmH @1Wca }??>ln?@2d! EndOfFirstPASubDoc }?H?>mo?H @2Wea }H?>npH @2Wfa }??>oq?@3g! StartOfLastPASubDoc }?H?>pr?H @3Wha }H?>qsH @3Wia } ??>rt ?@4j! EndOfLastPASubDoc }? H?>su? H @4Wka } H?>tv H @4Wla }&? ?>uw&? @5Wma }?&H ?>vx?&H @5Wna }&H ?>wy&H @5Woa }8d ?>x|8d @6WpaCross-Reference Macros }?8d ?>?8d @6Wqa }?8d ?>?8d @6Wra }H? ?>y}H? @7Wsa Macro Name }?HH ?>|~?HH @7Wta Replace With }HH ?>}HH @7Wua Comments }T??>~T? @8Wva See Also }?TH?>?TH@8w! See Also: PA <$paratext> }TH?>TH @8Wxa }n? ?>n? @9Wya }?nH ?>?nH @9Wza }nH ?>nH @9W{a }d ?> d @:WaGeneral Macros }?d ?>?d @:Wa }?d ?>?d @:Wa }?d ?>?d @:Wa }? ?>"? @;Wa Macro Name d@ d@ d 靕l d@ do  W܁܁@m }蝝d @ 蝝d  <W|aHeadings Table }H蝝d @  H蝝d  <W}a }H蝝d @" H蝝d  <W~a }H@$ H =!Paragraph ForPAmat }HH@& HH  =WaHeading Level }H@( H  =Wa Comments }H@* H >W aTitle }HH@, HH  >Wa }H@. H  >Wa }KH @0 KH  ?Wa Heading1 }HKH @2 HKH  ?Wa }KH @4 KH  ?Wa }WH @6 WH  @Wa Heading2 }HWH @8 HWH  @W a }WH @: WH  @W a }cH @< cH  AW a }HcH @> HcH  AW a }cH @@ cH  AW a "d=8H}?H ?> #?H @;Wa Replace With }H ?>"$H @;WaHead }H ?>#%H @;Wa Comments }? ?>$&? @BWa }?H ?>%'?H @BW a }H ?>&(H @BW!a }H ?>')H @BW"a }d @>(.d @CW#aCharacter Macros HH;"HH❝+G܁e HH;$3HH**靕l}?d @>?d @CW$a }?d @>?d @CW%a }? @>)/? @DW&a Macro Name }?H @ >.0?H @DW'a Replace With }H @ >/1H @DW(a Comments }? @ >0<? @EW)a HUV ;.HUV ❝3G܁e HUV ;05+HUV 22靕l H$ ;1H$ 5G܁e H$ ;33H$ 44靕l HH;4HHǝ007- `First Readers Writers Problem 0,` Introduction 1܁`LThis algorithm uses a monitor to solve the first readers-writers problem. 3V` Algorithm 4܁h`(1 readerwriter :  monitor 5t`/ 2 var readcount : integer; 6`+ 3  writing : boolean; 7`C 4  oktoread ,  oktowrite : condition; 8`2 5 procedure entry  beginread ; 9` 6 begin :`> 7  readcount  :=  readcount  + 1; ;`7 8  if   writing   then <`2 9  oktoread . wait ; =` 10 end ; >`@ 11 procedure   entry   endread ; ?` 12 begin @`? 13  readcount  :=  readcount  - 1; A`> 14  if   readcount  = 0  then B`6 15  oktowrite . signal ; C` 16  end ; D`C 17 procedure   entry   beginwrite ; E` 18 begin F`] 19  if   readcount  > 0  or   writing   then G`4 20  oktowrite . wait ; H`* 21  writing  := true; I` 22 end ; J`A 23 procedure   entry   endwrite ; K`- 24 var  i : integer; L` 25 begin M`+ 26  writing  := false; N`> 27  if   readcount  > 0  then O`K 28  for   i  := 1  to   readcount P`6 29  oktoread . signal ; Q` 30  else R`5 31  oktowrite . signal ; S` 32 end ; T` 33 begin U`E 34  readcount  := 0;  writing  := false; V` 35 end . X` Comments Y܁.$|lines 1-4Here,  readcount  contains the number of processes reading the file, and  writing  is true when a 0?swriter is writing to the file.  Oktoread  and  oktowrite  correspond to the logical conditions of DEbeing able to access the file for reading and writing, respectively. Zp$ulines 7-9In this routine, the reader announces that it is ready to read (by adding 1 to  readcount ). If a lwriter is accessing the file, it blocks on the condition variable  oktoread ; when done, the writer  DDwill signal on that condition variable, and the reader can proceed. [+$vlines 13-15In this routine, the reader announces that it is done (by subtracting 1 from  readcount ). If no Pemore readers are reading, it indicates a writer may go ahead by signalling on the condition variable HH;6HHB66 靕lH$ =!:H$ 99靕l H$ =!H$ 8W܁܁l@April 19, 1999ECS 150 Spring 1999Page 2 HUV =!8HHUV GG靕l EGxR=EGxREPwEPw TableFootnote}?H @>1=?H @EW*a }H @><H @EW+a d@??d@>d@@ 靕l d@>dR=?RUX[^adgjmpsvy| %).1 HH@yHHi  B[܁܁@oktowrite . 3\큩 {lines 19-21In this routine, the writer first sees if any readers or writers are accessing the file; if so, it waits until mthey are done. Then it indicates that it is writing to the file by setting the boolean  writing  to @ true . #] lines 26-31Here, the writer first announces it is done by setting  writing  to  false . Since readers have prihority, it then checks to see if any readers are waiting; if so, it signals all of them (as many readers @Ncan access the file simultaneously). If not, it signals any writers waiting. ^`(line 34This initializes the variables. A` HH@{HH7AA 靕l HUV =!HUV ❝:W܁܁l?Last modified at 10:52 pm on Monday, April 19, 1999 HH=!:HHII 靕l HH=!HH❝HW܁܁e dLeftd!Rightd Referenced dHTMLd>HTMLd HeadingsdĿ@@ GMapping Table Title. Ŀ@@ GBody. f@ GBody. f@ G BodySpaced. Ŀ@@ GFooter. f@T G TableTitleT:Table : . f@ G Bulleted\t. f@ G...Date. mf@ Gl. DateProject. Ŀ@@ GHeader Double Line. f@T GHeading1Body. f@ G Numbered.\t. f@E G Numbered1.\tNumbered. f@ G NumberedSpaced.\t. f@ G.Reading. f@ GBody. Ŀ@@ GHeader Double Line. f@ G CellFooting. f@ G CellHeading. f@ G CellBody. Ŀ@@ GMapping Table Cell.  f@PGTitleBody. Ŀ@@Mapping Table Cell. f@$G.Line Single Line. Ŀ@@ Mapping Table Cell. Ŀ@@ GMapping Table Cell. f@ GCellBody. f@ G CellHeading. f@ G Footnote. f@T GHeading2Body. f@T G HeadingRunInBody. f@ G Indented. f@ G TableFootnote. f@T G TableTitleT:Table : .  f@PGTitleBody.  f@T GHeading1Body. f@ G .$.H.l..... .D.h.Code. Hf@ GH. LineComment. f@ G .$.H.l..... .D.h.Code. Hf@ GH. LineComment.  G GG蜜Emphasis G蜜  G GG蜜EquationVariables  蜜 BoldItalic ۸GItalic G     G G GBold  G G GZZThinMediumDoubleThick@ Very Thin HHHHHFormat A HHHHHFormat BH Mapping TableH Mapping Tableh*|#HHHHHf$*DHH+5?HH&69?HH :B?HHH CE?HH*6 ? @ h( A B C D E h  F G H I J h  K L M N O 𝝡h  P Q R S T ȝh( UVWXYh Z[\]^h_`abc7h defghChijklm]h(nopqr֝h stuvw띝h xyz{|h(}~h h    𝝡h  h h h)h  !"#$5h%&'()Oh  *+,-.[h!/ 0 1 2 3 uh "4!5!6!7!8!蝝h!#9":";"<"="h ">#?#@#A#B# %C$D$E$ $&F%G%H%ם %'I&J&K& &(L'M'N'ԝ')O(P(Q(((*@R)S)T)D )@U*V*W*V ,@X+Y+Z+f +-@[,\,],r ,.@^-_-`-~ -/@a.b.c..0@d/e/f//1@g0h0i002@j1k1l113@m2n2o224@p3q3r3 35@s4t4u4& 4@v5w5x58 7@y6z6{6H 68@|7}7~7T79@888n 8@999 ;@:::: :B@ ;";#;$;蝝 =  <<<<> ====? >>>K >@ ???W ?A @@@c @ AAA ;@%B&B'B(B D@)C,C-C CE@.D/D0D D@1E