ࡱ> zRdO) ZPicturesMPowerPoint Document(*MSummaryInformation(h$  !"#$%&'()+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy{|}~18jSp {m%v;l V<̰i`uGfkk(ȄLj{Cob^dzEqa;D֛N;*u>Z%A.Mp_lWol־s;k]iɶuM\"[j2Z nuİ.zI-ͬeDVZYm=e u6B6xlSdMM6J`M`5jMk:2X3:WiKR>*9ez]!Ut$ɯvBk-騥J&J*-eTR\K^H~kDžnRY&-::Sb^vjrI&@3k\aEj|V_sVZ2ò>+Sk1.YbM[nu9q:r8ÉZDnu媛/bFBF?^Fɬ,;+E!$T,2픢>&Z@zk~$ҼrEkͭ4Z[jwV8Y&?5~S򏥗=UXN |{nutۢ &6jP dmnrd+HswB_tMzM$ qƍ?2GFV$GrA9!ܐ|ZBiCVڝS-tr\Oa%ҧ2VsKYT@DGznK:Пumk$#wC.[ݕLwdK\ǏBW%Ҝ[TjK3)dg=]-̓gA^ay%7Y+!4`]4DhS*{n;6[ 7-ڟO4^Yrv (#d&'?.+{=wm+7pU}nC2v?W;t[|6|&4`Ŝ|cܻ֗9pjuŚ.|E"Nx;Okmմ7N5tVQİJJn[-AY\_kQE)nPͣo4czkif+ T֌苧5<:멯Euma=ZHa dӭXJ!yt)XM{dRP3J  G65 눿k5֔<խ`Gޖޖ"lq{1StS,Nt:riFp֚Ǻi,+gllpbYc sdM%6NhYn##eF9N"(оjC}5٬VzԪ9i+aVL{Y>kuA[_Hytcu&tteb&9C䟧 xE%ܯڥeQ*B|OgiR@'H"+T7$B~6n6'5^ҎwC8HY!7ƃ/nfs;ت]0bC7=z xsSId%PbdǒqAB< {iRKH; $,<)-$E+T%q@͇s[M]2=L=cZխn۔nƁ_xnw[o]}/pZ*g[㇞Q"d!sԣH^xZK[Tē.2>\-; /` <$VoiASЉ@C>(/q%.#uOiG"Bz>}@!=Ӥ {.@$161,^bBF&Gw2}b> \$9ԑRKK}.-T]=$?#"OٷWDwDRz_XWyDȾGIr3_b[+n \_9Iz'z{# rkzJk|wm^J‹Mlz}YЕR{z^;zWuR:{0</].u߅IKA-9$_E׭nrX`^9Ǟ#֝#ƞ喝ޝ"G~>Nj=8noAx11ɻCz{w 0LnaOxH1"'#=5tEGl4dY {9-0]eC>Zf$+ <U啣i62Lp4e"cc ;v5A* N4`&ar0w&8A9aee&4䩓WY7NOrRHUY*2 (A=ߺ?,n5p=OqE+b#/e.ّgs%-+CB_?+XUwo_[ IBn\ܹ2s7lcO{ZDg g5ȥk\)(ZEneVUvŤ[*JOT$c@xiHsOn we6cֻrUKzX $.tcMEG!ç\\IbFbr*.%~4|vљ2:bI&^vI=R\2XzXRxxL2BxtpͬܺBܰ-q8-q6p[:hQ?ǔ`38_]-D_K?w,:0WӒ' HN.Tp .b [iƇm$w&N%)F$&6r5JUɏ5%&0ZʼxxWYg% %>ݕrg&KײKtbpblOl[V:^kn{ˈn@j+'sɑ rni_C~C΁dѫsǤ̥ q\;N}sqZ~w%N{ĝs>]tx Sd&3\@9;F87RFQ!R 龺䮻)nQ$Q\oI뺰K](ssmUQMum-nmsm?>[o>f$={,MAs{"- &Qy*1Z$nAvȵ{`?]^2wK.zNQ{YY/;ɘԗ#püud1}/~qC<ύoǭ^I*,vX]huҕVKZqhSN{y4"':" yu'#%Ə%FJb}> wO_x + E9[qWΚ~vmKnk6e-\u*'Vč\96Qbi F~q6H󳜵YG,9V b?׆Zja9VƲZ =kq|\k/3l"T0=ۭ/lEE&Z9dm5V>p+l - l>ez͖kŶJGj25dgk l\MDD-mH]In;^nwC-w-ϗd{m,rFkTW[sjv~A^+i4<*[.bɬ&;АSit}u֏=t ^&cƷIqr,jXr Aqp1]l@RHqt'ѹrUdDK-[+{h%:ݞ%x>Ye oR@J2KxQz Il%b1=apM-d Lq&)~@Yd-{%⃸|Ĥ U*PD[fMU曄lu-cPV2Jtb]XJֵs*0d'+ 4B.d-=c=oL Jjվ{ž]DH[w;.`=q,xd '@tfCS,1_˚oZ/YRIY3qs}LG!vc-@[ɒj>g01Zn1MQyQϷ/: }AOmL}!ǘE|~գjG)ƜsI/`E}%}SJ_$^?(BW[]̼i[}-~hb[tKm/Q?_>^2K-.Gݰ᳾MndVJzIક[>x '}Ꙕ7 d,ΕG; YѪkW=h~EuZU|EC0(@=}yu:GRE݊h\y5Ɏ\̓vPzydU6h`8ܟڔ}h|܊k#櫃JŞO\%5PZc2rE5".o:o *{+eZIt#K:~%~ ~ fV7Ȧ[kֲ1K{ j|_z%FEFFEtToooQ >dDWt椝(I6WyUP˚Kk__ mUPzk>W+IvLV$0WYw }q*wDY+^+|s+}KKDeO1YS,才Vo+K aq",60W 7ͺvp3m|ڋ)Wۊ|7Of|ڸ#ƠhHlurѷl?{N O)\**k r p' pG pg p p p p p p' pG pgy~L}w[}qyٳe^!/gȝqt?XsW+cay\-KB,knQ skh_mil$pEckMh6cO(bH|읍ƟqmemUM&CN_R-냅]1J ӨD&Us9$E#'b0nIΥ MVw!˲1MpGm2wjFE-g(׸ 0I4s en-滅ܱ͐6N2Yz$/Fxq%VX2kȟJpJVZu$5ؕz&Ě6i:+< Wi3(қIo<UmK0t7NbWX:[>Χ>2LK ,b&qfa XN -AUPFwis82KW[ZX!l|-q=|s;`[y;٫ntcvgIvvp-ʎoJ:P3&FhL2S+6d[Qٝܓ uʵ5DU!+-Up9V  ‡ © éocWؓ EˎA5fneiYSJy29?-7|8+>2'>727w07΅>YNq`?1>/AF>0KK"OxϏ->01e< \> q~WWNZ`ށ)y@!) 1g L #H,TU吕A_vҀ !8&%$2Yw%ѓP3d0Þ-A8s30aƁQԇ!a1;3 wwGL9|{Ml OaxOҁ4Rӗ;No L9Exyr4cBqSkl8t<@rƒk&d9@>P~]^]N_<|Q"Ňs%, -ARї'oNOļAxs,1pZRh-)ۃΖJ` mCm(k +@5h 7z4d>sԣk]lE?Åc|.Qne{Ec;\Erpb[奔b^(~> C%=@(ipN}ʓCe|iP DVB?28 N`}(IN=hK!mg59zڍv/Пd#9CL;?7L(0 }@wt?3:teޞ36v`킶& 4 &4-64 U@MP 0.yI]lCS5"(.`o`^S|2(G"K2o%WG;}\~_!xH|$ c8C&p} 'ߪ@Y r|@Ж*f6P`(>0T[l'Y@}oC} #'7k~w0=m7Hn҆Ԟ&БJ U5@=li-!!Ր0O=PvePˉ<+db/3e&GʼAf)-*hKuIGں$sܥC+kO,nO,n>[;r6o Z`nD_ Vݖ@.Ղ no"OoY]mm O ?N~nN-n M`kanu#GGY{ȟu`9XD|sX,0uYTs>sԣMa&Nۊ'Y ^-8[DF$ZQk yYsiZQ]F>Z޸ "dXlsvïm=j;ko7^Ö+A浝H;i8v aSHd [Z\ojCNҳ^O=߇it3eaA̱i{OA0ܦ&67P'LP6չxp++-! nw(]ѝX[i:Z՚zRs`U4=/e9$\o`-K.[R?G#U}iVS7g}=K\[}þs?{[ߺkӗXKEz_FkLZlEF56g~0Y1?53Yw?e~y@9?]={n;c}Nyl7FxzY/nxkͲRm^NZ X>һg[׻f1 4zZ o/kjoc6Xo މ<{s1{3{ 2_Qm5̿*bSe* ~C6x#-^SR"[8d'&wՉ^|!^v+ݽɫm뢍Z1Z͛Z[Z‹Yni^j^񣀸 ȡZЯ-j~7 ivko[P~9щ~NY~t}?ػ˽۠[g7C#zgz몷z롏7Rx4қSo6eV1f>zGy[`XY`*؏('zv{ u+n`)]8Os|:Mv:APSGhF^﯅oYښ/ܚMtwFfkY cKIoViugRx9ײW@{ytLGx1uȄ_|O~2S+˛;688 ?iO!{675ldɼϠ%w.ý~;ﹾ>sl}|k?w}Yy|3֢xxkx_,ׂĒ2OR141JKc{{ ߼6g+x7yGGvścp{- {xioA?")o1na!똌Mz3:êyCz;YjMϥƖؗ(u^7k@>{iږd9|JjzYlfEm_em-o_ T]y-|bm[Ln~q5TƏk)/>3 /Ϻݻkzv]uԯc^]w"߁ݎ݅~Jƶ C =H=>]?]o)x`ߛyBk~6.[%|iiþ x-3}y??qW3 wiB~ys eƂqJo+*qUrC6㇛xY'>b~ d?%{0 #> vc0w{|{oiM߈s!6{}5:~oܟ7~̷}L[Htj?{XS+vwh?lƮG8a]}E0q{ܹ]6wk-o7ǛW@iRC}{8A;'x{VGuCnBHp xpwww'Xk׿yo3}֞Sݧ{]ߝxS$/iDIO/*;jq"!ިeEr{FgE Q|h6_ڿx2o=Z="(g}ȡ22]tq#csٙ,sm.w}]sY?]>O]/h%/VRkM/2j/~}5^gm tm~m]%^1K^V4 !+ ^daG{̐a cQV!B hNݶ֭7;~nqsβ"D]ֻ\Efwt-6XLxL|(1O"y䱎:CLF,՟eΖ~:GZUt#RQ͖snrd(sݸtn9>wte[|Kwۆsٯ'[!7Үa x:0ĊPp#my:6OvXUaCOt=kSSum$ҁXd>:DZP~W?nvCd$]⾗gDOphEece%S[z.Mwa6cf9a{ 6IOY#["f4}q~`M5̺k m&Ś6i;I7쩦7%մkz9lܯ2Xi繁f웉i*]rG%=c>俒XRMgawD^[u{ YV#ܞ|VsXKlgdݮ;ANgC/E,'h;l{w Ə(KL$e=n井.KC=`sp큻n7y/;vwî~q'}9}B eֈޠ ьUאָj 97zj[ d977u K!'rѥ.ŐXR˫'n` I 1.&'׏pEm+kx[~Y6a>16A1.w/.=C<ނx ;$꼡-yS{k: 6w9o䓼ѷ5k@v9->؇ϲ}h/B?Z_K1E]z-BBVۊiΝ2[4ܯO5gN:/_κ?[ /طRAw%4RrQn/jM&fkhǶnS=/(*14~'0DOb =-VnRgKHȀ[ȉ((?Qڬ!5ZkDΈgݐ~v{mmj,Me[6㈭\S |8igQΦ6Km{f`H37*[GHi #B,hV-? o .cЇXTzm7PL!^EJ8zoup:r;Hjo7%‰:lƾEۨ =}{:.w=(Л[Tѥ݇~qW(!{oFmcԭY'a^Fɥnz*p D%wa!7už1iUdSja=M?Yzsz !2e#r4:mfũNSTDT)1ʠD#곮RC$7p_%56Hp<২N>=CvFs<̶BKm=&e|$Tt^5y\OMڏC }{?Hf:oNnRv?:7uMbDPsf~NT2ڵ Lue6BY.8y׍;(ڃgS9ۗ[*uVDOb0ۦ3X}9S1b*v[J%{>e|]x)T*}Tg^O'X?L^~۩62a[f$T*tE!%UV *T/Qu)3TK95wqukoP]'y>Iw*o61?gYBX)ޙ23削W2̿*RW[i%VaFZ{z#9U9b=u+~`>1c611?"LB&e rY/$QSF T鍭%{H^5񪢨W ż,4Pe~! 1D C '28~O'O}pZ3η k+,&WcQ,XA|H^{ y\NoK-rqNa>_*y/(w;>W\jO 9,+heE/9{1{sBc}v:i;Jh+/6k/{IXx&j^2^"V2_+J7XzӵRz{wc>#M eF/-JxI1aD\/&y" )Nf/Di}o0w+-_}'y.vaRʽ V]V1c-]Ua(kG"̒)@!:cY~/ŭ.ZFhEUmVg[1f SSj9hköm24Zji+5-VZ1V]UƳ6ղA.c '^\7fbKu[5Trٸ?ekƲTqӤ[ mR6ڭYnNFr(;Jb+cn!e~3*:4rΟ+GAo&{D:֣v햿=gb{F1鿲~ ~k鏖2I4wD?,O7u\hlߵM_I5r\g6Ï% _\d,ed?S#eUe󓳔˩LSZr6!1x#p_'>Ay&J,$DDJniK*q-'Ǵ%TJv-!?:? zڿO?}-iKT{4zȤQNF`舌dvBxeB1m@KkTAwtCLh4@wʨ$oM8(:%WkYqplAgT0K/NqYV-kI3 zRqt6zD+!ͮ5L _ϸ}nw۩|nq5ۦU[*q߬&=Ч"ݮ{8nvZN>XN'ONş|9~M5Kk!DbN/ݔhIB mڎH]Cr.xF^>QN8GmDi]jDm. 8wv'z~Kf|}Q]Sgܴ}=|#ʩ 쮍ћ/AMiL ~fs<|ry,Sc чoj70@0~D9m9nq8C~]yyi<^<ցSCYQG3:.:/? ?FG$KE'2rЖ(D|>EQ/G_?J` 1a(L#Hzb G`r:8|I ͋,5?ctDBDEAF"I=&~,بzUDC5#K,jUF8%QNC4;kVQ3^d̻i_Nϱw\_b~Z(zI*Vc(چja b`r*ʓC򩡟 XoA[;LteNN=orߒW/K^ړWSβmeɻ;?nOpۥ.%x-!T(45b4-}էAYD|D xa܋ Bm8FAsq̌`0}L1K\BmK6Rя#2gzvss\3яE0~D9ޔ{8weK%ڻ{i>elDdfJ|zNt .yP. Ə(T'C$rN%>"$.R <ˌ̖׉D{>⌸y‰ƌMܔQ #J#]8+h(bgvSc3 b }ik1Q癗BPEt[yINusڞ[׽R<t/4{?@x7u!yN'YJL'&;󼫗3wEZ3c=] WDϽ!#C槍yV.J9тhzkḁ5Pfzc1j{11[$VP]BWfdػs _N['x.g.1^c4z UfzK#ZUBħWUe.e~g"WVRbBw'[k⹕n5~vwxVuzĭׇnMQh)fMt:Uwjݣu/c}a͈#Ǵ kﻇ6&73,ܵsג]Kѯ-ż4Q(OTϭĶJǕpA{5 &я7bڈe{0_D9XUqmɧ5"DCxuiNTaQeV::D85uEjf}`rC.qr:1XD޿ѶXOl M佉on"䴞XK,'_hGb}:1;9WDrDy15(c"-s\ACկ=Q_V'jhöuucץd-܎:=uhK\ff<4'G>K8#LY*Չ.qj3ikI}ߊt+(IWD9ٞmІNYM -#ʹ#9voЃFCܯ O!3-g a0sM%&c ~`уn\cކN;сq;-?7p-s>y<ϽF=1AhފhCcH[gua8މbGzΎm;+q/Г>ɼ|?sm:y`}=Q2j&dKF&2%E+a[1f_ 0OϏNlHYi?%wbnߙxPQB"I1σ8`r>e蚃{6nG]"}d2Lsw;࿈'}6q"q!¬ze>ɼ:?P f9`Db:sh[ĨX\z9.g}sU$b<1*@~9z~ھ*ɡ#?O)Moi 2~:4'6D[=с};h&փ-+ZMzDM*+帮 /BV( (3?2|#/YK1)"Ұ qMQȄcxqwB1@?en}A\WX\9?q/^ƥ0Ƥ0&U:bq.!]b" {)R`psO!&>y!f4M#i(N1*M݇aGMhkMt$:sWrJ]ɷ 9u&ӞhD 2Qmh/=,B?-E.sQ[dEAW /yϼ¨¨>~K@$䝔'%wDDB">,~xKa:'evzV?3?#yԪѩcϏ#"Xe?.q>{!+ߑLu# LY, z%,K, ,s)1>.&s Uq8 #WnƾxqUbnb؀~y5urץԨo-/K0 ߻h즢'dqxe5n4Ѽ/+1 c? }!@Bb3q n4-뺛HNV"uワoZ36gκ-o/K?$Lj#/s%&cm$lZ^K*)52UxFE''ct%BgZ*yw_Яk, [:r sܱb#֘8AگX \caؾ8̮NJ}}\fοraNejik"_P{lL/ >ĶcHd]v[0YLko%a~462Bd+,mQ+`ݲV"KI+-RֲDmڛK *&HZQ(k% n%SԐG('_n#\GHrO,$06Xd0`-p6m"f8XbcFc%b C>9`yYN^c@mrb1fͱl:V_rI49|I*v ~\XyfI,+a6OLms$͖f% bvRI -3hR^XUny6el%VЦZnaY;a;Ke<תO+5EF{d]مs~|>,֦sNfm#xZӯ͚UuCΌp57ތw5nz>-H!@Bd >E=컈Lo=MvFN<`X33ebN2۩l&l}@o0qi?AvF!l mv@7y]ot};w6~e|_w=}?Z2L8EtI8R}&K2$AIJJkM/5\w֦rH[mܖvm,Ow) JQd:-ϪW(ĕOZ!}9U+V;);r|m7gD"#5ք򣦗iWjii0~DfKA4 |CRˉR-L?U(5W];Q9w-K֖%X3\b;yi g< hq53yɺL+ʶ/S78>Ƌ;[-+}V6~K9K+=X*w-Ck)}yc hN͒:{:Θ>Yfx#eWw<2AX*C;s^W>:K| 9@]>]w glż Ε[34y$~=M%%IF͈D?"}1w=# ׋֯"N s]%zT~zZ'xY (   Clip (MS_ClipArt_Gallery.20,Microsoft Clip Gallery/ 00DTimes New RomanPڄ@(PDVerdanaw RomanPڄ@(P DHelveticaRomanPڄ@(P0DTimesicaRomanPڄ@(Pc .  @n?" dd@  @@``   H HD   Z) ) g^?$>^kFv A363523K)F)2<]*=     %&'()@A* + ,         -./0123456789:;<=>?!"#BCD?$$B$I!% Ms AA1? f@a g4KdKdBp@@pp@ <4!d!d؄gʚ;:ʚ;2Nʚ;<4dddd؄:ʚ;<4BdBd؄:ʚ;ށ___PPT10     0H@     p          8 H0 x      ___PPT9h `    0   `    x                p@`      h___PPT2001D<4X(l___PPTMac11l@f   hnamd` Arial&Monotype Typography    hnamd` Arial&Monotype Typography    hnamd` Arial&Monotype Typography    hnamd` Arial&Monotype Typography    hnamd` Arial&Monotype Typography   (namd Symbol  xf 0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana   0namd( Verdana   0namd( Verdana  0namd( Verdana  0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana x 0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana  4 0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana  0 0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdanaff  0namd( Verdana   0namd( Verdanaff  0namd( Verdana    0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana   0namd( Verdana    0namd( Verdana  `   0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana   0namd( Verdana  0namd( Verdana   0namd( Verdana  0namd( Verdana     0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana   0namd( Verdana  0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana   0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana   0namd( Verdana#  0namd( Verdana ff  0namd( Verdana   0namd( Verdana  0namd( Verdana  0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana  x 0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana     0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana  0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana   0namd( Verdana  ?-rData Structures and Algorithms for Information Processing .Lecture 1: IntroductionO =+<AOrganizational Communications and Distributed Object Technologies BAB)Lecture 12: Locks and Concurrency Control Mutual Exclusion?kBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false EndllBPMutual Exclusion?kBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false EndllBPMutual Exclusion?kBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false EndllBPMutual Exclusion?kBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false EndllBPMutual Exclusion?kBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false EndllBPMutual Exclusion? No.kBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false EndllBP Mutual Exclusion? No.kBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false EndllBP /Why be concerned about mutual exclusion anyway?Begin while(occupied) do {} occupied = true End { critical section bal = bal + 1;} Begin occupied = false End4MBB.Bb 2Dekker s Algorithm (1964) Begin occupied1 = true while(occupied2) { if(which == 2) { occupied1 = false while(which == 2) {} occupied1 = true } } End critical section Begin which = 2 occupied1 = false EndZB& / !  2Dekker s Algorithm (1964) Begin occupied1 = true while(occupied2) { if(which == 2) { occupied1 = false while(which == 2) {} occupied1 = true } } End critical section Begin which = 2 occupied1 = false EndZB& / !  2Dekker s Algorithm (1964) Begin occupied1 = true while(occupied2) { if(which == 2) { occupied1 = false while(which == 2) {} occupied1 = true } } End critical section Begin which = 2 occupied1 = false EndZB& / ! 2Dekker s Algorithm (1964) Begin occupied1 = true while(occupied2) { if(which == 2) { occupied1 = false while(which == 2) {} occupied1 = true } } End critical section Begin which = 2 occupied1 = false EndZB& / ! 2Dekker s Algorithm (1964) Begin occupied1 = true while(occupied2) { if(which == 2) { occupied1 = false while(which == 2) {} occupied1 = true } } End critical section Begin which = 2 occupied1 = false EndZB& / ! 2Dekker s Algorithm (1964) Begin occupied1 = true while(occupied2) { if(which == 2) { occupied1 = false while(which == 2) {} occupied1 = true } } End critical section Begin which = 2 occupied1 = false EndZB& / ! 2Dekker s Algorithm (1964) Begin occupied1 = true while(occupied2) { if(which == 2) { occupied1 = false while(which == 2) {} occupied1 = true } } End critical section Begin which = 2 occupied1 = false EndZB& / ! 2Dekker s Algorithm (1964) Begin occupied1 = true while(occupied2) { if(which == 2) { occupied1 = false while(which == 2) {} occupied1 = true } } End critical section Begin which = 2 occupied1 = false EndZB& / ! 6Dijkstra s Semaphore (1965) !From train terminology, one train at a time on one section of track. A semaphore is an integer variable that may be changed by just two primitive operations - P and V. P and V stand for Dutch equivalents of test and increment. P an V may not be interrupted. Processors are built this way.L"ZEc< D  ,)7Semaphore Operations S Test or wait P(s): if (s > 0) s = s - 1 else suspend this process Increment or signal V(s): if a process is suspended as a result of P(s) then resume it else s = s + 1xZ #  ''  ~.9  Mutual ExclusionM S Begin P(s) End critical section Begin V(s) End\NZ H Mutual Exclusion S Begin if(s > 0) s = s - 1 else suspend this process End critical section Begin if a process is suspended as a result of P(s), resume it else s = s + 1 End&ZB~Mutual Exclusion S Begin if(s > 0) s = s - 1 else suspend this process End critical section Begin if a process is suspended as a result of P(s), resume it else s = s + 1 End&ZB~Mutual Exclusion S Begin if(s > 0) s = s - 1 else suspend this process End critical section Begin if a process is suspended as a result of P(s), resume it else s = s + 1 End&ZB~Mutual Exclusion S Begin if(s > 0) s = s - 1 else suspend this process End critical section Begin if a process is suspended as a result of P(s), resume it else s = s + 1 End&ZB~  Semaphores0May be extended to mutual exclusion over multiple processes. May be used to solve the producer consumer problem. Process P1 Process P2 : : E1 E2 : : We need E1 to produce before E2 consumes.fqZZ*" ZFf  Ff  J B $J$$(B(,B,0J04B48J8$?" dd@,|?" dd@   " @ `"  n?" dd@   @@``@n?" dd@  @@``PR    @ ` ` p>>  (    Tgֳgֳf ?" D T Click to edit Master title style! !B  NKgֳgֳ ?" D RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S   `ǎgֳgֳ ?"P D R*(   `1?"0y5  L 95-702 OCT&   f  T1 ?"   D|8___PPT10F___PPT9( ___PPTMac11 0namd( Verdana   0namd( Verdana   g'Master of Information System Management$(' H  0޽h? ? ̙33f MIS rj( r@A@   T1 ?P   D P*    T1 ?   D R*  d  c $ ?  D~  T01 ? @ D RClick to edit Master text styles Second level Third level Fourth level Fifth levelb!    !    S  Z)1 ?`P  D P*    Z.1 ?`  D R*  H  0޽h ? ̙3380___PPT10._9s" 0 ( L|X{Mke  r  S p D r  S  P `   D `   c $A ??> H  0޽h ? 3___PPT10e+D=' 0= @B + "  ((  (l ( C ps>  D l ( C p` ` D  ( T1? 0 : 0___PPT106___PPT9 ___PPTMac11 0namd( Verdana  lBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false End $l0ZmAHl (  `x1?D +0___PPT106___PPT9 ___PPTMac11  (namd Symbol   Doccupied = falseCH ( 0޽h ? ̙33f___PPT10u.pucx+D=' P= @B +V  " a Y @, (  0C.)"MH<2d ,r , S   D r , S  ` ` D  , T~1? 0 : 0___PPT106___PPT9 ___PPTMac11 0namd( Verdana  lBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false End $l0ZmAH ,  zBC7DEF8A1?""B$Mv17E6BVM*  6"6"Kdm77667@           >u@uf ,  `31?z0___PPT106___PPT9 ___PPTMac11  (namd Symbol   >C  ,  `"1?D +0___PPT106___PPT9 ___PPTMac11  (namd Symbol   eoccupied = trueC H , 0޽h ? ̙33f___PPT10u.pucx+D=' = @B + "   P 0 ( fitotacinoiX 0r 0 S @  D r 0 S `` ` D  0 T@T1? 0 : 0___PPT106___PPT9 ___PPTMac11 0namd( Verdana  lBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false End $l0ZmAH 0  BC7DEF81?""B$Mv17E6BVM*  6"6"Kdm77667@           >u@u 0  zBUCDEF8A1?""U k` 5]5Jgo}u \Y~UJPSQaKjCt5x+@           K uKf 0  `!1?z0___PPT106___PPT9 ___PPTMac11  (namd Symbol   >C   0  `"1?D +0___PPT106___PPT9 ___PPTMac11  (namd Symbol   eoccupied = trueC H 0 0޽h ? ̙33f___PPT10u.pucx+D=' °= @B + " ` 4(  4r 4 S @'V  D r 4 S (V` ` D  4 T@2V1? 0 : 0___PPT106___PPT9 ___PPTMac11 0namd( Verdana  lBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false End $l0ZmAH 4  BC7DEF81?""B$Mv17E6BVM*  6"6"Kdm77667@           >u@u 4  BUCDEF81?""U k` 5]5Jgo}u \Y~UJPSQaKjCt5x+@           K uK 4  BC`DEFLA1?11%Hk+Qya!``SJ  +Zku\P$5@\~b3E`#$@                `` f 4  `BV1?Dz+0___PPT106___PPT9 ___PPTMac11  (namd Symbol   >C l  4  `IV1?D +0___PPT106___PPT9 ___PPTMac11  (namd Symbol   Doccupied = falseCH 4 0޽h ? ̙33f___PPT10u.pucx+D=' VF= @B +2 " =5p 8(  8r 8 S 0W  D r 8 S z` ` D  8 T z1? 0 : 0___PPT106___PPT9 ___PPTMac11 0namd( Verdana  lBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false End $l0ZmAH 8  BC7DEF81?""B$Mv17E6BVM*  6"6"Kdm77667@           >u@u 8  BUCDEF81?""U k` 5]5Jgo}u \Y~UJPSQaKjCt5x+@           K uK 8  BC`DEFL1?11%Hk+Qya!``SJ  +Zku\P$5@\~b3E`#$@                ``  8  zBCDEHFxA1?RRK:03 Ks@\y|pk`]UQ QK ?0 K KZZypkQ9A+"+)1u $"++dsp/K )K;pXC ++:B`9<@                           @ f  8  `0-}1?Dz+0___PPT106___PPT9 ___PPTMac11  (namd Symbol   >C l  8  `4}1?D +0___PPT106___PPT9 ___PPTMac11  (namd Symbol   Doccupied = falseC  8  `9}1?d }K0___PPT106___PPT9 ___PPTMac11  (namd Symbol   m9The busy wait loop may be replaced with a call on wait().::CH 8 0޽h ? ̙33f___PPT10u.pucx+D=' = @B +O " Z R  X ( ! Xr X S ŕ  D r X S  Ǖ` ` D  X T ̕1? 0 : 0___PPT106___PPT9 ___PPTMac11 0namd( Verdana  lBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false End $l0ZmAHf  X  `ԕ1?Dz+0___PPT106___PPT9 ___PPTMac11  (namd Symbol   >C l  X  `ޕ1?D +0___PPT106___PPT9 ___PPTMac11  (namd Symbol   Doccupied = falseC  X  BSC DEF<A1?%% |z u+o4d@`xJM+/}?+( i JUt`! 5N@uIS@ @            ` ^i  X  BC?DEFPA1?44fW><a+41h1PgyVNPKE;6> 1W[@<;60$  ?<<%(@                 5KH X 0޽h ? ̙33f___PPT10u.pucx+D='  = @B +p  " {s ` ( T022 `r ` S $  D r ` S P&` ` D  ` TP/1? 0 : 0___PPT106___PPT9 ___PPTMac11 0namd( Verdana  lBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false End $l0ZmAHf `  `051?Dz+0___PPT106___PPT9 ___PPTMac11  (namd Symbol   >C  `  `?1?D +0___PPT106___PPT9 ___PPTMac11  (namd Symbol   eoccupied = trueC  `  BSC DEF<3f1?%% |z u+o4d@`xJM+/}?+( i JUt`! 5N@uIS@ @            ` ^i `  BC?DEFP3f1?44fW><a+41h1PgyVNPKE;6> 1W[@<;60$  ?<<%(@                 5K  `  jB CjDE|F4A3f1?uIAH@C @@JuP aBu4*4BJ`j\5@          k R  `  *BCDELF$A3f1?@2?Mr AYF`qq}gOnG@      9 H ` 0޽h ? ̙33f___PPT10u.pucx+D=' 9`= @B +  "  h(  hr h S   D r h S p` ` D D h T1? 0 :xp@___PPT10 V___PPT980___PPTMac11 0namd( Verdana  0namd( Verdana  0namd( Verdana  @Begin while(occupied) do {} occupied = true End { critical section bal = bal - 1; } Begin occupied = false End @0ZMAA0AZf h  `๘1?Dz+0___PPT106___PPT9 ___PPTMac11  (namd Symbol   >C  h  `p1?DS +0___PPT106___PPT9 ___PPTMac11  (namd Symbol   qoccupied = true bal = 100C  h  BSC DEF<3f1?%% |z u+o4d@`xJM+/}?+( i JUt`! 5N@uIS@ @            ` ^i h  BC?DEFP3f1?44fW><a+41h1PgyVNPKE;6> 1W[@<;60$  ?<<%(@                 5K  h  pB CjDE|F43f1?uIAH@C @@JuP aBu4*4BJ`j\5@          k X  h  0BCDELF$3f1?@2?Mr AYF`qq}gOnG@      9 |  h  `@֘1? pi 0___PPT106___PPT9 ___PPTMac11  (namd Symbol   Tint x;C  h  ` ޘ1?$g`XP___PPT100(v___PPT9XPz___PPTMac11TL  (namd Symbol   0namd( Verdana  0namd( Verdana  0namd( Verdana   (namd Symbol   QAfter these two activities complete the bal should be 100. Why is it 101 or 99? XR9CCC C CH h 0޽h ? ̙33f___PPT10u.pucx+D=' = @B +d  " ogp( R pl p C p  D l p C  D  p  `@1? "|8___PPT10F___PPT9( ___PPTMac11 0namd( Verdana   (namd Symbol   Begin occupied2 = true while(occupied1) { if(which == 1) { occupied2 = false while(which == 1) {} occupied2 = true } } End critical section Begin which = 1 occupied2 = false End 60ZCC~/ / !H p 0޽h ? ̙33f___PPT10u.puM+D=' B= @B +$   " / ' t( i d=af tr t S PO  D r t S ` D  t  `@31? "|8___PPT10F___PPT9( ___PPTMac11 0namd( Verdana   (namd Symbol   Begin occupied2 = true while(occupied1) { if(which == 1) { occupied2 = false while(which == 1) {} occupied2 = true } } End critical section Begin which = 1 occupied2 = false End 60ZCC~/ / ! t  `@c1?0___PPT106___PPT9 ___PPTMac11 0namd( Verdana  *occupied1 false occupied2 false which 1 ++G'H t 0޽h ? ̙33f___PPT10u.puM+D=' f= @B +   "   x (  0C.)"MH<2d xr x S   D r x S & D  x  `1? "|8___PPT10F___PPT9( ___PPTMac11 0namd( Verdana   (namd Symbol   Begin occupied2 = true while(occupied1) { if(which == 1) { occupied2 = false while(which == 1) {} occupied2 = true } } End critical section Begin which = 1 occupied2 = false End 60ZCC~/ / ! x  ` 1?0___PPT106___PPT9 ___PPTMac11 0namd( Verdana  *occupied1 false occupied2 false which 2 ++G' x  BC DExFAA1?^^3$kuBM<3?0R(-@=@=u]dr}5S$7K] *'ShuucD   ;S^gs0@\&2kqou(>hh t zZ }    d _{ k AD@                               ``kH x 0޽h ? ̙33f___PPT10u.puM+D=' P= @B +  " * " | ( {5 |r | S   D r | S P D  |  `1? "|8___PPT10F___PPT9( ___PPTMac11 0namd( Verdana   (namd Symbol   Begin occupied2 = true while(occupied1) { if(which == 1) { occupied2 = false while(which == 1) {} occupied2 = true } } End critical section Begin which = 1 occupied2 = false End 60ZCC~/ / ! |  `u1?0___PPT106___PPT9 ___PPTMac11 0namd( Verdana  )occupied1 true occupied2 false which 2 **G,  |  BCDExFAA1?^^SVvQ;@E&1[[=0v1f&&c"Rvc;lifVH7<H;D1e6fjnmq 66Y}xEs;V\kvAD@                               } H | 0޽h ? ̙33f___PPT10u.puM+D=' = @B +       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~" d( fitotacinoiX r  S 0)  D r  S p: D    ` 1? "|8___PPT10F___PPT9( ___PPTMac11 0namd( Verdana   (namd Symbol   Begin occupied2 = true while(occupied1) { if(which == 1) { occupied2 = false while(which == 1) {} occupied2 = true } } End critical section Begin which = 1 occupied2 = false End 60ZCC~/ / !   `1?0___PPT106___PPT9 ___PPTMac11 0namd( Verdana  )occupied1 true occupied2 false which 2 **G,    BCDExF1?^^SVvQ;@E&1[[=0v1f&&c"Rvc;lifVH7<H;D1e6fjnmq 66Y}xEs;V\kvAD@                               }    BC7DEFDAA1?++=~LR9uIAV5,,% VV %,[>1? Le{r@ 2@NY77 @              K   BCDEF@AA1?((j]5H  )8@Xa^=u n(g+wk`XRJ@~3r*; jr]5|  @             K `N H  0޽h ? ̙33f___PPT10u.puM+D=' = @B +P " [S ( ZExobtvcaa r  S   D r  S 0̕ D    `1? "|8___PPT10F___PPT9( ___PPTMac11 0namd( Verdana   (namd Symbol   Begin occupied2 = true while(occupied1) { if(which == 1) { occupied2 = false while(which == 1) {} occupied2 = true } } End critical section Begin which = 1 occupied2 = false End 60ZCC~/ / !   `1?0___PPT106___PPT9 ___PPTMac11 0namd( Verdana  *occupied1 false occupied2 false which 2 ++G,    BCDExF1?^^SVvQ;@E&1[[=0v1f&&c"Rvc;lifVH7<H;D1e6fjnmq 66Y}xEs;V\kvAD@                               }    BC7DEFD1?++=~LR9uIAV5,,% VV %,[>1? Le{r@ 2@NY77 @              K   BCDEF@1?((j]5H  )8@Xa^=u n(g+wk`XRJ@~3r*; jr]5|  @             K `N r    JBC`DEdF,AA1?.Nxu+JT`LU~uW,H`@        k kH  0޽h ? ̙33f___PPT10u.puM+D=' = @B +@ " KC  ( MH<2d r  S P  D r  S @a D    `31? "|8___PPT10F___PPT9( ___PPTMac11 0namd( Verdana   (namd Symbol   Begin occupied2 = true while(occupied1) { if(which == 1) { occupied2 = false while(which == 1) {} occupied2 = true } } End critical section Begin which = 1 occupied2 = false End 60ZCC~/ / !   `&1?0___PPT106___PPT9 ___PPTMac11 0namd( Verdana  *occupied1 false occupied2 false which 2 ++G,    BCDExF1?^^SVvQ;@E&1[[=0v1f&&c"Rvc;lifVH7<H;D1e6fjnmq 66Y}xEs;V\kvAD@                               }    BC7DEFD1?++=~LR9uIAV5,,% VV %,[>1? Le{r@ 2@NY77 @              K   BCDEF@1?((j]5H  )8@Xa^=u n(g+wk`XRJ@~3r*; jr]5|  @             K `N x    PBC`DEdF,1?.Nxu+JT`LU~uW,H`@        k k    BC DEFHAA1?..@L2OEuku+|h`_OK E:5 (0BU{t"S@'k- K w { ` 8 !G !$@               @@ H  0޽h ? ̙33f___PPT10u.puM+D=' -= @B +  "   0  ( ?B r  S    D r  S ` D a   `ǘ1?]0___PPT106___PPT9 ___PPTMac11 0namd( Verdana  9 G    `Ù1?t v TLX___PPT1080___PPT9h`V___PPTMac110(  (namd Symbol   0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana   (namd Symbol   -kDekker solves the problem using software. Dijkstra and other solutions exist for more than two processes.hlCCC C  CC6$ #H  0޽h ? ̙33f___PPT10u.puM+D='  = @B +} " @( fitotacinoiX l  C u  D l  C `L D H  0޽h ? ̙33f___PPT10u.pug+D=' 0= @B +  " P(  r  S   D r  S I D |  T1? 0@H  0޽h ? ̙33f___PPT10u.pug+D=' 0= @B + " `f( fitotacinoiX l  C   D l  C c D |  T1?  @]   `k1?4 0___PPT106___PPT9 ___PPTMac11  (namd Symbol   51C]   `1?/   p___PPT10PH___PPT9Z___PPTMac114,   hnamd` Arial&Monotype Typography  0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana     hnamd` Arial&Monotype Typography   (namd Symbol   %5Begin P(s) End critical section Begin V(s) End 50Z           C 6 H  0޽h ? ̙33f___PPT10u.pu8e+D=' B= @B +  "   p( fitotacinoiX r  S p  D r  S @r D |  T1?  @]   `a1?P 70___PPT106___PPT9 ___PPTMac11  (namd Symbol   51C   `01?@ ?|8___PPT10F___PPT9( ___PPTMac11 0namd( Verdana   (namd Symbol   mBegin if(s > 0) s = s - 1 else suspend this process End critical section Begin if a process is suspended as a result of P(s), resume it else s = s + 1 End 60ZCClH  0޽h ? ̙33f___PPT10u.pu8e+D=' 7= @B +Q " \T  ( {k&k& r  S   D r  S  D |  T1?  @]   ``a1?P 70___PPT106___PPT9 ___PPTMac11  (namd Symbol   50C   `̞1?@ ?|8___PPT10F___PPT9( ___PPTMac11 0namd( Verdana   (namd Symbol   mBegin if(s > 0) s = s - 1 else suspend this process End critical section Begin if a process is suspended as a result of P(s), resume it else s = s + 1 End 60ZCCl   zBC DEF8AA1?""%Qkzkk\H@/4+3u5=@)K+415l Krr+ @           R   *BCKDELF$AA1?&Ouv_c0+U'c%q!  5K@      +B    BCLDEF`AA1?@@ ycU:]5v#h haVHA7,,dl! %7APgln|qdU:wG,AVlvS5,(lz   LL-0@                      H  0޽h ? ̙33f___PPT10u.pu8e+D=' B= @B +M " XP ( |3`A r  S l  D r  S `t D |  T1?  @]   `K1?P 70___PPT106___PPT9 ___PPTMac11  (namd Symbol   50C   `1?@ ?|8___PPT10F___PPT9( ___PPTMac11 0namd( Verdana   (namd Symbol   mBegin if(s > 0) s = s - 1 else suspend this process End critical section Begin if a process is suspended as a result of P(s), resume it else s = s + 1 End 60ZCCl   BC DEF81?""%Qkzkk\H@/4+3u5=@)K+415l Krr+ @           X   0BCKDELF$1?&Ouv_c0+U'c%q!  5K@      +H    BCLDEF`1?@@ ycU:]5v#h haVHA7,,dl! %7APgln|qdU:wG,AVlvS5,(lz   LL-0@                          BuCDExFAA1?^^@#,%Z'- U eImH`cgkrpC`zgknCqku+ZxA8K`iu@gi^q5>m$+q:CFU\ekpmu|` V;>+Knp~U" Crk+uAD@                               @H  0޽h ? ̙33f___PPT10u.pu8e+D=' @= @B + "  (  r  S   D r  S ` D |  T1?  @]   `w1?P 70___PPT106___PPT9 ___PPTMac11  (namd Symbol   50C   `1?@ ?|8___PPT10F___PPT9( ___PPTMac11 0namd( Verdana   (namd Symbol   mBegin if(s > 0) s = s - 1 else suspend this process End critical section Begin if a process is suspended as a result of P(s), resume it else s = s + 1 End 60ZCCl   BC DEF81?""%Qkzkk\H@/4+3u5=@)K+415l Krr+ @           X   0BCKDELF$1?&Ouv_c0+U'c%q!  5K@      +H    BCLDEF`1?@@ ycU:]5v#h haVHA7,,dl! %7APgln|qdU:wG,AVlvS5,(lz   LL-0@                          BuCDExF1?^^@#,%Z'- U eImH`cgkrpC`zgknCqku+ZxA8K`iu@gi^q5>m$+q:CFU\ekpmu|` V;>+Knp~U" Crk+uAD@                               @    B~CVDElFAA1?[[  (,6hdnJ?3 # +4@K5Jnuxw ;;@/[Eijvmuuu~ j@aU<I*Vsaujde,`6NR0R`"gr= 6RwtUUDEA*"  V?@@                              k k    `1? 0 ldH___PPT10( f___PPT9H@___PPTMac11xp  (namd Symbol   0namd( Verdanaff  0namd( Verdana   (namd Symbol   CS changes back to 1. Quiz: What will happen if s starts off at 0? LDC,GfC C H  0޽h ? ̙33f___PPT10u.pu8e+D=' B= @B + " (  l  C   D l  C  D H  0޽h ? ̙33f80___PPT10.Muuٰ$ " $( fitotacinoi r  S   D r  S 0 D H  0޽h ? ̙33f80___PPT10.Muuٰ$ " $( fitotacinoi r  S @  D r  S n D H  0޽h ? ̙33f80___PPT10.Muuٰ$ " ## x#(    l  C    D    `01?___PPT10     &___PPT9      ___PPTMac11    (namd Symbol   x  x  x  x  x   (namd Symbol   0namd( Verdana   (namd Symbol   0namd( Verdana  0namd( Verdana   (namd Symbol   0namd( Verdana  0namd( Verdana  0namd( Verdana   (namd Symbol   >Doccupied: semaphore (initially 0 - number of filled locations) empty : semaphore (initially n - number of empty locations) j = 0 i = 0 repeat repeat P(empty) P(occupied) store data in location j get data from location i j = (j + 1) mod n i = (i + 1) mod n V(occupied) V(empty) Until forever until forever E?C<CC C CC;C:C C A$C$K(C(E,C,>0C0?4C48C8E0? '   ,  ($|2  T1?p p |2  T1? P |B  TD1? ` |B  TD1?P P P p |B   TD1? ` B  @ ZD1?`     `p)1?d& ldH___PPT10( f___PPT9H@___PPTMac11xp  (namd Symbol   0namd( Verdana  0namd( Verdana   (namd Symbol   FWe can t read if none are occupied.H$C C C C    `:1?vE ldH___PPT10( f___PPT9H@___PPTMac11xp  (namd Symbol   0namd( Verdana  0namd( Verdana   (namd Symbol   BWe can t write if none are empty.H"C CC C B @ ZD1?` P H  0޽h ? ̙33f___PPT10u.Nuuˊ+D=' `= @B +} "  ( q  l   C V  D l   C W D H   0޽h ? ̙33f___PPT10u.!UujX+D=' 0= @B +$ " $$(    $r $ S  )  D r $ S 0 D H $ 0޽h ? ̙33f80___PPT10.!UujX$ " /'( T022 l  C ̧  D l  C ا D    `1?4 u0___PPT106___PPT9 ___PPTMac11 0namd( Verdanaff  w?Not interleaved with other code until this terminates or waits.@@GfH  0޽h ? ̙33f___PPT10u.Quu%+D=' ѐ= @B + "    ( fitotacinoi  r   S   D r   S d D     ``S1?  xp@___PPT10 V___PPT980___PPTMac11  (namd Symbol   0namd( Verdana   (namd Symbol   t Not interleaved with other code.8!CCCH   0޽h ? ̙33f___PPT10u.Quu%+D=' B= @B +  " 0"( p$ l  C P5  D l  C p6 D    `t1? .H xp@___PPT10 V___PPT980___PPTMac11  (namd Symbol   0namd( Verdana   (namd Symbol   |If x differs from y these two transactions proceed concurrently. If both want to use x, one waits until the other completes.8}AC;CCC9H  0޽h ? ̙33f___PPT10u.Ruudf|+D=' B= @B +@ zr@ ( ? X  C    Dr  #  @  D  H  0޽h ? ̙3380___PPT10.PnBOlk5'wOFg96ЙSlw>uՋ|ϱd7Ӑ1q+.?w]쏳wױ ; ؽzhXھ~\ASb!~WaC,0 -74,$[O-$80,{GN=ü{j:wׯPλzFMzxu~!] -YOWXߤ3>uzZ \?$-tIEσyKe.:TsH'b;$X1xpBǒx1q3N%ޟzr _[$o-= >1LF7~[jgPgsz4V;`r'k[s9]hn ZYUD:YǪ)FR9E?<+!4YNi9$B=d֕SrcM l#)|v!ZGh8GS'P s"mjl&ޥ38b:Ownr#5n5tMϚ,fPZ A'/R^SJo7'ޢd&Ӛ\^4DQ|pzSϣ<5 4Q hċYH|:`3).SM/5u~2iy0Z9YzLf~0c4*<0NxNIYO,Vo7||9;va_}`9Ey4~,f?ُf,]0iI0e~qK(ܫNSF;]nr"X&5n:ǤBPeE6r?nX^}|8vb7t4YAWqFLz3cmkΦ9;NJN¹|(saE^8y}ꎶ7ΡɪLfب z|;MZ7&#.;no^ {e5ʔWguY&zj N_|c6[l;`"w [0q=iBKW5Up hwz}9UtS2wiVP?ᣚO`w>3w PjM sgZ^r[tFmyZ5P Yo[P߆Gc6n5䧚?cŤg&1yK7LXoIBprC-Sgi i Ƹ4AgaO5);pZl4pr覻p3z̤mLK ː 5V9-v!=C&X '4'u煝̯qzG$É~E\=RBSIIM-e4GYY*WRCpuX꺝V)\Y 尊EC!MB[&tͥѨ7p9˘5%sݒXκ T3.Hu:7Fs1AB#xwhgQK;>!4)h>'O ,gDnIf+徔GRUI=]Z 6k$PI$B6^< dF݃oԭy])u\rN">\p!bň !wHmRYi@:h!iEA ENi=' $!Euċj/0$BRNAn8L#v9E/,ݮ B:xM >#:lĬt_IDǑӏ(qQ ?qg.M>p <`:wƋ1Q5 *YHd-~x *-9Q=mEۇ" ,' ;;Nuk?:"xYD'FԒQVDX$"Zzo7 _{p:\@w^?{YLz^5D|F~@U{oCߗZkNZ:b2RɄ*4&޽6/0k+GmQgͥcUj_!r 1|;;M )H3͒R'kߵi`׫Z/Me)iE ښbsإ[\AM4`{_C1irZ؎5fV dUYYDBݺ=` 8]d@[}LmeVn[ٹ FVAnͬB;v(nodf?|A:Z[)JHk4rKM+1@@J+H:+dw }Ƽ[b&1MZϬjf!U4HeʚfTT U5na>i}զ怶O54DJL# OXy,ؗJ!`gp_՛='{xn nfz[ll2wBw6Ǹn:jՖZq -M557]nؾ2ކi BG:Ҵq>н? lRksMG^(Ǔ?CCf54n6#NۋwC `9LA.ey(]){$E~tȮz>^OE^P{۫Ao]]NoD$}>ۑtHUۏ4ܾS;:þsQ.Ǻ~γ\;?bbۗVi=ڋP%|mO)v[" $WթKܴDJX$)Ò:+Qy}@ׄV6Mc׌Hz&Ml/x *'r_Me.  #sL+\`9#䄸K^!ۅtDYd ^JZ dK%+/1m3W,Yjf!AfxRʄKF3A'1r-[Q)2HC;Tw}+ه};ǹ}'gy}wW}_} i^pyc{^i>qNƖRJ 'QX2xyb/Yܙ+gwym;HH#-d̒p.s8_Lwks'&võ垬CοlE"0 '%[l)+c/Enp{*ג+\ s!9\|9gx 1|$7\w&/#y3^\f4{ٶs{7]|Dۑ|Ŏؙ1\.6yy5w BP 3m }O ԻIOlzH*MPև6tiڋ\uss: N! 'h kG< A}Vb RdG=2\RqNWs!(߀O\>ē P*sWIaۓ'}N.^7DT=7(oqcxzrk\uep.$Ӹ E!B8+e.&@ϭl*»ڈy:21\UF\uAFЧ9;+N}n0~Ы?QCANЧJ/<?:5y)OLvyi;_!BI9%9HŹa *:^a-ኰMa*Jؔ{Bw;v<1+j^6@d]`/DyA=w!"/ ;^ v4(;^v xnqN56!hGk2IgȃA7~/wmA!"%%2Δ,#u s7'Nq "qH<iG&Er ? ֨) ;Ӕ "l|\uhEZvةdR<%ȯ[ܱ3=; r!9Ęr.(Wr v6z?:6?;q88寙88888899!919A9Q9au0콼v{'wb^[/gC;43JSGsvficgv?۞f Ce_?KWĽ~v+ik+/Ο:wԀΛg{_pv~ewnȯ3fȖa[X :vs'x(ػvb-QaxtDld`89|{ Yf>ΜTb?b?qkg3{ <mc;Nfwk?Sc=^}/T<>ɳ\{}#'%d_Yߛnp[sL6yy=^q푟JiY+ .REC.+CA7Y!ڄ|o̓h"{IGt@uEتrr :6?!O&aSNp9 z+v#k̚7ݑwDZk-KkOPԇ;/c/9\CQ@s­7/W_e+;UG2ԓdiQYL Acrf\JI_&F^ȴʎȑwB^$Wx1o/ @S #][F` }@@Gf'.Z<]AQ$2:Z dvzGBH5n;v+![>̆|&ʫ[t<z΁`$N:ǜty^8qb&="lZƻ6m{ o bOxWN箈C! ;8xq]BE(~05@ xV8mZrg"DYjAVT@ (񮘋 {@c @}^R?:w=Guȭd1 ,0̃0y51q P@ s szd=0Fo{Kr㮘3~\uށv(9 6dK(<! Ż={ _»(X=.>X#/F.'!8UT,i5e9A~ @l\<6 2 W@^^z](梾ko`ruh9:Dk A , 0Lt6PxRLB$9 \b=㪳;༸y-ȍ\?r@0ymD .# Zxnb^N_E BV:5`*Iu3~\u\.Ň"|ޣ2E^JB!rGaN 0 ^#~Gx~!?p"ls% q{/'Bܤ5m-\z  YVl{d-+1E`t#7Osu;sLqԋK83~\uԀ^k1xC玐uA(ta9 NЩ;4 A]&E.Կ(RBlQD*a?:G6v rC--tIF zgFwf;D^Wحe%aOft0!RD W3?E,ƞk]8p+oO{{ {G0YvKpyk73JJ㥯 Sd7ƺcCgh_cnN?m'#Oj,M{ /u|!JV&S+)ݝJCJ*%yLܒm䒴s"NNN':h>?!];4w<_3dq3_g(ܠ_5l\OBZF^ke^C, Q3aOQjnsrEC ~L(8ڜuB~S;mm+/ Av~ oRVKj-e/l[c{MO /sԇoezZ2ɣw>FijRufбMi.uZTwjI=eVЫZYk}k|)f:<ڶB #ꉨzG`o.:^@aW͡> v+UN3Iw2IrYv_ 3Q T8YQ6]9qp` Cp?z[Kr!hd&JZ$ds t,|lG QCqO쥾83^lul{ZK;Kgy獺Rc:Ox>Yض3uhQޥWx>M%9J3gp~`.Mdqپ(y lp؇ZHi)/랁|$'lTYJQAL%/-3C'aOp': w=KV;DեFث.I*} gtǘmi]x >(nM.+]!F+956֝h'pNO8Ჴkӯ{-;5ۥ`/悝ϏsTKJ|V b΍qV[ /3g=3 7q&d>>oغNmޣncY)qi" gg*T FYا"_`rlsIAX" Axo-X`.|LZSiO<}){d~h? A44~G2f|g;l p]tAl1> 'pá8.#- Pypc܋Rn~V0wh _xOm|Q:'81_Qdxp^RЀ3ÿ lHbP  @AL G@;b `B&VXfjrvrgfفUفdف[n]Ȭɩͯa}]p{@fɨ}j|᣺۱DƟɨ}rGɨ^ÌvcVQSTlksæᬌ{nhgdpȓõ}zttYc.>\ cIKU\`hjUEӌc^ϟJOl(@JRlLkRVِllc^Z Ȁy*75[W ȀϑKkalkQn͑ ȀϠgѾkyR g^2e-bf goNkeBxkOw gzf|o㡁X jfR6>X<:\Po jrpZnlLkfnz jzzzR 3BYX`fJIOoo>ki`gizμq}Fyc0(" #05RPfbiϒVXTLIVSpeƿyѡvsjwlrUa xbnMfFk زwۄ~r Ġ^O3C@=?BB>Slמjip|bfYFOpvʓƧ_Ou{ʱoO+Ht۲HtHt X33333333333333X33333333333333-33333333333333333333333333333333333333333333333333333333r333333 33333 33333333333333333333333 33333333333333333 33333 33333333333333333333333 33333333333  3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333́3333́ d33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333E3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"3333%333333 8[ǁց (4ʁ܁      ܁       ,́ffff ́ffa)) e ՜.+,D՜.+,    $ 'On-screen ShowOffice 2004 Test Drive UserM^!! &Times New RomanVerdana HelveticaTimesMISBOrganizational Communications and Distributed Object TechnologiesMutual Exclusion?Mutual Exclusion?Mutual Exclusion?Mutual Exclusion?Mutual Exclusion?Mutual Exclusion? No.Mutual Exclusion? No.0Why be concerned about mutual exclusion anyway?Dekkers Algorithm (1964)Dekkers Algorithm (1964)Dekkers Algorithm (1964)Dekkers Algorithm (1964)Dekkers Algorithm (1964)Dekkers Algorithm (1964)Dekkers Algorithm (1964)Dekkers Algorithm (1964)Dijkstras Semaphore (1965)Semaphore OperationsMutual ExclusionMutual ExclusionMutual ExclusionMutual ExclusionMutual Exclusion SemaphoresProducer ConsumerProducer ConsumerGThe Circular Buffer problem is more general than the Producer ConsumerLocksTypes of LocksExample: Binary Lock (1)Example: Binary Lock(2)Concurrent Transactions  Fonts UsedDesign TemplateEmbedded OLE Servers Slide Titles! 8@ _PID_HLINKS'A=http://www.andrew.cmu.edu/~mm6/95-843/Files_from_Active_BPEL(_)@$Michael McCarthyMichael McCarthy0DTimesicaRomanPڄ@(Pc .  @n?" dd@  @@``   H H   Z) ) g^?$>^kFv A363523K)F)2<]*=     %&'()@A * + ,         -./0123456789:;<=>?!"BCD?$$B$I!% Ms AA1? f@a g4KdKdBp@@pp@ <4!d!d؄gʚ;:ʚ;2Nʚ;<4dddd؄:ʚ;<4BdBd؄:ʚ;ށ___PPT10     0H@     p          8 H0 x      ___PPT9h `    0   `    x                p@`      h___PPT2001D<4X(l___PPTMac11l@f   hnamd` Arial&Monotype Typography    hnamd` Arial&Monotype Typography    hnamd` Arial&Monotype Typography    hnamd` Arial&Monotype Typography    hnamd` Arial&Monotype Typography   (namd Symbol  xf 0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana   0namd( Verdana   0namd( Verdana  0namd( Verdana  0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana x 0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana  4 0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana  0 0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdanaff  0namd( Verdana   0namd( Verdanaff  0namd( Verdana    0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana   0namd( Verdana    0namd( Verdana  `   0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana   0namd( Verdana  0namd( Verdana   0namd( Verdana  0namd( Verdana     0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana   0namd( Verdana  0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana   0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana   0namd( Verdana#  0namd( Verdana ff  0namd( Verdana   0namd( Verdana  0namd( Verdana  0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana   0namd( Verdana        !"#$x 0namd( Verdana  0namd( Verdana  0namd( Verdana  0namd( Verdana     0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana  0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana   0namd( Verdana    0namd( Verdana   0namd( Verdana   0namd( Verdana  ?-rData Structures and Algorithms for Information Processing .Lecture 1: IntroductionO =<AOrganizational Communications and Distributed Object Technologies BAB)Lecture 12: Locks and Concurrency Control Mutual Exclusion?kBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false EndllBPMutual Exclusion?kBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false EndllBPMutual Exclusion?kBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false EndllBPMutual Exclusion?kBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false EndllBPMutual Exclusion?kBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false EndllBPMutual Exclusion? No.kBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false EndllBP Mutual Exclusion? No.kBegin while(occupied) do {} occupied = true End { critical section } Begin occupied = false EndllBP /Why be concerned about mutual exclusion anyway?Begin while(occupied) do {} occupied = true End { critical section bal = bal + 1;} Begin occupied = false End4MBB.Bb 2Dekker s Algorithm (1964) Begin occupied1 = true while(occupied2) { if(which == 2) { occupied1 = false while(which == 2) {} occupied1 = true } } End critical section Begin which = 2 occupied1 = false EndZB& / !  2Dekker s Algorithm (1964) Begin occupied1 = true while(occupied2) { if(which == 2) { occupied1 = false while(which == 2) {} occupied1 = true } } End critical section Begin which = 2 occupied1 = false EndZB& / !  2Dekker s Algorithm (1964) Begin occupied1 = true while(occupied2) { if(which == 2) { occupied1 = false while(which == 2) {} occupied1 = true } } End critical section Begin which = 2 occupied1 = false EndZB& / ! 2Dekker s Algorithm (1964) Begin occupied1 = true while(occupied2) { if(which == 2) { occupied1 = false while(which == 2) {} occupied1 = true } } End critical section Begin which = 2 occupied1 = false EndZB& / ! 2Dekker s Algorithm (1964) Begin occupied1 = true while(occupied2) { if(which == 2) { occupied1 = false while(which == 2) {} occupied1 = true } } End critical section Begin which = 2 occupied1 = false EndZB& / ! 2Dekker s Algorithm (1964) Begin occupied1 = true while(occupied2) { if(which == 2) { occupied1 = false while(which == 2) {} occupied1 = true } } End critical section Begin which = 2 occupied1 = false EndZB& / ! 2Dekker s Algorithm (1964) Begin occupied1 = true while(occupied2) { if(which == 2) { occupied1 = false while(which == 2) {} occupied1 = true } } End critical section Begin which = 2 occupied1 = false EndZB& / ! 2Dekker s Algorithm (1964) Begin occupied1 = true while(occupied2) { if(which == 2) { occupied1 = false while(which == 2) {} occupied1 = true } } End critical section Begin which = 2 occupied1 = false EndZB& / ! 6Dijkstra s Semaphore (1965) !From train terminology, one train at a time on one section of track. A semaphore is an integer variable that may be changed by just two primitive operations - P and V. P and V stand for Dutch equivalents of test and increment. P an V may not be interrupted. Processors are built this way.L"ZEc< D  ,)7Semaphore Operations S Test or wait P(s): if (s > 0) s = s - 1 else suspend this process Increment or signal V(s): if a process is suspended as a result of P(s) then resume it else s = s + 1xZ #  ''  ~.9  Mutual ExclusionM S Begin P(s) End critical section Begin V(s) End\NZ H Mutual Exclusion S Begin if(s > 0) s = s - 1 else suspend this process End critical section Begin if a process is suspended as a result of P(s), resume it else s = s + 1 End&ZB~Mutual Exclusion S Begin if(s > 0) s = s - 1 else suspend this process End critical section Begin if a process is suspended as a result of P(s), resume it else s = s + 1 End&ZB~Mutual Exclusion S Begin if(s > 0) s = s - 1 else suspend this process End critical section Begin if a process is suspended as a result of P(s), resume it else s = s + 1 End&ZB~Mutual Exclusion S Begin if(s > 0) s = s - 1 else suspend this process End critical section Begin if a process is suspended as a result of P(s), resume it else s = s + 1 End&ZB~  Semaphores0May be extended to mutual exclusion over multiple processes. May be used to solve the producer consumer problem. Process P1 Process P2 : : E1 E2 : : We need E1 to produce before E2 consumes.fqZZ*" ZFf  Ff  J B $J$$(B(,B,0J04B48J8$