ࡱ> F@ "&EAJFIFLEAD Technologies Inc. V1.01  $" &0P40,,0bFJ:Ptfzxrfpnnpڢ|"$$0*0^44^Ƅp  }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzw!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?(t4d47 9w9.jNP: `P@ r[pgV29e$crXq:P]m4m4cڀ J>q@(qڀZ(RT"Q@ @ @ D79Š˞II J'`:tYx9%XǑ@Vυ?#tP"q@}h@b ?xPw@ ''L@ PzI8h&|tZHaL@`!q0,{֘k2!mvr&U2Y?&F|䓂?*XY%f'Ӹ ((0(3@ Ҁ4((>|x@q@(= Q ZH㺁cϿ&BA(ĜrI@ @ @xu4d3gր"Ɂ L }O&ցO _(P4k)i=DLFBc ր_z02h8N( #u?S@@hvPQ@(4,0K)-{@$h82Ϳ&-#pW2[;A6rv\DHT?tXy,FzzPsژq #AL{`cI$i 3P!ր KHY&I@ʂBW}{P mTu_q@ 11->`Gs5'_?ʀ#2K!>bFʑǿ q@ iq@q@b 8V3q"D ~ր*Gjrb`@_}T`0(NmeAր#IPr@[y3M̬202h=2,K,Rg<<@ &[C{{zQY0 @ 2:GLS@( P@ L)z`: )7~i?Aڐtnas@[rAcq0q@ o?"hNƀt1@ @H894 0pd;Gӿ@*vsPc20s@sm.~C@ LqxN>1[r m}y 8@ 9 1@ @(L @!jNr3@ HWc1}O'S4ȿT->[iq\ 2OP8!@ nQ֐:qHjAȠu 4Pϭ(@ }(8˷FMB$J?#@@h|\gkq ." a7r<6zj\(Ƞ4d Lt Pz3_;s@ˌvg?o@LSnR `@I`F  G 0>s@̖ql H @q@ L": q\P&h$]NQa9@Hh0HL RL ^7??J@\4g`)4L<}zFDq[ Ah%O"+S4Q@L uߗ4i)ƑGfC4سol]s74$ Fsހ dHг n%'H~z}I ;1H9yB}(!HAx"I9ϙ6kR,cT]cnAJ,1Ymi鷾lFƻcTQ = *HVA\RqIQӬY!/PdJA5o:MfӮ+u~$=kwkV/nF )s4ޚcS.* |WB襎Xuu# ԔQEQEQEQEQERQEQKEQEQEQEQEQE! s[څF@3ɯWNjˢ^L|9M$K^ៀk3ϖzk <9SI 9MvQQ5EQ( s2f&K>ҷTr rEr4_^Z fmX6%2J:״+2#"z6ycOh[jtj?k:"ߺox~4Etrkc9unp?*xE2q(@¹:mkrQy"jo⻟@#mOS^V~iVQ@qL4H/`[$6+3Q4Z&K(f ܼu~$*inֳu5!a? H4(r%4xNt5]>34ף2K]6Pۆmkw:FCoT4gr=+pjxU ?*? 6#^%1׬xR.4EB2Mp+*Q GtR1G,O#c ¾CQ>'%7A|XQkpf=6V%*E|.'PӭnapTs򯡭mm*U=MZxA)@-nI#+ſ 5 3M-sj"X S<'K]l 2E} 7ɝb }* -QEQEQEQEQEQEQEQEQEQEQHzkM+̲(rs_9ǚߍ/v4 8?`{}м/xr R%hw2Xڤvq 'sIK5FH6*? h^'RW!~VV+|-]E1&=mR5E(WcIh/޵? $ 6%ٌD}*Oxz/ecm:r1{׿ibL$J +ʾngC^5TWxݲSRJ'K?4b\۵} {-GCӂ fAWVj]/ڍ66~5|;:3I+:Mg3sonMڑ׌pmoZq\\JҊJul&]!qYfXSpѱ#XHG*9,/_In|^ xs_nFJk< 1i }­u-%!J(((((((((()@Ҽ[/;Lr(9 4sZKoF7}31uy2^: ڕWnaZQ^cxZC5 #{y~hq4n٬|\qҾw+M\S ⾗VWPAdyYzݨom2W+/jZ]QX(uiؽ*иL ̺ cg+0$5~{y Oz'58𽿊=qg"5Ah xxKIJxgX-}_5b:aՁR2=k>3,>p%F>Z|%`4 ָd ƼoZ?!62GAaKM m^Sy>w ѥHc]Er3 7w{pCQO^:ϊ5+^M>/0dtm졊_:UP}kGc4; rTaG"y #gdJ<UmY_Mcźglub@~e5QEQEQEQEQEQEQEQEQEQTyG c+築?Z]+CdI0<ҹ_;|ev;0ْgJc|3`}G+TA'.xͯkHۡDoG9h$<+q;(P9$N/\jVf;N/zNWUC۹\U#+7^O|S tqGnk`Mn$#pZOKi V׊m*(/. 0ֹ/2ҼW($^IPbxcږi>%ɶ&|xᯌ5kUKłMqs^yYV5@ 1׼[Y4rVQ7c!ul)?_TcYۅ%\~:QLwTFf` OJoֱI}M{4<9[i n u5cmj6ڎ!Jx|H|\ RyWDktG2^5 j:,k ,с+t_[.2A4M 6(VE"'EQEQEQEQEQEQEQEQETI.%_ďW$M7Nш$dsĒǩjHir_Iime)HEhqA/jmnOGc/Դ<hM ނo豓yBU5ɏ31oՎfV7 4L:ҴW?&owSђ E|cZtMnTNA_FitW$jq*ʹwVA.J:=NgúLq9,qQ?P)䢂IP=jڥ􂩟9n>2<xӓŚ [fufwI?-AZ r#XڃW7xcKuK۸CMlۑȮc-yŏp#9S{xP?ɯl"F5u'/ v Si^ɵCv7G$;hZY3tg'WUËXıj 2y]k"d=W?~!YRi_x-QEQEQEQEQEQEQEQEV+hi$H2OJĩCw.R3`>|/_T)`*>}'imvGP8W;yhPy o#I]G{k%˺9)5ZvSO^ZIc#]W¦r~lk-;6ifx*e7EWv]wJmcJNNVF@kZ,g&YFI5*F bczou(UUk>9Xh]:\o];I"~|G՜5+১Vu1;ո~ig៼9?_?AQyWj{|j|Fmu˸{U)>xMoxWQ;3?5Vm>4jk<@}E?һⷅu;ՂCq]ݽbKyD=5ltV>{e,S"-mo 5"ws)נs66g+cw>0Ք~[ts./ ߵaש5R2[A!yz54k.xMP\%` #_zr=ih((((((()ŘI=oyt-&l@HJ]l?j xE$U\|qikCPbWMq'Éj]#4NUМ0?Jk6:=7w1ƈ3 7ѧvhaֿ|su=^OX8~wpk>LBVJ5k51x퍬.+on<;Isr"f[>2ibŚt|0+i+6yzyjsJѰSWjռ5OFBmZkTExr.b xVγa+ح-" (UQLu m6K(MxcǖX+CYaxn7ۻRpG;źd*#k;Pռ P4St9WEb^6yv^4jvu2W`: Z(#{Zi=C[xDbPng5-B)μTQv j2Ǵ V|;r{[xKKv?ZmB.-fIbq)Yx $QeB"Ny-*[ǜk&Ծ+kei-?t+Yxke孔A#D k7'|}us:Hϧ^t/hOhf");s׵E4w,0daa^Ucz&a]B >7o<-@[d5}gjvƟ C iEQEQEQEQEQEQEQA\|UoMk\y"%'MFR}p3_Wx3С X֝a][NpvƤ?GS-k)m.Y!qiMgƫ.M*M?ƻ߃VΟ& f2r^8mj;\_؆kHzG_ʽӌgj6]^Lă%׊jF7IvKZC_k5?wr8ׅEp~;e2u'A\1)xOvmq^[ë~ex!;H6yG>64=Bb-?,~( QEQEQEQEQEQEQET,$N)UWcelB}kվ t-uP-{;tƋ[]_HLVk,q^OA9mm2yS]+?R-uk)m/"YaU|  5'KM'=Sǚd6̻nf샽z<e8E.fiRkK~(3p>T,k?|]9B7 ? _K͒X@||konfQOݦm97$}szP !x6UK(sYk C\\n>|Q}lBMGQף 59j4 㷒:v ?Wc]FCQ^y^yOxYG\֦Mrpj# BےU-x1oK"_\wqDeQɌ4RZσ|U%,,pƀҼCڼ/Ֆf ~t.g^<ϳ lo/m|95M( | [_ ev/3LܜoKQk]: 6a <]K"RH=kt5K lPZVƛrq a 8+WŚ LRosGu &hyCjMT^/Zkvicf?vOŲxwB֙7ן5 NwjW_;uJ%vEx-rY3<֨'d3EX: }S!8ߎi~EaԠ>~7\S:W|]ާ}&Ny3e#'"+^0l>6X4Y=֡r  ~'x#ðJv^=/ÏKPcS m+~(x:?jcYlr}x)ܲ }}yaAYCwT UҊ((((((+?SMn/ep…M|}}f>-nvM/^3_M;~1;y[kc:s UI=Myx#Ŗ7(;3;RxŖקMfϛIpzޥkdrSE"vq^[=JӮ6ڽ2AJqO3_^:F XWiVgW7ţ߻ ^img[Ek(EV^Mze!#0 s6UI֋ˤOBӚ]kD3ۈ|C:/DRk !7?fn/dDu x'Ě*3(2޽VWW+o>&_~U/.'7:&n?y]~i^{URh>QTGV-nzQ1yfdGkz(u+s~*_vZ1j#[f;vX:Ljt.|< tq3zwzrּMߋ>(}X-V[DqJG&| r+>Q%eP1jk^:&uKhktrp8VW~ݦs&f((((((+ž;;HMLMs̀\? k {O}>v^mmحTVC7e^Mж:vuj.-2F E<|?eˋ-6dl4,zUi_j`;r {W=sV<o4f6M"9x Az$#FrTJox [٣ҭ+oz֑i}{oy6rYi#{ƛnEBKWm_^7G'oagmuM 89>DvO F+f?d/Ү^T]cP_WWk:**yoa^ QM.IB[۞ M{-EtH֬69Q0S}k%BH-,,dAֻxŚ$w! X5*") ⻋%9{ 3';Ew𭷄? 4c'dҞE|;tgz*Vg%Ք4L35DƓ,;Gn=+%_QU4]f8U#=E'҉C&Q^ڕ9o5 Qx87ľ#ƻ0Ѯam)Z7enດw? ~2k,o-ﬡ*R 6->."VI>(oheT$^?,M;I,Y#A]Ox~oQrbg^ooa!Qs1Vy]h@;5zKíLhp3W@(((((;W^~ Tkݧ5 |: "n_[*(*N:dSrsw a|z0kzkP)+wc j/kiu,Mz~>$&pAjτ~Q~Ɉ8=kXeX~j> oI$:5Ǽ^)vi5Myxwz&c]-n[|n6{\/&aBB=Hz$Y۴Hkbz X Yz'~G3$2s[KGtE+s=V#EyKu$W"P$ՏbToTsФ ߻aSGҵQel?rLӴ֯Nb? 鱎_Nv%_4ؚ- t\*1f{!{?LXՏirkǩ&vgZ4>yMr@C]Ay4Z>ﬥVGySW"w0Ĩ6[hk1dV81!QߏtZ_5/j knLH-8"^W%e#K(фF}%Cj񯆡O,Am-w \?Kg4\g"HhڂF"cĖߠndӝ*_ ƕzy|358q8WXZKs1csjfk1Z˾\wſsw4qn<Wďː]4((((((ȯ~<{XV˒]R꒡ܷԵ-A46_ #ֲ-o1@Uw n~{Qǵ~=-<3b |ώ벽7&!Tu5kWpxn.$A+حn`gD6 "J,(WzbG?`Yrl)e2Mx_O{ wO by^XxCL /v5q+[98Y~ /GN q]ei/)*?xu';xl攅 I^T|7 D1f}9 "{q^Vw,-C&@$WTkAhV׿h7Q>S3}\qkKm:[$1.I'mͦY6UP*;Wf&0Vms[Iӄs;Ivt71=OL,ed0 SE⏴[B~A蠚'Stom\4R`G8{z֯cv0tP`ڇ CF9ci յQjr#$g> ^&ݶ*A?<9;SlOWZ:k |'2c`2]<][:"NNϯJF>'jwTbdcJZ }+w^~H"81Iף\4|5{Tm#_UxXMw}X+((((({tvS9ƌğa_2Ɠ6Kg_^xgLO21!u gqt.Akw|7Ϧ]m/<,::g~h4&m%aҺ~(xk"[ubGL}+o̺,&7OjZZ//@=)9תM㒅8Y/qs\<xɺPa$AcO5$o[hsK/$.z2[r|yZ~+x]>)j7ggAx" i+5n$#VW0oåj*lH77/^ Ct9t_|Ga#}?k?ɑ_Z]#DAw+WVZ%׊_ 0zQ⻏j;TcҺxW^*Ok?-Nr[WuԺ圂n<;x#7EƯoho4Oפ͢xFfc$W1O~$6icbGZkZƐuy9*IT o h;+!\>2hZeÍ0q,uO4%hB:W7xO[8O/8HsM?H!FyW>> o>O 9A^Z0Ad\V Iq3Xx^cpV~:f/[rZωP}Α>Y+!c!|Wզ6C=@)8Eb{Ӊ:lrzҮ~am3!Ҋ(((((;W SV]#n_<%=) uvG?6@h~+>WYSOgWxh63i,:\3_AVKaZ"E? ڃ:bKO 2^[gHm`|s^p4_|D?M?MȀFp\d^ii:jZķ ~3\Kf|c]p‰EgP3X$ sN,jpsڼᖉ?YRG]7Voi887z.j=SF"⧃naDwVH|gz~G]qOV.{MgVY Zb8'ں1rV&uuv>bȥȮG)>κ 'A_?WIc\+a׺!k3-.Ogm/ XG,5tWK4p^GTP9,p+>!i_c_<}ki#TϨ!=sR J,>&h h(O#41*i\j|#h|,{)7fH¬CK<w5~2xj-gmoRO_ŤwSr c"/x'9 :g-OW{cvZb%B+_Km+~Cgۏ]d-!a¾9wQ| n5 yzd5}?zYMRg^pȬ"4Ka!w}kh&}-@9eɮុ/eLA?Ȯƚ%V"ϭpƋw:/%-u h֟'R=4j~ĖX[lW :j7V0_3>3Z.~!x Z[wH98ֽ+V#4 s^;*]D,:׹+Fu4\<-xՉ+5!NJJKwbo-4F܋z{ױk"/6R(_j._[C 2Fps\2ַ$<s槬$ 7@.HX5T[լfᢶm Wfuow-lFckc$sϪ1777kM͌m9]L^H@XmUyo|cOMw kgivpo[x\5Xƪ}gO e{-]lF_h}(=+E}i|C! 9gְu?M񞋪rZZkmb:|$~5ƟHGae(J|Cڴq[Of?o/.bU x{u+ ϮYC= ƣ<'}eiMRqXc3V]Fw[|qsZ~jFDxf_ƻQR{ K]o$.]hlC_ײl*0BY:|?VCd2|J%w2 Cl/SPXDW`;א3;/W&;RW.ZҊ(#}3vczWkVڷkvϦ6d3Wg4, }*ޟ=LU[m6qܦMjX]B"AYAk;kUD=@}寏:x*OI$׭|&&*(((((V <&,_s('}[@ +ɭjGNh.%&GpHֶ<j\w:%ܗ+k)sI{Q7Z߇NםKzgXXm1)obkpX ]7Qeq `oEݤcuxiö pť0%#j4 ~`n-bF4 ?SL46GEe#FA?Ox]ktGF03^-'$=X6*Ww4:\N]q?V!Q}*iffvZFWڹ/Bκ (#LAwn"ZRzW|OHH FT)ָ C㟉/1٪[„?G?B@j(]T8;Nq^&7ާ'^0á{X״]?R1 gV gmD\&~aڕp}___񭶏ak s-ܻ0thpZd=xIs^EQEQEQEQEQT'1 6`x|ů_i٨K8#QW|{eMJb@In;] ;/ʚ?UKIMJطt@J#Xy5@kx#1so@!A5'孚H(,~_ c }*x>ɩ]%ˮ'r? ZytZOl[Kp~ +_o)-ZR.bŝٷq9>"i{!i{\cQې> Ȭhb!\v<W"tmƖ'k'V{--Լ~VKn/n)cR:&p-杇ʋް'sɫf6ZW{yLTqNԾ%\i#%u/ @ ^c,Xy91S+]F!Zf Y*-IA|u ݵw pqZGXլ@p=EYv_Gko9!PxSҼKkxLK8dY𷇾xqVC{kup:!'v‚8KdU* q?‘HPژ~*xETy{"֎m+ReKApP9t;1ιoN:4vc&s9+L-gW]B8ܟ¼Tx|%!oN-kʷfb[yzcpuO]Y^Ǧ&-\O+~:Ϣ%4c<r8p5;d {eku^>+)Ͻm?oJCs*ך(}kmѫzkh}Nq9ʻ5H^EQEQEQEQEQYz>5} /t{bYg k=Yi UpdE|}Fhn]O`븏_ᶳ]cJ!km5ŶE9#\U*+ {-4WxOZf]>_¼ ߎ:̬ ~D׼y)kd1z5?4Iav֤Vgw{{Zܐ; ʒjNw-q`p \gl#݆FbA OR?:jI{-A~&k5[y#0u,$cH]mVjpN%aj};z[!x;~ė c03of1+(՗崻no5IE61Ut[MSM2I ]^0*Oxm`uijey4KN:H85ھ}iq{B_'yŚ ]>w_QBkY.KAk<()ҡt,+h-l0e@**c6x:C'4W '>0k}&5KZWg[klcm#ci'EtT(?j|5X|rndB- T]ڶZl"P8~n%wd8x/tM2OJJt#T hœ85l^'>it?Q^X*HG<:'Yg"^]}XGѣm='+OuI5G@9et}+>>6k5Ze,OWxƱ<,pRMq%cSr׾1#1+׮bZmD)ɵWX7𯞙wcZSOM,H0H@NL1JFU8k ҷAں}n1LH5(Q+!Tui8Ȳ?V#vB3A1sJ|9g^^E}]׃|l֯t/iW#>Kḳ~_ t?-pan᫧mATsَ+zZn/|Ă㬨< 9qWoP?#Hʺ#)dW#xC՝/٧<`;Nk ìFվn~چ{6I\#~nT~/q7! _X4)"m$y4mNKh$91 ?/ _}yMwQw[y3tV_P8 :(((((u-ꎦF9nzA}t*U.=B-Ṿ* 7FӴ87}jZa|15xW`sWA=cgDg^iiS-ĐD+~}Y5Mnw8xNs=›:PxWKi=F'`ɭU`2 xg[7 pg_ֽcږ}iQ;W|⼔ F1sk *0ʀ7Z{M99)H KVV+"I\b?X/m[ܸHFf'\?<˫iM=:_.+MzaF1ʳ-nY?UZ MxŶ!Vo%U:4O |,V15C gGT|* 4'V_ \nfZe5dQ:^݁ƹ$w.}JUXC+jvOAζ#TsFK;KƔȏ^޼㴅C7//zސNfq"xHxiT3u=EuY[EooQTp*;Ra}/j?Ez;sVG⟿[?}EQEQEQEQEQU̲OFKׯ4]C +P oFnjkbTMWN5s~5=P,?wy&~'1ku} 5Qx1_v~ ߘlKk wFxsI#dL?y׈>I 跗8W++Y 0A'-vӯ [57@e ?VӴ:5=svv[¹\o7Qz \U?o5EC o8n Hs^\ l69o!-CY./[tyKimMqg>HSMsTPӬDKҘ=ƩikVEp/=i$ Ecs.~&w;ִ5[]^%ôI_硫nZ?!!(;dk#z4Bg=t񖣯_^LdXPFW :oH״?GՃNneHӖ栓UѴ3@l kޡqx#IA<5yiEDY#w~w |c,;NCDV/>u` =㵌 $Oeow@:|?Gf{M+kAE ºG!v6?_^ 1PҼg/|=umS^w70^jQGjܼ8zV=īH2YOvq뫲IfYbnC)ȫhɶåEnZYx((((()2z/d*s -I9y*_jMzFZ(Z¾Ծ$K6^J9#$~ k>H\<%IJ6y?{WvvV:[İkZ9h^g2Ӄ`G^ WosT_/G? u/daH;|Q Ed:ɎGhզGyg(x~^Ƽ㝳K 5^Ch67L"gVC`z8-kz_PH@Mx>9^,?/zy6[ꗑ M&q־q2.;D_ݏmf˦<3[Ն8W'eˢk:4MxҴz](7kh wQgt+m8EvatCJORj|2lpXJ;kᯇZ+#37Ax~NV2uh汴_6m^]K}7):jv7GeҐ ~Oҍ T/9Kg}|/=}b|;ahiS)rƼ~{K2/kVZ|k׭kU!N2Pvc.+OWlb^lVJ#}F[Kּ?OoexgF H$WSZ|SM9eSM3Ym{ J%Mѣ_n?_XLӦ-4}2i H >Cފ~\zF]Z ['^@j&ut# @7t=GX2ʻw?ZuDŽ|{uᕙ?6;C|C^x=Cfa,s^EQEQEQEQEQA_$k6^?|af]5 uOv9tOš 4'5|7f*(&t=r87~,JM.n$epp^k 3oks/2R λ\B[ysA)OQֺ?u1TާXc90=L1Pƣy '̈Bi~ eaxv֬Eq,j)Wx#$;4[͍ # ٹ W9S]7m6fHb^y-Ċ3JkǚΦZ\;|ipG] wjz{Wu)ΈARď]:g@R1q^iJ"1ҩg ;Dd690`z 8|E!Tui8Ȳ KI)qHG/Z~R$HH ǿ5zu4s\"Wz>'i>" mrMFolנRQX^'F.3+>\.+; ⦭seᆲ25S\FSVʹ6$.#DuPda$8"o!xNg}*ki,@Xбx{v~ kE?t=wQoᑴ@mgaOXtI{hMy ] B66d%jNYb2I^W^oWkezq^?|> !9XF07~QEQEQEQEQE|C5]?Pa?t'Չ9xdHbϴ, bsMkUY ႀݓ] 2YCWKa *#nâvOQXZ74;:fomkv,W AٲZ0knb͞ED25ZVw kjЬC]F23Uiz֭}b&kч!y׫>wt,˂پ|_cPl=9fҬ y ~_ʴx8bDOEyUTdڼK?^ yY&^7Ω~\s+)RxkźՍIF,j$;H cAxԧTFy"GR`7/ݶehMK|#7/*kAOӭ#Pz™D;#!5=?tʩ*;tPp7 OPsjKVp+>4jS >mqn7_+oVn(^Upd#ǂ3@yl)"Xھ2麲yEp?Ǻ^$w H-9+$cwجjP Pyeş=Zu#3G_K֗2ZȞa3<I|w=`Fz~yo3i [AݹwwFi5':X6$8FA xMg y⻽7K,$*cc? [?|헐uj&`V<"?|Kruݹ%뭃}}!c> Q٢(((((& kgx^w W[O`ͅN=}9ڠwyQn9l f{maiR4fc+̼CD{{{N~7n:fv'N_N,Y,W{QҼ#4 _zg`bpֽ?k?\2"주̄1^x[(/>d⭷/yږW|NԡlM^:]x.'< c X}narq]G_ IJ7e 2خN{BD$^C]_<A-pw4-֮9*zfVMEE^ (> yV>*#HبX0yeJ~ʠ7-ԛm{Pk-ɾz ԑRIX4ڌo4gL&'*sqo@Mb8k!:/Dnu"H*58K6Lc"X j4K?g~l]bڬM] mHͥۂɽQQaSK/jh-׬FR2j6qrcKg=kƾ^*NE״wO<=+l>i:5yIخ_he bD*/#יW1Ck <70s-oC}HͻnH UMka.+>:xYXihiWEᏎaVD_O4Mn :2g` oAKQ|q J>[Z{;ۦٱ)QEQEQEQEQEL: B/#M͜1\yo?¾͂d9ǥxſZxWG/vɰ< M-b7!MzlVV;x@r)ml>hf`*x}Zm?P'BżsޛOÃDy =qx¿Bok2ko--[<lEmI/EQRM,pHʨ$9&U5YGFk?FQyeq( 86(_0ޕxCZ悗{7SW޼_%-ofK .y5^,A ۆG+dI|RGgI;mLK,jLI +2V༷`J_D-LW(q\y#~dE?5<32ohu^únyj7;Z-[Ð?;6~vjO~1\V}Zus%,sj/+zW]x.ħZOHb ʨo/B Hq^q| 4^Nqʦ fE>"+y+)k>24[cfNޣҽxQ+>cZlm~Gq4qs+I+nZ((((()0kω<*lfewvW$j#qJ xO"=W⎹^|k) qs^E&xL?[xy2L֯g4'GPU(O^6Rnzku^GҸOn,$=^uK{[ 5&?>0Lӭ~+g|QMcp,#cjo> o A^#$WRr+uռcx>^M= { <9]7b pB>f>qcW7Kcה.Tާ'Zo~ E$ ˌhI}8UπlGjٟYw0^/^GA bebF\}?W<\m~>d?6zZxn%Z/:>,C9S\7Q&t9=z W|PvI[~UTh]_;CJ_R٘rSXxvkHn_b;^[u 4,̮ x&f%t.yZVo^[8hPC#Hl:@ׅmmvbWPs]x#RъLJ{h.P$Pk| 㛽n("p? Ofu_Ih]) 'q:m9J((((((xOlӘ3FC>x8+ȴwyM렂Km? hO4粑gk 鷚Ov Xu&cy_ I׸\^Z~6*{O8܊HSGZƩ[=֛pۧN}EUimt<g\|ALjk}>& WA vQT@Ҧ#">kA0s\<{s^ t2|~+L!<2659#it$մ>!x[4m=sGQ;{xG¨y]7v3]H ]<73mb.Ҝu5EiX=uF𽍒.ݑ ܊:~l um9/K"2BTÊP3Qqd5>/c.Tvt5nM[×9Y!rUM{5E}+7k7ˣ˟n碷{Ҳ-*T1\*WW7xZ[ɎF:Wl^)e ,R2@A\ΡGREc+):<+/Bk,7vAJXֶ~7bX$l~WꚔF=˅$,rk<c?}q[&Ȅ7JSW6Ǧ[sll MFfI#;WJk6\ Z6]#}\׊&.y~d+{ uqߌ}GivֈXc VQEQEQEQEQEPzW;5 X:/+WZq1%^m3_cj:|d O|O3f9;z_xJ-o퓄9${> zd>(i$;brGZ>giYıƒIu}mcN;Wsc& ex믇^=VrQd^ݤ֙ UV쌛yc?ʬ)R0x,|ahTCz1̽s^sx\{ 1%;b9}kb״}:Y%LVt2 *-^,{k_#nN:Wzcx5umlʷwUJ=K:8A {XPxFeж\qu{^/6"]?i_z%+mz|:T`b8ѝ?uaV%KC|dpNkH#hC Ic]{ęT~Bׯ* 8S>(^:3\2 x~ |27:hjv]i+G$T8+ςEΖK%?ѼoO5Ő9|muGKm`}IT1NEղ1^kFSaN7_@ O߉ɥCW1k֦BRa2;Ҁ t((((()|Ÿ$т=|W|A<>t{5aXf[;UmooP51\?>!Cn:qs^ox%:05 bx@>t$t> /~x+; 9;(xgM%j"c_=,znrp>xO2ގ$f7zteXȘWSA:|v;cƶ3\?iZ}3^ڼM<7ƕ+;#>v:$܏{V4]HxpE]gtp*0>W=O]͎"CMyƯ/MtptȯG_Í/‘1qxF^w9AKER1WKgMkKWߨ܍"T*M6ٵUwj76[תqҗ`T34r"2+[sCU,YrC'BkuxcO쯶lE {/ 1H?[ԍK1>?qOYZO.!gῇÞ)CqMvQEQEQEQEQEQE|L70$y㜊 ^/g܊ys)}yeyWhP5JdH|[^OS /y\] +Wm<7e>m#K';N3y[v(j+1+.Z'."m9q4.Fes\ÏOouD^ I(p})C( W⟅ݥ}%c$?K}FNN+WK,-IMg( wx:*jz+ⲷhFk G+c^ rCklుa#F pcڗ42`GRxŶ^dUQ5ugU"H GYzvcOq V;KAY?k"l;^-,>)~/Oo+UUT` ?0Ўm 7\6*_|&VI= WJ1ҝEQEQEQEQEQEQE5*As_,dFڅx;FKoq^H*y_>|Ix/?oA'{|9\P𪂀k;N43dص~ϺaCԝ~y'Wꚵf7 H9,kt?C':-ܘ,A*=s^oq)4.7PGz󯈿VYxߊ4?Pq E: 񦕪&y߀v u(Ԁ3ßĒh"_&4R ^W FG=iJ =+U𾏭!}5j7u!զ~Y"m#ēEflLtjTҾ/.j%k&_֝_5/)µ>i*VMJNGuOp^&DB;jiMJLbº;_@~35yn}iͽ1oV6k.x%}k<9ͤhZM3*[ [?z[<.,Ƽz+C2鱶b#Z=œ2 > ~<-O4&y74>`lཷKyVHd25x:w"+veITa]T}4ifKnmީAܾBĚŚό|[$2ģ5Ï -onT y[k(((((((ҹOfxvDaRbltjVPOnh :dfοoM PpC3i۬c ؊ƨ 㟴Ӂ;8R*| r}쩹 ,xt xj^&Kk xKº,)hl>Z:Զ;hQ.^Gj+ 6hڎ>ϪE#/4CpbLf%7WF A=+|y;Bkk YU1mF㻵k4I!u"AxQЭIR2qW>|A SXp4ZF>o<ѵl#nrXhCKMN1FGQ(ڎFOݱYZϋI҈\f<[X Ge$vVcJiu=sƞ#[FK=*7,J~fi=>_د3O׼OizYeaL0{΂PIF\l`mҸoEӼ%fM|G מxkߏu/[=ۢnvXGoo4UQwTFa7{o?yi+ >Ycq |WφӅ?,L3Ǩ⺻OXK [v=&//Gq /[.,)b(,l4Rvڳ/cc5e&Jj^َ/ֺ?4zZvIP?|UYE·G&㪹zJՎ`|)Y;$r=EbxEYk4xj5kbڗb[FŋN+WZNEu4riv8B ziwt]:]Z1Z|-k-E[?xHEq^ݵCCsq -,*F,q?|ZyNX1FB7d_&M&-{qq"U?QH@$l4h IDSn\+\6l* k~,(,"5|צ[gCQWpGA_0}U) }k I>".l/Tc;=+ڻW -,"snJ-QEi6Zū[0Wk _6)+Wß]7Ķct)r0 S!IgXd`j(hʞbTM^n!cf,7dj%\e.Z'`R1>][ԏ6rx5ү7 O<1YOq"+k!w"["(9=Mz_è5I1n7_#FWogkuq|jO NծSCb*_4{cY\|GY|ɷֻmk4N8hZvA%Q2H_|Nм4\]tX993e+&ߌ/|>)ngIuS8v t(K2k^P^y?ɱ-hv\N0+ۆ6Yޱk]ȫ`OZ+>%@]џd1¾W4𾊗WHGz`Җ(((((((J|S_X]v>9S_'ZV?4/nxLq([Y[޽jZ(3Epk/_Dq*5yρ|iu纶>Kp+OGַ|rdہ}'Ś.cR 4[kyABۢcՂWDӓQ{i\a&ܖЬj͸W8v+B3Q-gr[@FXcPԬ#/ws*W`+2hN,zd~> ;X_MӛxcHzB^ 1A*"Q*P-dQEZ$ #V'|1aI G.G$ֹFs1=fNVRl(}k9-uXs~((((((()O-`9W'A๷~Wa_Ox6~2ҖU%%<]#(UZXU@',EC'Y(x[G"x-[pk_Ф~bB fŧo _0F]H>F4RSmֶM>Tw`9}ϊx9o'`lZ|%+`[iֺ**P>(]ZY-۪@-_&x]ֵ }tI_ |DZ¸ˮ{קTnbAh2ǁ_<|Tɣ貕^%O/X x/oQӐ嘏}+ >L!Q@QEQEQEQEQEQEQEQEQE!+;"9}oèF27{[[/-aoa_Exem`TN7}+҇AKHyx3Kִ{á+&>l1߅fGf9o0pGTy /zt[Wyr -<+V,*<I? iX|t(=*դ7qIꧡ+Ŀ5}KKm(g +# H aT 7 A(d;xY̋$%1ι^y;Ld ' ^\B"l2=qEQQIrEǰZ,+x"pP3}+KX@6ƁGSH8ERMxz׶ZeshP:R(x6N@!W|(oNuWrDC{WјA5_W?'gBT̥C޻/|EC4 lTQG5?yncVSE gŽsIlmInWx͗.E_f=5)  `:~5reܟE$t ( TQETM,,qVc+ǼwK2X.n@~Umwq#{?;Y#!+֕* ?QEQEQEQEQEQEQEQEQEQER`TSC4Rtad|Ԍ*nycx#V$'F]gE%i|:ne[W1 [5KEW^ֿ vQ$_/7.$|ڽss^2xk×Z?: 5b牙RcNъQKᆭHZXW׾x7^_fSd_{դ K$mXdi:zp<Ҿvau~9V`ׯ,2A#}XHS&kĶ2Ga]Gmj>(EsdEe w(4 )$+gĽвp3HpFNO֭x/6YR6',9j'Ҽ+nX[(`>iHqREQEQEQEQEQEQEQEQEQEQER0x wW^PI>9x_4z+zG s^6E=ū#s{m)oBc~>_tf%)ʶ◵QY!+) O^νn#/`8'Ʃy:5ɂ|ֽy2}G?fh[yQ}=v[u".2ɞ^{~hGu}J((T Q*J((((((((((((R0kt?}f#0>( {h^CϋzH5'#<[QR^g+м3rme>: \`{S$8q\εh?ڵ8wk̵-ѥzIҼ\oV[U_99Ğ%rڼ1&Y<+KH.5/˅i(5p6,QT`U8((((((((((((1H@KEHW֑N̼כFO%<:f\)}-FqH|57KFQEQEQEQEQEQEQEQEQEQEQEQEQEQE*JZC0?L%|%K9j5?NiD}뗿6Pʽ;uw6_/Ys=up1U-86zgя?Y<5/Ɣh,'gԿ?zz\WK?[6Wr}pKښN0u\N_KHYs]$qh4U_E&((((((((((((((((QE`S4QO"ȣȋy'*LQ(((((((((((((((((((((((((((((c( / 0DArial Newmantt4 0"DTahoma Newmantt4 0" DTimes New Romantt4 00DWingdingsRomantt4 0@DVerdanasRomantt4 0"PDCourier Newmantt4 01`DSymbol Newmantt4 0 C0.  @n?" dd@  @@``  :82   () *  - <  :  B:3C;e6"M"#%&'()*+,-./012345678B&CD/XR$"&EAH R$Nт۳ Y*2H  AA1? 3fff@8w ʚ;y5ʚ;g4dddd 0tppp@ <4dddd@k 0t4 <4BdBd@l 0tg4<d<d 0p p 0___PPT10 ___PPT9unnIt>"ՌPNG  IHDR +tsRGB PLTEfffm cmPPJCmp0712 7tRNS@fIDATWc`  SP1H $XLIENDB`\N^(? -O  =F[ Deadlocks`Today Resources & deadlocks Dealing with deadlocks Other issues Next Time Memory management^> > : System modelSystem  a collection of resources to be shared among a set of processes Resources partitioned in types, each with multiple instances (printers, files, memory,& ) Resources can be Preemptable - can be taken away from process w/o ill effects e.g. memory Nonpreemptable - the process will fail if taken away e.g. CD recorder A request for resource type R can be satisfied by any instance of the type Z=Z Z5ZZLZ= 5  L, >\ System modelA process must request a resource before using it & release it after once done (open/close, malloc/free, & ) Sequence of events to use a resource request it  if not granted then block or return error down(semaphore) use it release it up(semaphore) Suppose Process A holds resource R & requests S Process B holds resources S and requests R A & B are now blocked7    iP*7     i>\f s]Introduction to deadlocks A  cute example  When two trains approach each other at a crossing, both shall come to a full stop and neither shall start up until the other has gone. An actual law passed by the Kansas legislature & Formal definition A set of processes is deadlocked if each process in the set is waiting for an event that only another process in the set can cause None of the processes can & run release resources be awakened Assumptions Processes are single threaded There are no interrupts possible to wake up a blocked processZZZZZ"Z Z\Z1  " \^Conditions for deadlockMutual exclusion - Each resource assigned to 1 process or available Hold and wait - A process holding resources can request others No preemption - Previously granted resources cannot forcibly be taken away Circular wait  A circular chain of 2+ processes, each waiting for resource held by next one All conditions must hold for a deadlock to occur. Each of the 1-3 conditions is associated with a policy the system can or not have; break one condition ! no deadlockZ,n] b_Deadlock modelingModeled with directed graphs process B is requesting/waiting for resource S resource R assigned to process A process C & D in deadlock over resources T & U You can generalize it to multiple resource instances per class:??{ Basic facts|If graph contains no cycles no deadlock. If graph contains a cycle if only one instance per resource type, then deadlock. if several instances per resource type, possibility of deadlock.2Gx+x`Deadlock modelingaDealing with deadlocksPossible strategies Ignore the problem altogether  ostrich  algorithm Detection and recovery  do not stop it; let it happen, detect it and recover from it Dynamic avoidance - careful resource allocation Prevention - negating one of the four necessary conditions  bThe ostrich algorithm`Pretend there is no problem Reasonable if deadlocks occur very rarely cost of prevention is high UNIX s & Windows approach A clear trade off between convenience correctnessV+86+86  cHDeadlock detection  single instance#How, When & What then Simplest case.$ c 1.L ! empty & unmark arcs 2.For each node N 2.1.Add N to L & check if N in L twice, if so deadlock; exit 2.2.Pick one arc at random, mark it & follow it to next current node 3.At end, if no arc no deadlock Arcs: A!S, A!R, B!T, C!S D!S, D!T, E!V, E!T F!S, F!W, G!V, G!V L:[R], L:[R,A], L:[R,A,S] L:[B], L:[B,T], L:[B,T,E], & 6:8ccc   bb  $b$(( ,b,004b488?" dd@ ?nPd@ d " @ ` n?" dd@   @@``PR   @ ` `p>>  WO ,(  , , s * "`0  T Click to edit Master title style! ! , c $ "@0  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S , c $ط ":   9EECS 343 Operating Systems EECS, Northwestern UniversityN:0(2 3 33 3 , Nff??"` , Nff??"` F   ," , Nff??" , Nff??"  , Nff??"  , Nff??"`  , c $(‰ "ce  L*"0(2Z , B޽h))? ? T3f3fff[ 0___PPT10.Zj&___PPT92p22 1_aqualab01P  0  0>(  0~ 0 Hff??"A 0 0x "    A Click to edit  0 <$߉ "3  T Click to edit Master title style! !T   0 "  0 Txff??"  4 0 0 Tff??"  4 0~  0 Hff??"A~  0 Hff??"A  0 RAk B?nwu-seal-gray"@P%  0 c $ "`0   Fabin E. Bustamante, Fall 2006H 0(2 3& 3& 3Z 0 B޽h))? ? T3f3fff[80___PPT10.Zj&( 0 d8(  d  d Nyy .   v* a11aa d Nyy 2 .  x* a11aad d c $ ?  4 d Nyy 9 3  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S d Tyy q   v* a11aa d Tyy q2   x* a11aaH d 0ηo~ ? 3380___PPT10.eۡ ((    Nyy .  s  \* a11aa  N(s yy 2 .  ^* a11aa  Ts yy q  s  \* a11aa  TTs yy q2  s  ^* a11aaH  0ηo~ ? 3380___PPT10.dz͓ 0  6(  ~  s *03  x  c $0    H  0޽h ? 3ff3fy___PPT10Y+D=' = @B +}   0 0$(  r  S 8,`0   r  S ,@0  H  0޽h ? T3f3fff[___PPT10i.;D+D=' = @B +  0 0<(  ~  s *",`0   ~  s *0.,@0  H  0޽h ? ffy___PPT10Y+D=' = @B +  0 @<(  ~  s *D,`0   ~  s *\E,@0  H  0޽h ? ffy___PPT10Y+D=' = @B +  0 PR(  ~  s *L,`0     s *0f,@0  "P@08@H  0޽h ? ffy___PPT10Y+D=' = @B +  0 `/9 (  r # S p,`0   r $ S |,@0  L 0   # @     f1?"`0     `+1?8   =T 0 2bL 0   # @`P    f1?"`0     `1?8   =U 0 2bL   #  x 2   f1?"`    `1?  =C 0 2bL   #  2   f1?"`    `̊1?  =D 0 2bR   fG HI 8c?(@R  # lZGHI8c? x R   # lGH~I8c? p  R ! # lG NHI N8c?,p H & # l1?"`P 2 '  f1?"` Fv 2 (  f1?"`LM|{2 )  f1?"` $T 2 *  f1?"`L*Z|L   /#  p2 0  f1?"`  1  `1?  =A 0 2b|B 2@ TD8c? @ 5  f01? `0p =R 0 2b8 `@  9(P T   # @2   f1?"`    `1?  =A 0 2bT 0   #      f1?"`0      `1?8   =R 0 2bB   ZD8c?0 0  6  f1?`0`  B Assignment 0 2 8 0h  8 8 T    # x ` 2    f1?"`     `x1?  =B 0 2bT 0   # x0h    f1?"`0     `1?8   =S 0 2bB  ZD8c?  7  f1?0 `  ?Request0 2H  0޽h ?O ! ffy___PPT10Y+D=' = @B +3  0 <-4- FL\ ,(  \r \ S ,`0   r \ S ,@0  8    J\  T   \#   2  \  f1?"`   \  `L1?  =C 0 2bT    \#   2  \  f1?"`   \  `1?  =B 0 2bT   \#    2 \  f1?"`  \  `1?  =A 0 2b@  ` P  \`   \ # l1?"` ` P 2 \  f1?"` N  ` P  \ `   \ # l1?"` ` P 2 \  f1?"` p@  h  \@   \ C xZ1?"` h 2 \ 3 rZ1?"`Z`  2 \ # lZ1?"``  (@ "   )\  %\ C xZ1?"`"  2 &\ 3 rZ1?"`h  2 '\ 3 rZ1?"` 2 (\ # lZ1?"`jB *\  fD1?  B +\  fD1? 0 B ,\  fD1?  B -\  fD1?  B .\B  fD1?  B /\  fD1?  B 0\  fD1? 0  1\  f\1?}  <R10 2  2\  f(1?}  <R20 2  3\  f1? 0 <R20 2  4\  f1?@  <R40 2 `8 X  I\0 X rN  h  \  P@  \ 3 rZ1?"` h 2 \ # lZ1?"`Z`  2 \ # lZ1?"``  rN  h   \  P  !\ 3 rZ1?"` h 2 "\ # lZ1?"`Z`  2 #\ # lZ1?"``  T   5\# X p @H 2 6\  f1?"`  7\  `1?  =A 0 2bT   8\#   2 9\  f1?"`  :\  `\1?  =B 0 2bT   ;\#   2 <\  f1?"`  =\  `1?  =C 0 2bT   >\# h @2 ?\  f1?"`  @\  `H1?  =D 0 2bB A\  fD1? p B B\  fD1?  P B C\  fD1?   B D\B  fD1?P  B E\  fD1?0  B F\  fD1?    G\  f1?`C   <R10 2  H\  f1?`  <R20 2  K\  f1?0 t ,$ 0 JNo deadlock here0 2 L\  fl1?` 4 ,$ 0 G Deadlock here0 2H \ 0޽h ? ̙33LD___PPT10$+3SLD' = @B DS' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*L\%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*K\%(+p+0+K\0 ++0+L\0 +K  0 !!p*2 9!(  ~  s *D,`0   B  ZD1? ,$D 08  *(   f1?X  0 A Request R Request S Release R Release S>10 2b b (b (   f1?`   0 B Request S Request T Release S Release T>10 2b b (b (   fD$1?0  0 C Request T Request R Release T Release R>10 2b b (b    fx*1?  $1.A requests R 2.B requests S 3.C requests T 4.A requests S 5.B requests T 6.C requests R & . deadlock0m0 2db b T   f/1?(  j1.A requests R 2.C requests T 3.A requests S 4.C requests R 5.A releases R 6.A releases S .... no deadlock0k0 2_b b T X X`   #  (  2   ZjJ?"`X X`     `51?x @@  =A 0 2bT     # (   ZjJ?"`     `91?   =R 0 2bT 0   # ` 8   ZjJ?"`0     `L>1?@   =S 0 2bT 8 8  # P ( P  2  ZjJ?"`8 8    `A1?X p  =B 0 2bT X X`  # p ( p 2  ZjJ?"`X X`    `hF1?x @@  =C 0 2bT    # x P   ZjJ?"`     `D1?   =T 0 2b   `M1?(h a%Requests and releases of each process &0 2&bN P0  P0B B ZD1?PB    `D1?0 !  `Q1? t  RTwo possible orderings 0 2bB # TD1? ,$D 0B $ TD1? ,$D 0B % TD1? @  ,$D 0B & TD1? 0 P  ,$D 0 )  BCDE4FA1? P|0@@ @    c"$`   ,$D 0B . TD1? ,$D 0B / TD1? ,$D 0B 0 TD1? @  ,$D 0 1  BCDE4F1? P|0@@ @    c"$`   ,$D 0 2  BCDE4F1? P|0@@ @    c"$`   ,$D 0H  0޽h ? 333MMM))___PPT10)+jFD)' = @B D?)' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*#%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*$%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*&%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*)%(D ' =%(D ' =%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*#%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*&%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*$%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*)%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*.%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*/%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*1%(D2' =%(D' =%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*.%(D' =%(Df' =%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*1%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*2%(D2' =%(D' =%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*0%(+  0 <(  ~  s *g,`0   ~  s *xh,@0  H  0޽h ? ffy___PPT10Y+D=' = @B +  0 (  ~  s *d{,`0   ~  s * |,@0  f  c >Aa ROstrich-algopPy H  0޽h ? ffy___PPT10Y+D=' = @B +)   0 %%?B%(  ~  s *,`0   ~  s *,@?   ~  s *,@ 0  !F  ` X       `@1?2P   20 2 N h   ` 02  Z>?"`h    `1? U =A 0 2b N h 8 h     2   Z>?"`h 8 h     `1?  U  =F 0 2b N pp   P  2  Z>?"`pp   `1?H] =D 0 2b N 8   H X 2  Z>?"`8    `Ĥ1?H   =G 0 2b N 8`  P@  2  Z>?"`8`   `l1?HM =E 0 2b N   @p@2  Z>?"`   `1? =B 0 2b N X x 8   `   ZjJ?"`X x 8   `1?h  5 =R 0 2b N 0     (   ZjJ?"`0     `1?8   =S 0 2b N @     @    ZjJ?"`@   !  `1?H   =W 0 2b N  X  " P   # ZjJ?"` X  $  `01? (  =U 0 2b N h % 80   & ZjJ?"`h '  `1?U =T 0 2b N 0   ( H   ) ZjJ?"`0   *  `1?H   =V 0 2b N H   +  2 , Z>?"`H   -  `1?X   =C 0 2b B .  `D1? B /  `D1?( H B 0  `D1? 8 B 1  `D1?  B 2  `D1?( ( X B 3  `D1?8 8 B 4  `D1?@ @@  B 5  `D1?` B 6  `D1?(  B 7  `D1? 0 B 8  `D1?  B 9  `D1? p N X   : X  B ;  `D1?X  B < ZD1?  l Pp  Bp P ,$D 0 @  `1?"`p `  A  f1?"`P H  0޽h ? T3f3f___PPT10n.8`(+`vDB' = @B D' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*B%(+    0 2*(  ~  s *,`0   ~  s *,@?   ~  s *,@ 0  H  0޽h ? 333MMMy___PPT10Y+D=' = @B +j8   0 ,,::+(  ~  s *,`0     s *,@? <$@ 0   p X  3 #"a     f$1? ^X  K0 @`   f!1? ^  K0 @`   fD-1?> ^  K1 @`   f%1?p ^>  K2 @`    f1? X ^ K0 @`    f@F1?  ^ K1 @`    flO1?>  ^ K0 @`    f|X1?p > ^ K1 @`    fa1? X  K1 @`   fk1?   K0 @`   fs1?>   K0 @`   f|1?p >  K2 @`xB  H1 ?p > xB  H1 ?p > xB  Ho ?p p xB  Ho ?X X xB  H1 ?>  xB  H1 ?  xB  H1 ? X xB  H1 ?>  xB  H1 ?  xB  H1 ? X xB  Ho ?p p ^xB  Ho ?X X ^xB  Ho ?p ^p xB  Ho ?X ^X 8 D `  3 #"      f1 ? `  K0 @` !  f\1 ?   K2 @` "  fD1 ?   K1 @` #  f1 ?   K0 @` $  ft1 ? `  K1 @` %  f\1 ?   K0 @` &  f1 ?   K0 @` '  f1 ?   K2 @` (  ft1 ?D `  K0 @` )  f(1 ?D   K1 @` *  f1 ?D   K0 @` +  f1 ?D   K0 @`~B , N1 ?D D ~B - N1 ?  ~B . No ?D  ~B / No ?`D ` ~B 0 N1 ?D D ~B 1 N1 ?D D ~B 2 N1 ?D `D ~B 3 N1 ?  ~B 4 N1 ?  ~B 5 N1 ? ` ~B 6 No ?  ~B 7 No ?` ` ~B 8 No ?  ~B 9 No ?` `  : c $  0 Algorithm: All processes unmarked 1.Look for unmarked process Pi for which Ri d" A 2.If found, add Ci. to A, mark the process and go to 1 3.If not, exit All unmarked processes, if any, are deadlock Idea: See if there s any process that can be run to completion with available resources, mark it and free its resources & FP 4ckckcc c  k _ c  k {bRH  0޽h ? T3f3f  ___PPT10 .0W+ED ' = @B Di ' = @BA?%,( < +O%,( < +D' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*"%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*"%(+   0 <(  ~  s *%,`0   ~  s *l&,@0  H  0޽h ? T3f3f___PPT10i.Np-+D=' = @B +sB   0 I*A*9d )(   ~   s *<,`0   ~   s *=,@0  F H   H`    `?1?h Cprinter 0 2btT (x  # Xp00B   TDjJ?((pB   TDjJ?(xxB   ZD1?PB   ZD1?XB   ZD1?  PB   ZD1?  TB   ZD1?  LB  B ZD1?I||B  B ZD1?<B  B ZD1?/  B  B ZD1?/  B   ZD1?H H hB   ZD1?TX`B   ZD1?hB   ZD1?`    `G1?"`80 \I1>0 2bjb    `dM1?"``0(  \I2>0 2bjb    `X:1?"`h @0  \I3>0 2bjb    `V1?"` 0X  \I4>0 2bjb    `[1?"` 0 =q 0 2b    `_1?"`0 =p 0 2b    `dc1?"`h P(  \I5>0 2bjb    `h1?"`` X  \I6>0 2bjb    `m1?"`@`  \I7>0 2bjb    `r1?"` P \I8>0 2bjb    `$o1?"``8( ?B"0 2b !   `z1?"`8  ?A"0 2b "   `,~1?"`& U* u (Both processes done) 0 2b #   `1?"`  $   `1?"`p  %   `1?8 Cprinter 0 2b &   `X1? p  Cplotter 0 2b '   `P1?H   Cplotter 0 2b~B (  ND1?   ~B )  ND1? ~B * B ND1? ~B + B ND1? X X ,   ` $1?   =s 0 2b -   `ܑ1? x  =r 0 2b .   `1?   =t 0 2bB /  ZD8c? P ,$D 0B 0  ZD8c? xx ,$D 0B 1  ZD8c?  ,$D 0B 2  ZD8c?  ,$D  0 3  Z1?"`@ ,$D 0 F impossible 0 2 b 4  ZT1?"` H  Ddeadlock 0 2 bB 5  ZD8c?h  5l 0@  c X0 ,$D  0B a   fD1?``  b  3 r1?0@` q+Your only option here is to run A up to I4*,0*    d  ZX1?"` P ,$@ 0 F impossible 0 2 bH   0޽h ? ff___PPT10+\D' = @B Di' = @BA?%,( < +O%,( < +D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*d %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*3 %(D' =%(D~' =%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*d %(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*3 %(D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*/ %(D' =-o6Bdissolve*<3<*/ D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*0 %(D' =-o6Bdissolve*<3<*0 D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*1 %(D' =-o6Bdissolve*<3<*1 D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*2 %(D' =-o6Bdissolve*<3<*2 D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*c %(++0+3 0 ++0+3 0 ++0+d 0 ++0+d 0 +5  0 ((55B((  ~  s *4,`0   ~  s *,@0  )   H  3 #"V ~     f1?  H  K7 @`   f1?    K2 @`   f1?   KC @`   fH1? O H  K4 @`    f1? O   K2 @`    fD1? O   KB @`    f 1?  HO  K9 @`    f1? O  K3 @`    f$1? O  KA @`~B  No ? H xB  H1 ? O HO xB  H1 ?  H ~B  No ? H ~B  No ? xB  H1 ? xB  H1 ?   ~B  No ?H H    `1?H CFree: 3 0 2bE x  H  3 #" `    f*1 ?  H  K7 @`   f31 ?    K2 @`   f<1 ?   KC @`   f F1 ? O H  K4 @`   fT71 ? O   K2 @`   fW1 ? O   KB @`   f`1 ?  HO  K9 @`   fi1 ? O  O4 @`    fs1 ? O  KA @`B ! To ? H ~B " N1 ? O HO ~B # N1 ?  H B $ To ? H B % To ? ~B & N1 ? ~B ' N1 ?   B ( To ?H H  )  `v1?88( UFree: 220 2bf *  `{1? PV  f*A requests and is granted another instance +0 2+bxF  X (  + X ( B ,  `D1? X ( B -B ZD1? X  X  .  `p1?p 0 ,$ 0 BSafe"0 2b  /  `1? H ,$ 0 HUnsafe&0 2ff 0  f81? @  ;Has0 2 1  fd1? @  =Needs0 2 2  f1? `  ;Has0 2 3  f41? `  =Needs0 2n 4  `1?@ @ ,$ 0 nIn retrospect, A s request should not have been granted 80 28b: 5 C x\P/GXHrd1? "`p 0 ,$D 0 PNote that B can complete0H  0޽h ?5 333MMM  ___PPT10 +ۧD ' = @B DC ' = @BA?%,( < +O%,( < +D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*.%(D' =-o6Bdissolve*<3<*.D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*/%(D' =-o6Bdissolve*<3<*/DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*4%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*5%(++0+.0 ++0+/0 ++0+40 ++0+50 +  0 <(  ~  s *TE,`0   ~  s *D,@0  H  0޽h ? 333MMMy___PPT10Y+D=' = @B +  0 <(  ~  s *<,`0   ~  s *,@0  H  0޽h ? T3f3f___PPT10i.p'x+D=' = @B +  0  <(  ~  s *,`0   ~  s *,@0  H  0޽h ? ffy___PPT10Y+D=' = @B +  0 0 P(   ~   s *,`0   ~   s *,@0  B   ZD|?`B   ZD|?@Xx H   0޽h ? ffy___PPT10Y+D=' = @B +_   0  ~ @$ (  $~ $ s *,@0  ~ $ s *,`0   F    $ ` N X X`  $   2 $ ZjJ?"`X X`  $  `81?x @@  =A 0 2bN    $    $ ZjJ?"`    $  `1?   =i 0 2bN 0    $     $ ZjJ?"`0    $  `1?@   =j 0 2bN 8 8  $  2 $ ZjJ?"`8 8  $  `\1?X p  =B 0 2bB $ TD1?H H B $ TD1?  H $ 0޽h ? ffy___PPT10Y+D=' = @B +  0 P(<(  (~ ( s *,`0   ~ ( s *,@0  H ( 0޽h ? ffy___PPT10Y+D=' = @B +}  0  $(  r  S p.,`0   r  S .,@0  H  0޽h ? T3f3fff[___PPT10i.բj+D=' = @B + [ 0 0(  X  C d     S d9 3    H  0ηo~ ? 3380___PPT10.QP$ \ 0 P(  X  C d     S 8Bd9 3    H  0ηo~ ? 3380___PPT10.Qy$ ] 0 `(  X  C d     S `Xd9 3    H  0ηo~ ? 3380___PPT10.Qy$ ^ 0 p(  X  C d     S td9 3    H  0ηo~ ? 3380___PPT10.Qy$ _ 0 (  X  C d     S d9 3    H  0ηo~ ? 3380___PPT10.Qy$X` 0 h(  X  C d     S cd9 3   j<An example of how deadlock occurs and how it can be avoided 4 H  0ηo~ ? 3380___PPT10.Qy$ a 0 (  X  C d     S wd9 3    H  0ηo~ ? 3380___PPT10.Qy$ b 0 (  X  C d     S ld9 3    H  0ηo~ ? 3380___PPT10.Qy$ c 0 (  X  C d     S d9 3    H  0ηo~ ? 3380___PPT10.Q$ d 0 (  X  C d     S d9 3    H  0ηo~ ? 3380___PPT10.Q$ e 0  (   X   C d      S d#d9 3    H   0ηo~ ? 3380___PPT10.Q$ f 0 (  X  C d     S 9d9 3    H  0ηo~ ? 3380___PPT10.Q$ g 0 (  X  C d     S d9 3    H  0ηo~ ? 3380___PPT10.Q$ h 0 (  X  C d     S d9 3    H  0ηo~ ? 3380___PPT10.Q$ i 0  (  X  C d     S 4d9 3    H  0ηo~ ? 3380___PPT10.Q$ j 0 0 (   X   C d      S d9 3    H   0ηo~ ? 3380___PPT10.Q$ k 0 @$(  $X $ C d    $ S  d9 3    H $ 0ηo~ ? 3380___PPT10.Q$ l 0 P((  (X ( C d    ( S d9 3    H ( 0ηo~ ? 3380___PPT10.Q$ m 0 `,(  ,X , C d    , S d9 3    H , 0ηo~ ? 3380___PPT10.Q$ n 0 p0(  0X 0 C d    0 S ,d9 3    H 0 0ηo~ ? 3380___PPT10.Q$  0 4(  4X 4 C d    4 S (9d9 3    H 4 0ηo~ ? 3380___PPT10.Q$ { 0  \(  \X \ C d    \ S 0d9 3    H \ 0ηo~ ? 3380___PPT10.Q@$  0 @(  X  C d     S l*d9 3    H  0ηo~ ? 3380___PPT10. r c(qy@̊Y/136}`c}H"-G <02P468;%=?ACEGIKN%P9RMTaVuXZ\^: G`b;1Oh+'0T px   , 8DL CS 343 OS DeadlockFabian E. Bustamante aqualab01Fabian E. Bustamante98Microsoft PowerPoint@ @QZ@kGSg  )'    """)))UUUMMMBBB999|PP3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f333f3333f3ffffff3f̙3f3f3f333f3333f3ffffff3f̙3f3ffffffffff!___wwwles\4'A x(xKʦ """)))UUUMMMBBB999|PP3f3333f333ff3fffff3f3f̙f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙33333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffff3fffffff3f̙ffff3ff333f3ff33fff33f3ff̙3f3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3ffffffffff!___wwweeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeϮϮϮϮϮϮϮϮϮϮϮϮϮϮϮϮϮϮϮϮ՜.+,00  $ , On-screen Show$CompSci - Northwestern Universityo q ArialTahomaTimes New Roman WingdingsVerdana Courier NewSymbol 1_aqualab01 Deadlocks System model System modelIntroduction to deadlocksConditions for deadlockDeadlock modeling Basic factsDeadlock modelingDealing with deadlocksThe ostrich algorithm%Deadlock detection single instanceDetection - multiple instances DetectionWhen to check & what to doDeadlock avoidanceSafe and unsafe statesBanker's algorithmDeadlock preventionAttacking mutual exclusionAttacking hold & waitAttacking circular waitRelated issues Next time  Fonts UsedDesign Template Slide Titles,_c0Fabian E. BustamanteFabian E. Bustamante  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root EntrydO)PictureszCurrent UserSummaryInformation(,UPowerPoint Document(ScDocumentSummaryInformation8