500 likes | 758 Views
سيستمعامل پيشرفته محمد داورپناه جزي ترم اول 84-83 دانشكدة برق و كامپيوتر دانشگاه صنعتي اصفهان. فصل سوم: همگامي در سيستمهاي توزيع شده. در سيستم توزيع شده همة داستان ارتباطها نيستندبلكه همگامي و نحوة آن هم اهميت دارد.
E N D
سيستمعامل پيشرفته محمد داورپناه جزي ترم اول 84-83 دانشكدة برق و كامپيوتر دانشگاه صنعتي اصفهان سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم: همگامي در سيستمهاي توزيع شده • در سيستم توزيع شده همة داستان ارتباطها نيستندبلكه همگامي و نحوة آن هم اهميت دارد. • نواحي بحراني، تخصيص منابع، دو به دو ناسازگاري، ارتباط و همكاري بين پروسسها (IPC). • روشهاي مربوط به سيستم پردازنده مثل سمافور و مانيتور در سيستم توزيعي به درد نميخورد. زيرا منبع حافظه مشترك است. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • 1- همگامسازي ساعت • هدف جمعآوري اطلاعات در يك جا و تصميمگيري در مورد آنها نيست (الگوريتمها توزيعي است). • خصوصيات الگوريتمهاي توزيعي ص 119. • 1- پخش بودن اطلاعات بين ماشينها 2- تصميمگيري پروسسها برمبناي اطلاعات محلي • 3- عدم قبول حتي يك نقطة شكست 4- عدم و جود يك منبع زماني عمومي • سه تاي اول عدم قبول وجود عناصر مشترك. • سيستم توزيعي بايد قابل اعتمادتر از تك سيستم باشد-توقف يك ماشين بايد همان ماشين را متوقف كند. • پس همگامي بدون تمركز مورد نياز است! • زمان در سيستم متمركز يكي است ولي در توزيعي خير مثال Make زبان C در UNIXشكل 3-1 ص 120 سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • ساعتهاي منطقي • وجود كريستال،Clock tick, Counferreg , Holding reg . • تفاوت سرعت كريستالها در CPUها تفاوت ساعت : Clock Skew. • آنچه مهم است زمان مطلق نيست بلكه نسبت زمانها به يكديگر است • فقط پروسسهاي وابسته بايد Snyc باشند. • مهم توافق زماني بين ماشينهاست كه لازم نيست با زمان واقعي مساوي باشد ، به اين زمان منطقي گويند. • ساعت منطقي در مقابل ساعت فيزيكي سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • الگوريتم لمپورت • → ba يعني a قيل از b اتفاق افتاده (در يك پروسس يا ارسال و دريافت بين دو پروسس)ص 122 • y, x را همزمان گويند اگر x y و y x اشد يعني دو حالت بالا را نداشته باشيم. • a قبل از b عمل واگيري است. • نياز به تابع زمان C(x) داريم كه پس همه پروسسهاC(b)<C(a)→ ba. • زمان هميشه افزايشي است و اصلاح آنهم افزايشي است نه كاهشي. • شكل 2-3 ص 123a: پيغام D, C مشكل كلي دارد، بقيه در محاسبة زمان ارسال مشكل دارند. • شكل 2-3 ص 123b: مشكل را با الگوريتم لمپورت حل كرده. افزودن ساعت اگر C(a)<C(b) به اندازه C(a)+1. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • براي زمانهاي مساوي، شماره پروسس به راست مان اضافه شود. • با شرايط زير ميتوان تخصيص زمان در سيستم توزيعي دارد: • a→b در يك پروسس پس C(a)<C(b). • A ارسال و b دريافت يك پيغام است پس C(a)<C(b). • براي تمام رويدادهاي a, b داريم C(a)C(b). • امكان ترتيب زماني فراهم شد. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • زمانفيزيكي • زمانهاي لمپورت با زمان واقعي تطبيق ندارد و در سيستمهاي بلادرنگ اشكال دارد. • دو مشكل: تطبيق همه ساعتها با ساعت حقيقي، تطبيق همه ساعتها با يكديگر. • مفهوم transit of the sun (ظهر) روز خورشيدي (فاصلة دو ظهر در نجوم) شكل 3-3 ص 125. • 300 ميليون سال پيش سال اندازه 400 روز بوده! البته حالا 365 روز طولانيتر شده. • احتساب تعداد روز بيشتر و محاسبة متوسط ثانية خورشيدي. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • ساعت اتمي: حاوي سزيم 133: 770/631/192/9 ترانزيشن، در 50 آز وجود دارد. • BIH زمانها را ميگيرد و سپس متوسط گيري ميكند و ساعت اتمي بين المللي TAI را ميدهد 0تعداد تيك از 1/1/1958. فيزيكدانها رئيس شدند! • يك روز اتمي 3µSec كوتاهتر از متوسط روز خورشيدي است، ايجاد مشكل در طول زمان. • در سال 1582 پاپگريگوري سيزدهم ده روز از تقويم حذف كرد. دعوا شد. • شكل 4-3 نحوة همگامي TAI و زمان خورشيدي و معرفي UTC بجاي GMT. • تا كنون 30 تا ثانيه كبيسه داشتهايم، زمان وجود 800 ميلي ثانيه اختلاف بين UTC و GMT . • چند راديو و ماهوارهها UTC را اعلام ميكنند ولي زمان انتقال پيام را هم بايد در نظر گرفت. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • نياز به احتساب اين موارد در سيستم عامل، الگوريتم همگامسازي ساعت • اگر يك ماشين WWV (گيرندة UTC) داشته باشد بقيه ميتوانند همگامش شوند. • اگر نه نياز به الگوريتم همگامسازي هرچه دقيقتر داريم. فرض H وقفه در ثانيه و ساعت C • در زمان t روي ماشين p زمان Cp(t) است ايدهآل: Cp(t)=t p, t. يا dC/dt = 1 • در عمل دقيقآ H وقفه در تايمرها نداريم در نتيجه با دقت 5-10داريم 216002-215998 بجاي 216000=3600×60 • Rate 1-p <= dC/dt<= 1+p p = Maximum Driftحد مجاز، شكل 5-3 ص 128 • دو ماشين با Drift مخالف پس از t داراي 2Pt اختلاف. اختلاف كمتر از همگامي هر /2p سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • الگوريتم كريستين • سنكرونيزه كردن بقيه ماشينها با يك ماشين كه WWV دارد (Time Server). • هر /2p پيغام به TS دريافت زمان هر چه سريعتر(CUTC) ش 6-3 ص 129 • مشكل اصل ساعت فرستنده عقب است و محلي CUTC<C و كار خراب ميشود. • بجاي اصلاح يكجا افزايش كمتر در هر وقفه (100 تا در ثانيه) بجاي 10ms مثلا 9ms يا 11ms • مشكل فرعي زمان ارسال پاسخ است، افزودن يك تقريب به زمان ارسالي ش 6-3 ص 129. • اگر مدت سرويس وقفه (I) را بدانيم تقريب (T1-T0-I) زمان طي يك طرف • راه ديگر تحليل تعدادي ارسال و دريافت، حذف مقادير عجيب و معدلگيري بقيه، تعيين مينيمم بعنوان زمان واقعي. • مسائل ديگر چون مسيرهاي مختلف ارسال و دريافت، بار شبكه، ... سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • الگوريتم بركلي • براي حالتي كه WWV نداريم، يك ماشين Time Deamon ساعتش دستي ست شود. • بقيه ماشينها را Poll كند، دستور تنظيم به عقب يا جلو بدهد شكل 7-3 ص 130. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • الگوريتم معدلگيري • الگوريتمهاي بالا عنصر متمركز دارد. الگوريتم با حالت غيرمتمركز هم وجود دارد. • تقسيم زمان به فواصل T0+iR, T0+(i+1)R. • Broad Cast زمان در شروع هر فاصله از هر ماشين (همه در يك لحظه نيست). • ساده ترين روش، جمعآوري زمانها در هر ماشين و معدلگيري از همه • روش دقيقتر، حذف تعدادي از بزرگترين و كوچكترينها (ذباله) و معدلگيري بقيه. • افزودن زمان انتقال هم الگوريتم را دقيقتر ميكند. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • داشتن چند منبع زماني خارجي (از WWV، GEOS، …..). • با توجه به شرايط شبكه بايد براي UTC فاصله زماني تعريف كرد بجاي زمان مطلق. • زمانهاي دريافتي بايد معدلگيري شود. هيچ پردازندهاي پاسخ را فوري نميگيرد. • ماشينها فاصلة زماني خود را Broad Cast كنند در شروع هر دقيقه. • زمان دريافت هم بين منبع و پروسسورهاي مختلف فرق ميكند همينطور شرايط شبكه. • تصادف Packetها روي شبكه هم تأخير ايجاد ميكند. • پروسسور هم ميتواند مشغول كاري باشد و براي مدتي نتيجه را نگاه نكند (در فصل 10 بحث ميشود). سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • بكارگيري ساعتهاي همگام • پيدايش مكانيزمهاي همگامسازي ساعتها روي شبكه در سالهاي اخير. • الگوريتم حداكثر يكبار تحويل پيام. • روش سنتي: شمارهگذاري پيامها و ذخيره شمارهها براي تشخيص پيام تكراري از پيام اصلي. • مشكل: با قطع برق اطلاعات پاك ميشوند و چقدر وقت بايد آنرا نگهداشت. • روش بهتر: هر پيغام يك مهر زماني و شماره مسير و حفظ ديرترين مهر براي هر مسير • پيامها با زمان كوچكتر صرف نظر ميشود. چون تكرارياند. • حداكثر تفاوت ساعت – حداكثر عمر پيغام – زمان جاري=G سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • كليه پيغامهاي قبل از زمان G به راحتي حذف ميشوند. • پيغامهاي با شماره مسير نامشخص هم به همين ترتيب عمل ميشود. • بعداز هر دلتا t زمان جاري G روي ديسك ثبت ميشود. • بعداز هر Crash و سپس Reboot، G از روي ديسك خوانده شود و دلتا t زمان توقف به آن اضافه ميشود. • باز هم پيغامهاي كهنهتر از G بعنوان تكراري حذف ميشوند. • ممكن است بعضي پيامهاي جديد هم حذف شوند ولي سياست At Most Once است. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • تطبيق Cache Consistency برمبناي ساعت • در سيستم فايل توزيعي عمل Caching محلي براي تسريع استفاده ميشود. • در انجام دو تغيير همزمان مشكل عدم تطبيق Cacheها پيش ميآيد. • يك راه تميز دادن Cache براي خواندن و براي نوشتن است. • مسئله و قتي است كه نوشتني بعد از يك خواندن انجام شود كه Cache خواندن را بايدInvalidate كرد، زمان سربار دارد ولي با روش همگامي ساعتها برطرف ميشود. • روي هر فايل Cache شده يك Lease گذاشته ميشود (مدتي كه Valid است). سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • بعداز مدت فوق Clientدرخواست تجديد ميدهد اگر هم نياز نداشت كه Cache را Timeout ميكند. • در آينده اگر نياز داشت عدم تغيير آنرا از Server ميپرسد (با مهر زماني)، اگر نكرده يك Lease جديد رويش ميگذارد. • اگر نوشتن بعداز تعدادي خواندن انجام شود Server از همه Client هاي خواننده درخواست Timeout زودرس روي Lease ها ميدهد. • اگرمثلايكيهم Crash كرده Server صبرميكندتا Timeout گردد. • براياينكهنميتوانتفاوتآهستهبودنو Crash رافهميددراينروش Lease Timeout كارراحلكرده. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • 2- دو به دو ناسازگاري • براي اطمينان از دسترسي انحصاري به دادههاي مشترك از ناحيه بحراني استفاده ميشود. • در تك پروسسوري با يك سمافور يا Monitor مشكل حل است. • حالت چند كامپيوتري يا چندپروسسوري اينجا بحث ميشود. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • يك الگوريتم متمركز • داشتن يك ماشين هماهنگكننده براي نواحي بحراني شكل 8-3 ص 134. • روش عادلانه، داراي پيادهسازي ساده و حاوي سه پيغام (Release, Grant, Req) است. • هماهنگكننده يك نقطه شكست است كه مخالف قرار ما است، شلوغي آنهم تنگنا خواهد شد. • اگر هماهنگكننده مثل حالت b شكل جوابي ندهد Client نميداند منتظر است يا Crash كرده. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • يك الگوريتم توزيع شده • مبناي كار ترتيب زماني درست بين هر جفت رويداد است مثل روش لمپورت در بخش قبلي. • هر پروسس قبل از ورود به ناحيه بحراني پيغامي حاوي نام ناحيه id خودش و زمان ورود به همه مي فرستد. • بايد روش Reliable، (با Ack) باشد، روش پيام گروهي هم ميتواند استفاده شود. • پروسس گيرنده پيام با توجه به وضعيتش يكي از كارهاي زير را انجام ميدهد (ص 136). • توي ناحيه نيست و نميخواهد وارد شود: پيغام OK برميگرداند. • توي ناحيه است جواب نميدهد و درخواست را Queue ميكند. • اگر قبلاً درخواست ورود داده ولي هنوز وارد نشده مهر زماني آنكه زودتر است برنده ميشود. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • هر پروسس درخواست كننده صبر ميكند همه OK بدهند و وارد ميشود وقتي هم خارج شد به آنها هم كه در صف هستند OK ميدهد و صف را خالي ميكند. • شكل 9-3 ص 136 حالت تصادف را نشان ميدهد. • اينجا (n-1)2 پيام داريم با n پروسسسور روشمتمركز 3 تا، اينجابدوننقطهشكست! • وليبجاييكنقطهشكست n نقطهشكستداريم (يعنيدوتابديداردنسبتبهمتمركز). • توقفهرماشينباانتظارتشخيصدادهنميشود-يكراهروش Timeout است. • مشكلديگرنيازبهارتباطگروهياستكهممكناستوجودنداشتهباشد. • مشكلبعدياينكهبجايشلوغييكپروسسهمةپروسسهاشلوغميشوند. • يكراهتضمينيكتعدادحداكثر OK بجايهمهاست. • چرااستفادهميكنيمبراياينكهنشاندهيمالگوريتمتوزيعشدهامكانپذيراست. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • الگوريتم Token Ring • شكل 10-3 ص 139 شبكه BUS شكل a پروسسها ترتيبي ندارند. • در نرمافزار حلقه منطقي داريم كه هر پروسس جاي مشخص نسبت به بقيه دارد شكل b. • هر پروسس بعدي خود را ميشناسد. • در شروع يك Token در حلقه رها ميشود به پروسس صفر داده ميشود. • هر پروسس اگر وارد ناحيه بحراني نشود Token را رد ميكند به بعدي. • هر پروسس اگر بخواهد وارد ناحيه بحراني بشود Token را نگه ميدارد تا از ناحيه خارج شود آنگاه رها ميكند. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • Starvation پيش نميآيد، حداكثر انتظار n-1 تا مدت ورود و خروج به ناحيه بحراني است. • دو تا اشكال: اولي گم شدن Token كه پيدا كردنش سخت است بدليل شرايط مختلف پروسسها معلوم نيست هر پروسس چقدر Token را نگه ميدارد. • دوم شكست يك پروسس كه بايد توسط همسايهاش Detect شده و از شبكه حذف شود البته توسط همه. • مقايسهسهالگوريتم • شكل 11-3 ص140 خلاصهمقايسهها سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • 3- الگوريتمهاي انتخاب • موضوع انتخاب يك پروسس (هماهنگ كننده، رديف كننده و ...) هميشه در سيستم توزيعي مطرح است. • هر پروسس يك شماره شناسائي دارد (يگانه) معمولاً پروسس با بزرگترين شماره ميشود هماهنگ كننده. • فرض: همة پروسسها شمارة بقيه را ميدانند. • آنچه نميدانند: كدام upاند و كدام Down. • در يك الگوريتم: طوري عمل شود كه همه روي انتخاب Coord توافق داشته باشند. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • الگوريتم بولي • وقتي پروسسي بفهمد Coord جواب نميدهد، درخواست انتخاب Coord ميدهد. • P پيغام انتخاب به همه پروسسها با شماره بالاتر از خودش ميدهد. • اگر كسي جواب ندهد P برنده ميشود و Coord ميشود. • اگر يكي با شماره بالاتر جواب بدهد او كار را بدست ميگيرد و كار P تمام ميشود. • در هر زمان هر پروسس ميتواند از پروسسهاي زير دست (با شماره كوچكتر) پيغام بگيرد. • او جواب OK ميدهد و كار تكرار ميشود تا يكي برنده نهائي شود. • آن يكي نتيجه را به همه اعلام ميكند. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • الگوريتم رينگ • هر پروسس ميداند قبلياش كيست. • پروسسي كه فهميد Coord خراب است شمارهاش را به قبلياش ميدهد. • آنها كه متوقفاند skip ميشوند. • هر پروسس شمارة خودش را به كميت اضافه ميكند. • نهايتاً پيغام به شروع كننده ميرسد. • او پروسس با لاترين نمره را بعنوان Coord اعلام ميكند. • شكل 13-2 ص 143 سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • 4- تراكنشهاي اتمي • آنچه تاكنون در مورد همگامسازي ديديم خيلي سطح پائين بود (سمافور ، نواحي بحراني، ....) • برنامهنويس سطح بالا نياز به تعاريف سطح بالا دارد. يك روش تراكنشها يا اعمال اتمي است. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • مقدمه • داستان عقد قرارداد كه قبل از امضاء ميتوان برگشت به جائي كه هيچ اتفاقي نيافتاده. • يك پروسس درخواست عملي توسط چند پروسس را اعلام ميكند و منتظر ميماند با هم چونه بزنند. • بعد شروعكننده درخواست ختم عمليات (Commit) ميدهد اگر هم جواب OK بدهند. اينكار انجام ميشود اگر نه (يكي جواب ندهد يا OK ندهد) همه برميگردند به حالت قبل از OK و كليه كارها پاك ميشود Roll Back)). • در DBMS به اين استراتژي All or Nothing گويند كه كار برنامهنويسان را راحت كرد. • سيستم نوارهاي قديم حالت All or Nothing داشتند. • در سيستمهاي مدرن مثال انتقال پول 1- برداشت 2- واريز (انجام هر دو در يك تراكنش (اتمي)). • اگر اولي شد دومي نشد بتون برگشت به قبل از 1. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • مدل تراكنش: سيستم= مجموعهاي از عملهاي مستقل كه هر كدام امكان شكست دارند. • ردههاي حافظه: حافظه RAM، پاك شدن با قطع برق، ديسك،خطر crash، • حافظه پايا، فقط خطر سيل و زلزله، ش 15-3 ص 146 حالت b خرابي از a كپي ميشود. • خرابي يك بلوك در اثر گرد و خاك حالت C، بلوك از كپي درست اصلاح ميشود. • محيط مناسب براي محيط متحمل خرابي. • اجزايي اوليه تراكنش: BT، ET، مرزها براي سياست همه يا هيچ، AT، RD، WRT ص 147. • نوع دستورات اوليه بهنوعكاربردبستگيداردمثال Send و Receive درسيستم Mail. • مثالرزروبليطاز WP به JFIC به NRB به MLD شكل 16-3 ص 148. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • خصوصيتهاي تراكنش ص 148: اتمي، سازگار، ايزوله، پايا (ACID). • هر تراكنشي اتمي است (All/Nothing) و در طول اجرا نتايج مياني آن قابل رويت نيست. • يك فايل 100 بايتي، در طول Append 1000 بايت به آن كماكان 100 بايت است و در يك لحظه CMT 1100 بايت ميشود. بدون توجه به اينكه چقدر زمان و چقدر كاربرده تا 1000 بايت اضافه شود. • مثال ديگر كپي كردن كه اگر جا نباشد نصفة كپي شده هم پاك ميشود. در Dos اينطور نبود. • سازگاري: هر عمل بانكي موازنه حسابها را به هم نميزند مگر در لحظات انجام تراكنش كه قابل رويت نيست. مثال سيستم فايل و عمليات آن سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • ايزوله بودن (ترتيبپذير): اعمال همزمان را با ترتيب خاصي بتوان انجام داد با همان نتايج • امكان انجام شش ترتيب • مثال شكل 17-3 ص 149 كه برنامه 3 ترتيب پذير نيست. • مسئوليت ترتيبپذيري با خود سيستم است. • پايا بودن: بعد از Commit نتايج هميشگي گردد. • عدم تاثير شكستهاي بعدي روي نتايج سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • تراكنشهاي تو در تو • تراكنشها ميتوانند فرزند ايجاد كنند (Fork) و آنها هم بنوبه خود. • يك فرزند Commit كند ولي پدر Roll Back كند، نتايج CMT بايد پاك شود (undo). • پس اصول بالا نقض ميشود، اين اصول بايد براي تراكنش پدر صدق كند. • نياز به مديريت خيلي پيچيده • هر پدر يك كپي خصوصي دارد، به هر فرزند هم يك كپي ميدهد تا روي آن عمل كند • درصورد CMT جايگزين كپي پدر، در صورت RLBK ناپديد • فرزند بعدي نتايج قبلي را ميبيند. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • پيادهسازي • انجام موارد ACID نياز به مديريت بسيار دقيق دارد. • روش فضاي كاري خصوصي: انجام همة اعمال روي كپي خصوصي و جايگزيني در لحظه CMT. • اشكال: هزينه كپيسازي همه Objectهاي مورد نياز. • بهينهسازي: • ايجاد اشارهگر به WS پدر، براي بالاترين سطح ا يجاد اشارهگر به نسخه اصلي براي خواندن و ايجاد يك كپي جديد براي عمل نوشتن. اشارهگرهاي تو در تو • كپي كردن ايندكس و ركوردهاي اصلاح شده (فقط) شكل 18-3 ص 151. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • روش Write ahead Log (ليست قصدها) • اول يك Log كامل درست ميشود بعد تغيير روي كپي اصلي اعمال ميشود شكل 19-3 ص2 15. • اگر خواستيم برگرديم مقادير قديمي را از Log جايگزين ميكنيم Roll Back. • وقوع شكست قبل از آخرين جمله و بعد از نوشتن Log آن قبل يا بعد از اعمال نهايي • امكان رفتن به جلو و همچنين عقب بر مبناي log سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • روش تاييد دو فاري TWO Phase Commit يا CMT اتمي در سيستم توزيعي • عمل CMT لحظهاي است، در سيستم توزيع شده عملها توسط چند ماشين انجام ميگيرد و نياز به هماهنگي دارد. • يك پروسس نقش هماهنگكننده دارد، قبل از شروع درخواست CMT يك Log مينويسد. • بعد يك پيغام ”آمادهشو براي CMT“ براي بقيه همكاران ميفرستد. • هر همكاري Log خود را مينويسد و پاسخ OK يا Not OK ميدهد يا Timeout ميشود. • اگر همه OK دادند CMT و گر نه RLBK ميشود در Log هم نوشته ميشود. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • شكل 20-3 ص 153. • با وجود log و حافظة پايا، مقاوم در مقابل Crash، • در شكست هماهنگ كننده بعد از نوشتن Log اوليه، پس از زنده شدن كار را دنبال ميكند. • بعد از نوشتن نتيجه رأي Crash كند، بعد از up شدن نتيجه را به بقيه ميگويد. • اگر يكي از ديگران جواب ندهد ارسال تكرار ميشود يا Timeout شود. • اگر بعد از دادن جواب سقوط كند از همانجا بعد ادامه ميدهد. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • مكانيزمهاي كنترل همزماني (الگوريتمها): مواظبت از سر راه هم قرار گرفتن پروسسها . • قفلكردن:قديميترينوپراستفادهترينمكانيزمبااستفادهازمديرقفلمركزييامحلي. • مديرقفلباتوجهبهليستخود، درخواستهايجديدبرايفايلهايقفلشدهراردميكند. • قفلكردنوبازكردنتوسطسيستمتراكنشانجامميشودبدوندخالت User. • جداسازيقفلخواندن (Share) ازقفلنوشتن (exclusive). • محدودةموردقفل: فيلد،ركورد، فايل،جدول، DB، صفحه / بلوكسختافزاري (مسائلمربوط). • فرضما: قفلرويفايل (كهخوبنيست) Locking Granularity. • دانهبنديريزتر= توازيبيشتر= محدودهقفلكوچكتر= گرانتر= تعدادقفلبيشتر= Dead Lock بيشتر. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • قفلدوفازيشكل 21-3 برايجلوگيريازDead Lock. • بهنگامسازي اصلي در مرحله تقليل قفل، اگر قفلي سر راه بود، آزادسازي صبر و تكرار عمل • ثابت شده TPL ترتيبپذيري را تضمين ميكند. • در TPL قطعيفازتقليلبعداز CMT يا RLBK انجامميشود. • دومزيت: 1) همةفايلهابعداز CMT يا RLBK شدنعملهايقبلي،استفادهميشوند. • 2)اخذوآزاديقفلهاتوسطسيستمبدوندرگيريتراكنشانجامميشود. • تراكنشهايبههمگيرنميكنندو Cascade Abort پيشنميآيدبدليلاستفادهازاطلاعاتيكهنبايدديدهشود. • امكانبروز Dead Lock حتيدر TPL ، نياز دو پروسس به دو قفل ضربدري. • مكانيزمهايپيشگيريكهقبلاًگفتهشدهومكانيزمزماني (قفلبيشاز T ثانيه= Dead Lock). سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • كنترل همزماني خوشبينانه • برو جلو هر كاري ميخواهي بكن بيخيال بقيه، اگر مشكلي بود بعداً فكرش را ميكنيم. • فرمان CMT چك ميشود اگر فايلي در طول كار عوض شده RLBK شده و كار تكرار ميشود. • براي فضاي كاري محلي خصوصي مناسب است. • توازي بسيار بالا، فرغ از Dead Lock، بدون انتظار براي قفل. • عيب: تكرار كل كار، كندشدن در شرايط بار كاري شديد. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • مهر زماني • هر تراكنش در لحظه BT يك مهر زماني ميگيرد (الگوريتم لمپورت براي همگامي استفاده ميشود). • هر فايل دو مهر خواندن و نوشتن مربوط به آخرين تراكنش بكار برنده آن دارد. • در شرايط عادي هر دسترسي بعداز مهر زماني فايل است. • شكل 22-3 ص 157. • در مقايسه با قفل داراي D.L. نيست كه اين مزيت اصلي است. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • 5- بنبست در سيستمهاي توزيعي • D.L. در سيستم توزيعي به مراتب پيچيدهتر است بدليل پراكنده بودن اطلاعات مربوطه بين ماشينها. • بنبست ارتباطي: پيغامها به هم گير كردهاند و بافر خالي هم نيست. • A B Cدر اينجا هر دو • را يكي ميگيريم. • بنبست منبعي: رقابت در گرفتن منابع بصورت انحصاري. • احتمال بروز بنبست ارتباطي خيلي خيلي ضعيف است. پيام 1 پيام 2 پيام 3 سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • استراتژيهاي مهم (يادآوري DS1). • الگوريتم شترمرغ: فراموش كردن مسئله. • كشف: صبر كنم بنبست شود، كشف كنيم، ترميم كنيم. • جلوگيري از وقوع: اكيداً پيش نيايد. • سعي در اجتناب: تخصيص با دقت لازم در جهت اجتناب از بنبست. • مورد 4 در سيستم متمركز هم استفاده نميشود چه رسد به توزيع شده چون خيلي مشكل است 302 بحث ميشود. • بخصوص مورد 2 از همه آسانتر است كه بعداز وقوع به فكر چاره باشيم. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • كشف بنبست توزيع شده • بنبست كشف شده نياز به يك قرباني براي حل دارد كه User را ناراضي ميكند. • با تراكنش اتمي ميتوان كار قرباني شده را تكرار كرد با آرزوي موفقيت در دور دوم! سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • كشف بنبست متمركز • يك پروسس هماهنگكننده همة گرافهاي بقيه ماشينها را Union ميكند. • با كشف يك سيكل پروسس را Kill ميكند. • هر ماشين بايد اطلاعات مورد نياز را به پروسس هماهنگكننده ارسال كند. • حذف يا اضافه شدن هر arc ارسال شود، دورهاي arcهاي اضافه يا حذف شده ارسال شود. • هماهنگكننده خودش هر وقت لازم بود درخواست اطلاعات كند. • هر سه روش اشكال دارد. شكل 23-3 ص 160. • بوجود آمدن بن بست نادرست بدليل عدم دريافت بموقع پيامها سه روش سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • پيام آزادسازي R بوسيله B بعد از پيام نياز B به T به هماهنگكننده ميرسد گر چه زودتر ارسال شده. • هماهنگكننده قبل از ايجاد حلقه به همه اعلام كند پيامي دادند بفرستند و بعد آنها را اعمال كند قبل از ايجاد حلقه. • اين روش خوب است ولي گران است. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • الگوريتم ديگر كشف بنبست توزيعي • پروسسها مجازند درخواست منابع چند گانه از جمله قفل كنند. • فاز ترفيع قفل در 2PL سريعتر ميشود. • پروسس بجاي چند بار انتظار براي چند منبع يكبار براي همه منتظر ميماند. • شكل 24-3: اشكال اصلي در منابع بين ماشيني است. • بردار (گيرنده، ارسال كننده، پروسس بلكه شده) در اثر احضار الگوريتم (چندي ........) ارسال ميگردد. • وقتي دوباره به اوليه ارسال كننده رسيد D.L. كشف ميشود مثال: بردار (0,8,0) آخر كار. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • راه اول: امر به خودكشي پروسسها به آخر پيام و انتخاب پروسس با شماره بزرگترين براي خودكشي. • توري و عمل هماهنگ نيستند: چگونه پروسس بلوكه شده پيغام بفرستد! • الگوريتمهاي زيادي ارائه و منتشر شده ولي بزودي ديگري غلط بودنش را اثبات كرده. • اين زمنيهاي است كه هنوز جاي كار زياد دارد. سيستمعامل پيشرفته محمد داورپناه جزي
فصل سوم : همگامي در سيستمهاي توزيع شده (ادامه) • ممانعت از بنبست توزيع شده • عملكرد به نحوي كه بصورت ساختاري بينبست امكانپذير نباشد. • روشهائي در OS1 بحث شده است رك به كتاب مربوطه. • فقط پروسسي مجاز به انتظار است كه مهر زمانياش كمتر است از پروسسي كه برايش صبر ميكند. اگر نه Abort ميشود (الگوريتم Wait Die) شكل 25-3 ص 164. • فقط پروسسي مجاز به انتتظار است كه مهر زمانياش بزرگتر از پروسسي باشد كه برايش صبر ميكند. • در هر صورت دنباله صعودي و يا نزوليات كه حلقه ايجاد نميكند. • با جستجو در انتشارات در مورد قفلهاي مختلف موجود پروتكلهاي مربوطه براي قفلكردن و نحوة پيادهسازي استراتژي 2PL روي آنها حداقل دو صفحه مطلب بنويسيد. • قبل از ظهر از اطاق من بگيريد. سيستمعامل پيشرفته محمد داورپناه جزي