410 likes | 612 Views
Distributed Mutual Exclusion. Distributed Operating Systems Sharif University of Technology. مقدمه. حفظ جامعیت یک منبع مشترک از طریق پی در پی سازی درخواستهای استفاده از آن برای مثال: مدیریت Directory در یک سیستم توزیع شده
E N D
Distributed Mutual Exclusion Distributed Operating Systems Sharif University of Technology
مقدمه • حفظ جامعیت یک منبع مشترک از طریق پی در پی سازی درخواستهای استفاده از آن • برای مثال: مدیریت Directory در یک سیستم توزیع شده • در محیط متمرکز، به واسطه وجود حافظه مشترک، از طریق متغیر مشترک (سمافور) قابل حل است. ولی در سیستم توزیع شده، هم منابع مشترک و هم کاربران توزیع شده وجود دارند و البته حافظه مشترکی هم وجود ندارد.
دسته بندی الگوریتمها • الگوریتمهای نامهره بنیاد • حداقل 2 دور تبادل پیغام نیاز است. • هر سایت یک Assertionرا ارزیابی میکند که اگر درست بود وارد Critical Section میشود. • الگوریتمهای مهره بنیاد • با تضمین اینکه همواره يک مهره داریم و این مهره مادامی که در اختیار پردازهای است به پردازه دیگر داده نمیشود. • در واقع هر زمان که مهره به پردازهای رسید، نوبت او برای ورود به ناحیه بحرانی است.
تعاریف اولیه • مدل سیستم: • در صورت وجود تعدادی درخواست CS در یک سایت، درخواستها به ترتیب در یک صف قرار گرفته و یکباره سرویس داده میشوند. • حالت هر سایت از دیدگاه CS: • Requesting CS سایت بیکار است. • Executing CS • Idle
ملزومات الگوریتم های M.E. • علاوه بر ممانعت دو جانبه در هر الگوریتم، موارد زیر نیز اهمیت دارند: • عاری بودن از بن بست -Deadlock • عاری بودن از قحطی -Starvation • انتظار بینهایت !!!! • Fairness • درخواستهای ورود به CS به ترتیب وارد CS شوند. • تحمل خطا
معیارهای کارآیی • معیارهای سنجش کارآیی برای الگوریتمهای M.E.: • تعداد پیغامهای لازم برای ورود به CS • تاخیر همگامی: فاصله زمانی بین خروج یک سایت و ورود سایت دیگر به CS • زمان پاسخ: از لحظه ارسال درخواست تا پایان اجرای CS • Throughput: نرخ درخواست های اجرا شده CS متوسط زمان اجزای CS راه حل ساده (متمرکز): وجود یک سایت کنترلی برای صدور مجوز ورود به CS تاخیر همگامی
الگوریتم لمپورت • Ri: سایت هایی که برای ورود به CS باید از آنها مجوز گرفت. • در این الگوریتم: • هرسایت یکrequest_queuei دارد که درخواستها به ترتیب زمان مهر در آن قرار دارند. • فرض بر وجود FIFO Orderبین هر زوج سایت داریم.
الگوریتم لمپورت (درخواست ورود به CS) • ارسال REQUEST (tsi, i) به همه سایتهای موجود در Ri و قرار دادن درخواست در صف محلی سایت. • با رسیدن درخواست ورود REQUEST (tsi, i) در سایت Sj ، Sj یک پیغام REPLY ممهور به Si فرستاده و درخواست را در request_queuej میگذارد.
الگوریتم لمپورت (اجرای CS) • با فراهم آمدن شرایط زیر، هر سایت Si وارد CS میشود: • Si درخواست (پيغام) با زمان مهر بزرگتر از (tsi,i) از همه دیگر سایتها دریافت کرده باشد. • درخواست Si در سَرِ صفِ request_queuei باشد.
الگوریتم لمپورت (خروج از CS) • Si درخواست خود را از سر صف برداشته و یک پیغام RELEASEممهور به همه سایتهای موجود در Ri خود میفرستد. • وقتی Sjپیغام RELEASEرا از Si دریافت کرد، درخواست Siرا از صف خود حذف میکند. حال درخواست یک سایت که سر صف قرار دارد بر اساس شرایط اسلاید قبل میتواند باعث ورود یک سایت به CSشود. قضیه: روش لمپورت ممانعت دوجانبه را فراهم میکند. اثبات: با تناقض (Contradiction)....................
Request Reply مثال Release S2 وارد ناحیه بحرانی می شود. (2,1) (2,1) (1,2),(2,1) S1 (1,2) S1 وارد ناحیه بحرانی می شود. S2 (1,2),(2,1) (2,1) S2 از ناحیه بحرانی خارج می شود. S3 (2,1) (1,2) (1,2),(2,1)
چند نکته • کارایی: • 3(N-1)پیغام برای درخواست، پاسخ و آزادسازی نیاز است. • تاخیر همگامی: • برابر با T است. متوسط تاخیر پیامی برای رسیدن RELEASE • بهبود: تلاش در تبدیل تعداد پیغامها به عددی بین 2(N-1)و 3(N-1)برای هر بار اجرا. • اگر Sj درخواست Si را دریافت کند و متوجه شود که درخواست ارسالی خودش، زمان مهر بزرگتری از درخواست Si داشته است، نیازی به ارسال REPLYبه Si ندارد. • در الگوریتم ریکارت-آگراوالا REPLYبا RELEASEترکیب شده است.
الگوریتم ریکارت – آگراوالا (Ricart-Agrawala) • درخواست ورود به CS: • ارسال یک پیغام مهمور REQUESTبه همه سایتهای موجود در Ri • Sj با رسیدن درخواست از Si، به شرطی که Sj درحال اجرای CS نباشد و Sj درخواست کننده ای نباشد که زمان مهرش کوچکتر از درخواست Si است، به Si، REPLYمی فرستد. • اجرای CS: • پس از رسیدن پیغام REPLY از همه سایت های موجود در Ri میتوان وارد CS شد.
الگوریتم ریکارت – آگراوالا - ادامه • آزاد سازی: • پس از اجرای CS، Si یک پیغام REPLYبه همه معوقها میفرستد. • کارایی: • 2(N-1)پیغام + تاخیر پیغامی T • درستی : ....................
Request Reply مثال S2 وارد ناحیه بحرانی می شود. S1 S1 وارد ناحیه بحرانی می شود. S2 (2,1) S2 از ناحیه بحرانی خارج می شود. S3
الگوریتم میکاوا • مبنا: • هر سایت تنها لازم است از زیر مجموعهای از سایتها اجازه ورود به CS بگیرد. تنها شرط این است که: • هر سایت پس از دریافت RELEASE از REPLY قبلی، REPLY میفرستد. Siقبل از اجرای CSهمه سایتهای موجود در Riرا قفل میکند.
الگوریتم میکاوا - ادامه • شرایط ایجاد Riها: • ارضای 4 شرط زیر: • رابطه N و K: N=K(K-1)+1
الگوریتم میکاوا - ادامه • ورود به CS: • درخواست ورود به CS با ارسال REQUEST(i) به همه سایتها موجود در Ri • با رسیدن درخواست Si، به شرطی که از آخرین دریافت RELEASE، پیغام REPLYارسال نکرده باشد، REPLY(j)را به Si میفرستد. در غیر این صورت درخواست را در صف میگذارد. • اجرای CS: • دریافت REPLYاز همه عناصر موجود در Ri • آزادسازی CS: • در پایان اجرای CS، ارسال RELEASE(i) به همه سایتهای موجود در Ri • با رسیدن RELEASE(i)در Sj، REPLYبه عنصر موجود در سرصف ارسال و از سرصف حذف میکند.
الگوریتم میکاوا - ادامه • کارایی: • پیغام: • Request: • Reply: • Release: • تاخیر همگامی: 2T
یک الگوریتم غیرمبتنی برمهره عمومی 20 • سندرز یک الگوریتم عمومی مبتنی بر مفهوم ساختار اطلاعاتی ارائه داده است که مابقی الگوریتمها حالت خاصی از این الگوریتم هستند. • ساختار اطلاعاتی: • ساختمان دادههایی برای ثبت حالت دیگر سایتها در یک سایت لازم است. برای مثال اینکه درخواست از چه سایتهایی انجام شود. • سه مجموعه ساختار اطلاعاتی در هر سایت Si تعریف میشود: • Ri(Request Set): که از آنها اجازه ورود به CS اخذ میشود. • Ii(Inform Set): هر سایت به محض انتظار برای ورود به CS و یا خروج از CS سایتهای Ii را خبردار میکند. • Sti(Status Set): شناسه سایتهایی را دارد که Si حالت آنها را نگهمیدارد.
یک الگوریتم غیرمبتنی برمهره عمومی-ادامه 21 • محتويات Sti , Ii به هم وابسته است يعنی • هر سايت CSSTATدارد كه اطلاع سايت از CSرا نشان ميدهد. • هر سايت صفي از درخواستها (REQUEST) را به ترتيب زمان مهر دارد. براي عناصر صف هنوز GRANTارسال نشده است. • شرايط درستي: اگر باشد دو شرط زير لازم و كافي هستند تا MEتضمين شود: ميگويد كه براي هر زوج سايت، يا بايد اجازه ورود به CS را از هم بگيرند و يا از سايت مشتركي بگيرند (سايتي كه اطلاعات حالتي هر دو را نگه ميدارد).
الگوريتم عمومي ! (Generalized) 22 • به هر درخواست CSيك زمان مهر مبتني بر روش لمپورت الصاق ميشود. از زمانمهر براي اولويتدهي درخواستهاي برخوردار استفاده ميشود. • درخواست CS: • هر سايت پيغام ممهور REQUESTرا به همه سايتها در مجموعه درخواست (Ri)خود ميفرستد. • با رسيدن REQUEST، Si: • آن را در صف درخواستها (مرتب بر اساس زمان مهر) قرار ميدهد. • اگر CSSTATنشان دهد كه CSخالي است، GRANTرا به سر صف ميفرستد و آنرا از سر صف برميدارد. اگر گيرنده GRANTدر Stiاست سپس CSSTATنشان ميدهد كه آن سايت در CSاست.
الگوريتم عمومي (Generalized)-ادامه 23 • اجراي CS • در صورتيكه GRANTرا از همه سايتهاي Ri دريافت كرده باشد. • خروج از CS • در خروج يك RELEASEرا به مجموعه Ii (inform set)مي فرستد. • با رسيدن RELEASE، Si: • CSSTATرا به آزاد مقداردهی میکند. • اگر صفش غير خالي است، GRANTرا به عنصر سر صف ارسال و آن را از صف حذف ميكند. اگر گيرنده در Sti است، CSSTATرا به آن سايت مقداردهي ميكند. • آنقدر تكرار ميكند تا CSSTATنشان دهد كه يك سايت در CSاست و يا صف خالي است.
الگوريتم عمومي (Generalized)-تحلیل 24 الگوريتم عمومي استراتژيهاي الگوريتمهاي ريكارت-آگراولا و ميكاوا را با هم تركيب كرده است. در هر دو اجازه يك مجموعه لازم بود. در الگوريتم ريكارت-آگراولا، هر سايت ميتوانست GRANTرا به طور همروند به تعداد زيادي سايت بدهد. در الگوريتم ميكاوا، يك سايت اجازه را در هر لحظه تنها به يك سايت ميداد. در الگوريتم عمومي، سايت Si اجازه از نوع الگوريتم ميكاوا را از همه سايتهاي موجود در Ii به دست ميآورد و از سايتهاي Ri - Iiاجازه از نوع ريكارت-آگراوالا ميگيرد. در حقيقت اگر گزاره اول G2 براي همه سايتهايSi و Sjغلط باشد، پس الگوريتم ريكارت-آگراوالا عمل شده است. اگر گزاره دوم G2 براي همه سايتهاي Si و Sj غلط باشد پس الگوريتم ميكاوا عمل شده است. اگر براي بعضي گزاره اول و براي بعضي گزاره دوم، پس الگوريتم عمومي نتيجه شده است.
الگوريتمهاي مبتني بر مهره 25 يك مهره بين همه سايتها مشترك است و مبناي ورود به CSاست. بر اساس روش جستجوي مهره الگوريتمهاي متفاوتي وجود دارد. از Sequence# به جاي زمانمهر استفاده ميكنند. هر سايت شماره ترتيب خود را هر بار كه تقاضاي مهره میکند افزایش میدهد. اثبات ساده است ولي فقدان قحطي و بن بست، مورد دارد.
الگوريتمهاي سوزوکی و کاسامی 26 • اگر سايتي كه متقاضي است مهره در اختيار ندارد درخواست خود (REQUEST)را به همه پخش ميكند. • سايت دارنده مهره، با رسيدن REQUESTمهره را به سايت درخواست كننده ميفرستد مگر آنكه در حال اجراي CSباشد. • موارد اصلي در طراحي اين الگوريتم: • تمايز بين درخواستهاي كهنه و درخواستهاي جديد: درخواست فرم REQUEST (j , n)دارد. • تشخيص سايت با درخواست معوق. • n معرف nامين اجراي CS است • هر سايت Si آرايه RNi[1..N] را نگه مي دارد كه هر واردهاش بزرگترين شماره درخواست رسيده از هر سايت • وقتي درخواست رسيد با RN[j] مقايسه ميشود و RN[j] نيز مقدار ميگيرد • مهره شامل صفي از سايتهاي درخواست كننده است.
الگوريتمهاي سوزوکی و کاسامی-ادامه 27 • آرايه صحيح LN[1..N]كه LN[j] شماره ترتيب درخواستي است كه Sj اخيراً اجرا كرده است. پس از اجراي CS، LN[i]=RNi[i]. اگر RNi[j]=LN[j]+1باشد Sj متقاضي مهره است. پس از خروج از CS، سايتهاي متقاضي در صف قرار گرفته و مهره به سر صف داده ميشود. • الگوريتم: • درخواست ورود به CS • اگر Si (متقاضي) مهره را در اختيار ندارد، RNi[i] را افزوده و REQUEST (i,sn) را به همه ديگر سايتها ميفرستد. • با رسيدن REQUEST در Sj، RNj[i]=max (RNj[i],sn) . اگر Sj مهره آزاد دارد مشروط به RNj[i]=LN[i]+1 به Si ميفرستد.
الگوريتمهاي سوزوکی و کاسامی-ادامه 28 • اجراي CS: • با رسيدن مهره • خروج از CS: با پايان عمليات در ناحيه بحراني: • LN[i]=RNi[i] • براي همه سايتهاي Sj كه شناسه آنها در صف مهره نيست به شرط RNi[j]=LN[j]+1، شناسه آنها را به صف مهره اضافه ميكند. • اگر صف مهره پس از بروز آوري مرحله ۲، غير خالي است، شناسه سر صف را حذف و مهره را به آن سايت ارسال ميكند. • كارآيي: 0 تا N پيغام براي هر بار ورود به CS • تأخير همگامي: 0 تا T
الگوريتم سینگهال 29 • هر سايت اطلاعاتي در مورد ديگر سايتها نگه ميدارد و بر اساس آن مجموعه سايتهايي كه احتمالاً مهره را دارند انتخاب ميكند و درخواست را فقط به آنها ميفرستد. (روش heuristic) • ساختمان داده لازم: • در هر سايت Si دو آرايه SNi[1..N] , SVi[1..N] براي نگهداري حالت و بزرگترين شماره ترتيب از هر سايت. • مهره هم دو آرايه متناظر TSN[1..N] , TSV[1..N] دارد. • هر سايت در يكي از حالات زير در هر لحظه قرار دارد: • R: متقاضي ورود به CS • E: اجرا • H: دارنده مهره آزاد • N: هيچكدام
الگوريتم سینگهال-ادامه 30 مقداردهي اوليه آرايهها به قرار زير است:
الگوريتم سینگهال-ادامه 31 در اين مقدار دهي اوليه، براي هر دو Siو Sjيا SVi[j]=Rاست يا SVj[i]=R. چون انتخاب سايتهاي متقاضي مبتني بر اطلاعات محلي است، براي هر دو سايتي كه همروند متقاضي ورود به CSهستند يكي مهره را به ديگري خواهد فرستاد سايتها از هم ايزوله نخواهند بود و درخواست يك سايت به سايت دارنده مهره و يا دارنده مهره در آينده نزديك خواهد رسيد.
الگوريتم سینگهال-ادامه 32 • الگوريتم: • درخواست ورود به CS: اگر متقاضي (Si) مهره را در اختيار ندارد. • SNi[i]++ , SVi[i]=R • ارسال REQUEST (i, sn)به همه سايتهاي Sj كه SVi[j]=R است. sn = SNi[i] با رسيدن REQUEST، اگر SNj[i] ≥ sn است درخواست دور ريخته ميشود (كهنه) و در غير اين صورت SNj[i]=sn و بر حسب حالت فعلي مقاديري را مينويسد: • اگر N است، SVj[i]=R • اگر R است، اگر SVj[i] R است پس SVj[i]=R و ارسالREQUEST (j,SNj[j]) به Si. در غير اين صورت: • اگر E است SVj[i]=R • اگرH است SVj[j]=N , TSN[i]=sn , TSV[i]=R , SVj[i]=R و ارسال مهره به سايت Si.
الگوريتم سینگهال-ادامه 33 اجراي CS:با رسيدن مهره، قبل از اجراي CS مقداردهي SVi[i]=E خروج از CS: TSV [i]=N , SVi[i]=N بروزرساني آرايه هاي محلي و مهره به ترتيب زير: for all Sj , j=1.. N if SN[j]>TSN[j] then { TSV[j]:= SVi[j]; TSN[j]:=SNi[j] } else { SVi[j]:= TSV[j]; SNi[j]:=TSN[j] } اگر پسSVi[i]= H، در غير اين صورت مهره را به سايت Sj بفرست كه SVi[j]=R است
الگوريتم سینگهال-ادامه 34 براي ورود به ناحيهي بحراني، درخواست به همه سايتهايي ارسال ميشود كه متقاضي ورود به CS هستند. هر سايت اطلاعات خود را بر اساس اطلاعات مهره ودرخواستهاي رسيده از ديگر سايتها تنظيم مي کند. SVi[j]=R وقتي است كه درخواستي از Sj برسد و يا مهرهاي با اطلاعات جديدتر برسد كه در آن TSV[j]=R باشد. كارايي: براي ورود به CS نيازي به محاوره با كليه سايتها نيست. ميانگين ترافيك پيغامي N/2 است. تأخير همگامي: T
الگوريتم درخت مبناي ريموند 35 سايتها يك درخت منطقي جهتدار ميسازند كه جهت لبهها به سمت ريشه است. ريشه نودي است كه مهره را در اختيار دارد. هر سايت يك متغير holder دارد كه به همسايه بلافصل به سمت ريشه اشاره ميكند. در ريشه holder به خودش مقداردهي ميشود. هر سايت يک صف FIFO دارد، request-q درخواستهای معوق همسايهها را ذخيره میکند.
الگوريتم درخت مبناي ريموند-درخواست CS 37 • متقاضي، با فرض نداشتن مهره و خالي بودن request-q، درخواست را به نود بالاتر در مسير ريشه ميفرستد. سپس درخواست را در صف خود ميگذارد. صف ناخالي به معناي ارسال يك درخواست به نود بالاتر است. • با دريافت درخواست، درخواست در صف و ارسال به نود سطح بالاتر، مشروط بر اينكه قبلاً درخواستي را به نود بالاتر نفرستاده باشد. • وقتي ريشه درخواست را دريافت كرد، مهره را تقديم ميكند و holder را به آن سايت مقداردهي ميكند. • وقتي سايتي مهره را دريافت كرد، درخواست سر صف را حذف ميكند و مهره را به آن سايت ميفرستد و holder را به آن سايت مقدار ميدهد. اگر request-q غير خالي است درخواستي را به سايتي كه holder اشاره ميكند بفرست.
الگوريتم درخت مبناي ريموند 38 اجراي CS وقتي سايتي مهره را دريافت كند و خود سر صف خودش باشد، سر صف را حذف و وارد CS ميشود. خروج از CS اگر request-q غير خالي است، سر صف را حذف كن و مهره را به آن سايت بفرست و holder را به آن سايت مقدار بده. اگر request-q باز هم غير خالي است، يك پيغام درخواست به محتواي holder ميفرستد.
الگوريتم درخت مبناي ريموند 39 • قضيه: در الگوريتم ريموند، يك متقاضي CS در زمان متناهي موفق ميشود. • اثبات: در واقعيت: • هر سايت درخواستها را به ترتيب FIFO پردازش ميكند. • هر سايت مسيري دارد كه منجر به سايت داراي مهره ميشود. • وقتي Si درخواستي دارد زنجيري از درخواستها تا Sh (دارنده مهره) ايجاد ميشود مثلاً زنجير • وقتي Shدرخواست را از Sik ميگيرد مهره را به او برمي گرداند.
الگوريتم درخت مبناي ريموند 40 • دو حالت دارد: • درخواست Sik-1 در ابتداي صف Sik است. در نتيجه Sik مهره را به Sik-1 ميفرستد. • نيست: Sik مهره را به سايت ابتداي صف (مثلاً Sj) ميفرستد و يك درخواست (REQUEST)هم به Sj مي فرستد. درنتيجه زنجير درخواستها به شكل در ميآيد كه Sl مجري بعدي CS خواهد بود.
الگوريتم درخت مبناي ريموند 41 توجه: همه سايتهاي موجود در زنجيره Sj , … , Sl حداكثر يك بار وارد CS ميشوند قبل از آنكه مهره به Sik برگردد و لذا Sik در زمان متناهي مهره را به Sik-1 و به همين ترتيب Sik-1 به Sik-2 و... ميفرستد. در نتيجه يك سايت متقاضي نهايتاً مهره را دريافت ميكند. كارآيي: پيغام: O(logN) تأخير همگامي: ميانگين فاصله دو سايت كه پشت سر هم وارد CS ميشوند.