Distributed Snapshot يك روش براي حل GPE اين بود كه پردازهي مبصر P 0 از ديگر پردازهها درخواست كند تا حالت محلي خود را اعلام كنند و سپس آنها را باهم ادغام كند. اين روش را Snapshot گوييم. ولي حالت سراسري اخذشده ممكن است سازگار نباشد. DISTRIBUTED SNAPSHOT براي داشتن يك حالت سراسري سازگار حاصل از پروتكل Chandy & Lamport snapshot روشي اراي ه دادند. (با فرض FIFO بودن كانالها (حمل (FIFO و حذف جزي يات چگونگي اعلام حالت محلي پردازندهها به درخواست P) 0 Advanced Operating Systems Sharif University of Technology - Distributed Snapshot ادامه پروتكلهاي :Snapshot حالت يك كانال: براي كانال بين Pو i Xرا i,j P j حالت كانال گوييم و شامل پيغامهاي ارسال شدة براي Pاست j كه هنوز توسط P j دريافت نشده است. X i,j را ميتوان از تفاضل مجموعههاي پيغامهاي ارسال شده بوسيله Pبه i P j (كه در σ i ملحوظ است) و مجموعهي پيغامهاي دريافت شده Pاز j P (كه i در σ j ملحوظ است) بدست آورد. P i 4 اولين پروتكل: فرض كه همه پردازهها حالت خود را در ساعت واقعي يكساني ثبت ميكنند. t ss را (به حد كافي در آينده طوري كه پيغام ارسال شده Pيك 0 زمان سپس t ss به همه پردازهها برسد) انتخاب ميكند. براي فراهم آوردن ثبت حالت قبل از كانالها يك زمان مهر در هر پيغام درج ميشود كه زمان اجراي واقعهي ارسال را مشخص ميكند. فرض كنيم كه IN i مجموعه پردازههايي است كه كانالهاي مستقيم ورودي به P i دارند و OUT i مجموعه پردازههايي است كه P i به آنها كانال خروجي مستقيم دارد. براي هر اجرا پرتكل Pحالت i Snapshot محلي خود و حالت همه كانالهاي ورودياش را ثبت ميكند. ) j,i X براي هر (P j IN i
الگوريتم ادامه الگوريتم 5 P 0 پيغام ss Take snapshot at t را به همه پردازهها ميفرستد..١ 6 P j قبل از t ss و رسيده لذا X j,i مشخص كننده مجموعه پيغامهاي ارسال شده بوسيله به P i (بعد از ( t ss است. وقتي ساعت RC به t ss رسيد هر پردازهي P i حالت محلي خود ) i σ) را ثبت ميكند يك پيغام خالي روي هم كانالهاي خروجياش ميفرستد و شروع به ثبت پيغامهاي رسيده روي هر يك از كانالهاي ورودياش مينمايد. اولين باري كه P i پيغامي را از Pدريافت j كرد كه زمان مهري بزرگتر يا مساوي t ss دارد ثبت پيغامهاي ورودي از آن كانال خاتمه مييابد..٢.٣ ارسال "پيغام خالي" براي تضمين Liveness است: پردازهي P i تضمين ميشود كه نهايتا يك پيغام m را از هر كانال ورودي اش دريافت كند طوري كه TS(m) t ss (يعني شرط اختتام الگوريتم!) چرا حالت سراسري ساخته شده سازگار است يك واقعه e در برش سازگار C ss (همراه و متناظر با حالت سراسري بنا شده) است اگگر RC(e) < t ss (e C ss ) (RC(e ) < RC(e)) (e C ss ) يعني C ss يك برش سازگار است چرا كه RC (ساعت واقعي) شرط ساعت را برآورده ميكند. پروتكل دوم Snapshot الگوريتم ادامه 7 Pپيغام 0 ω Take را snapshot at به همه پردازهها ارسال ميكند و سپس مقدار ساعت منطقياش را به ω مقدار ميدهد. وقتي P i مقدار ساعت منطقياش به ω رسيد حالت محلي σ i را ثبت ميكند پيغام خالي راروي همه كانالهاي خروجي ميفرستد و شروع به ثبت پيغامهاي وارده از روي كانالهاي ورودي ميكند. ثبت حالت محلي و ارسال پيغام خالي قبل از وقوع ديگر وقايع انجام ميشود. با رسيدن يك پيغام به P i از P j با زمان مهري Pثبت i ω پيغامهاي وارده را متوقف و χ j,i را به عنوان پيغامهاي ثبت شده تلقي ميكند. توجه: پيغام خالي به همه ميرسد و لذا همه ω را لمس ميكنند و به عنوان مقدار ساعت منطقي خود قلمداد ميكنند. حال نياز به ω را حذف ميكنيم. توجه: بين دريافت پيغام گرفتن Snapshot و پيغام خالي كاري انجام نميشود. بنابراين ميتوان گفت كه با رسيدن پيغام خالي هر پردازه حالت محلي خود را ثبت كند! حال آيا ميتوان ساعت منطقي را جايگزين ساعت واقعي كرد. (در پروتكل بالا) ١. اينكه وقتي S LC = t do معني ندارد. وقتي كه t از يك ساعت منطقي بدست آمده است. درS اعمال داخلي Send (پرش مقدار ساعت با دريافت پيغام باعث مي شود كه مقدار LC اصلا مقاديري را نپذيرد). از طرفي واقعهاي كه باعث افزايش ساعت شده قبل از مقايسه بالا انجام شده است. براي رفع اين مشكل فرض ميكنيم كه S (در عبارت بالا) تنها شامل وقايع داخلي و ارسال باشد و قبل از اجراي هر واقعه Pآزمون i زير را انجام دهد. اگر e يك واقعه داخلي يا ارسال است و -t LC = سپس e P i را اجرا و اجراي S را شروع ميكند. اگر receive(m) e = است كه TS(m) t و t-1 LC < سپس P i پيغام را به كانال بر ميگرداند e را براي اجراي مجدد فعال ميكند 1-t LC = و اجراي S را شروع ميكند. ٢. انتخاب t ss در يك سيستم آسنكرون (با وجود ساعت منطقي) غيرقابل محاسبه است. درعوض فرض ميكنيم كه عدد صحيح ω به اندازة كافي بزرگ است كه هيچ ساعت منطقي نتواند به آن برسد (با قواعد بروز آوري ساعت منطقي). 8.١.٢.٣
پروتكل سوم (Chandy & Lamport) Snapshot خواص Snapshots 9 10 پردازهي P 0 با ارسال پيغام snapshot Take به خودش پروتكل را شروع ميكند. اگر P f پردازهاي باشد كه P i از آن پيغام snapshot Take را دريافت كرده است (براي اولين σ i را ثبت كرده و پيغام را به همهي كانالهاي خروجياش بار) با رسيدن پيغام حالت محلي خود χ f,i خالي رله ميكند. (هيچ واقعهي ديگري در اين بين پردازش نميشود). سپس حالت كانال P i شروع به ثبت پيغامهاي ورودي ميكند. شده و اگر P s پردازهاي باشد كه P i پيغام snapshot Take را از آن گرفته است (براي بار χ s,i را P s متوقف ميكند و Pثبت i پيغامهاي ورودي را در كانال ورودياش از چندم( 1 > ((n به عنوان حالت كانال مربوطه قلمداد ميكند. P i اين پيغام را از پيغام snapshot Take حداقل يك بار روي هر كانال رد ميشود. وقتي همه كانالهاي ورودي بگيرد مشاركتش در گرفتن حالت سراسري تمام است..١.٢.٣ P 0 P 1 P به محاسبه شكل قبلي و كاربرد الگوريتم Chandy&Lamport روي آن بنگريد: 1 1 4.χ است با Σ حالت سراسري ايجاد شده = 1, χ و {m} =,1 4 5 6 5 خطوط... معرف پيغامهاي مربوط به گرفتن Snapshot و خطوط مربوط به محاسبات زيرين است. خواص - Snapshots ادامه خواص Snapshots ادامه 11 اگر فرض كنيم كه اجراي انجام شده در حين اجراي پروتكل عبارت باشد از r = 1 1 e 1 e 4 1 e e 4 e 5 1 e 5 e 6 1 يا برحسب حالات سراسري r = Σ 00 Σ 01 Σ 11 Σ 1 Σ 1 Σ Σ 4 Σ 4 Σ 44 Σ 54 Σ 55 Σ 65 و فرض كنيد حالتي از اين اجرا كه مصادف با آغاز پروتكل است Σو 1 حالتي كه در آن پروتكل تمام ميشود Σ 55 باشد. با استفاده از شكل شبكهاي ميتوان ديد كه Σ 1 Σ Σ 55 ميتوان نشان داد كه اين رابطه به طوركلي برقرار است. 1 فرض كنيم Σ a حالت سراسري شروع پروتكل Σ f حالت سراسري اختتام پروتكل و Σ S حالت سراسري ايجاد شده باشد: نشان ميدهيم كه اجراي R وجود دارد كه در آن Σ a R Σ S R Σ f e فرض كنيم r اجراي واقعي سيستم در حين اجراي پروتكل باشد و i واقعهي دريافت snapshot" "Take (براي اولين بار) توسط P i باشد و e i e و در باعث ثبت حالت P i شود. واقعهي eرا i پيشثبت گوييم اگر i غيراينصورت آنرا پسثبت گوييم (واقعهي پسثبت).
خواص - Snapshots ادامه خواص - Snapshots ادامه 1 همان > e, e >را درنظر بگيريد كه در اجراي eيك r واقعهي پسثبت و e يك واقعهي پيشثبت باشد. اگر e e پس جاي e و e نميتواند عوض شود مگر اينكه يك اجراي ناسازگار حاصل شود. فرض كنيد e e: دو حالت وجود دارد: هر دو واقعهي همسايه > e,e> در r را درنظر بگيريد كه e يك واقعه e يك واقعهي پيشثبت باشد. e>) نشان 14, e <, يا > >) پسثبت و داده ميشود كه ) e e) و لذا ترتيب اين دو ميتواند عوض شود و در عين حال اجراي حاصل يك اجراي سازگار باشد. اگر جايگزيني (تعويض) زوج وقايع <پيش ثبت, پس ثبت> را ادامه دهيم در اين صورت به اجرايي ميرسيم كه هيچ واقعهي پيشثبتي بعد از هيچ واقعهي پسثبتي در اجرا قرار نگيرد. حالت سراسري متناظر با آخرين واقعهي پيشثبت از Σ a قابل دسترس و حالت Σ f قابل دسترس از آن است. نشان ميدهيم كه اين حالت سراسري (متناظر با آخرين واقعهي پيشثبت) همان Σ S است. 14 eو e از يك پردازه هستند سپس e حتما يك واقعهي پسثبت خواهد بود. P j باشد. ولي e i واقعهي دريافت متناظر در P تا زمان اجراي e پيغام e واقعه ارسال از پردازهي P i و snapshot" "Take را به P j فرستاده است و چون كانال FIFO است e هم يك واقعه پسثبت خواهد بود. بنابراين يك واقعهي پسثبت علا نميتواند قبل از (علا ) يك واقعهي پيشثبت قرار گيرد. در نتيجه هر زوج واقعهي <پيش ثبت, پس ثبت> ميتواند Swap شود. فرض كنيم R اجراي حاصل از r با جايگزيني (جابجاي ي) همه چنين زوج وقايعي باشد تا آنكه همهي وقايع پسثبت بعد از وقايع پيشثبت قرار گيرند. سپس حالت سراسري پس از اجراي آخرين واقعهي پيشثبت در R همان Σ S است. خواص - Snapshots ادامه خواصPredicates Global 15 باتوجه به تعريف پروتكل و پيشثبتي وقايع پسثبتي كه حالات محلي را ثبت ميكنند حالت محلي را در نقطه e ثبت ميكنند. به علاوه حالت كانال كه ثبت ميشود شامل پيغامهايي هستند كه بوسيله وقايع پيشثبت ارسال و بوسيله وقايع پسثبت دريافت شدهاند. اين پيغامها همانها هستند كه پس از اجراي واقعهي e در كانالها هستند و لذا Σحالت S ثبت شده بوسيله پروتكل Snapshot است. 16 دو روش براي ارزيابي :GP يك مبصر فعالانه Snapshot بنا كند. يك مبصر منفعلانه اجراها را نظارت كند. استفاده از هريك از اين دو روش براي حل مساي ل عملي DSs تا حدودي بستگي به خواص Predicateيي دارد كه ميخواهد ارزيابي شود.
گزاره هاي پايدار - ادامه گزاره هاي پايدار Predicates) (Stable 17 خيلي از ويژگيهاي سيستم مشخصاتي دارند كه يكبار كه درست باشند درست ميمانند. اين ويژگيها و گزارههايشان را پايدار ناميم. مثالهايي از اين ويژگيها عبارتند از: Deadlock Termination Loss of all tokens Un-reachability of storage 18 Σ S حالت سراسري ساخته شده باشد. فرض كنيد Σ f Σ a (مثل قبل) و Σ a اگر Φ پايدار باشد عبارات زير (نتايج زير) Σ S چون Σ f ممكن هستند: (φ is true in Σ S ) (φ is true in Σ f ) (φ is false in Σ S ) (φ is false in Σ a ) اگر Φ پايدار باشد سپس پردازهي مبصر ميتواند دانش خود را دربارهي وقتي كه Φ برقرار شده است قويتر كند (قوت ببخشد). گزاره هاي ناپايدار - مثال گزاره هاي ناپايدار 19 0 همهي گزارههايي كه ميخواهيم تشخيص دهيم پايدار نيستند. مثلا كنترل طول دو صف و اعلام خطر وقتي كه مجموع طول از يك سقف تجاوز كرد. با تغيير طول صفها اين گزاره مرتب عوض ميشود. تشخيص چنين گزارههايي دو مسي له جدي را به دنبال دارد: ١. شرط لحاظ شده در Predicate ممكن است در طول ارزيابياش ماندگار نباشد. در مثال شكل زير x و y بوسيله P 1 و P نگهداري ميشوند و گزاره ما (x=y) است. 7 (هفت) حالت سراسري وجود دارد كه x=y در آن برقرار است ولي پس از حالت Σ 54 برقرار نيست. ٢. اگر گزاره φتوسط مبصر درست تشخيص داده شد نميتوان اطمينان داشت كه آيا φ اصلا در اجراي واقعي درست بوده است يا نه مثلا شرط (y-x=) را درنظر بگيريد. تنها حالات سراسري Σو 1 Σ 41 اين شرط را برآورده ميكنند. فرض كنيم در حالت Σ 11 از اجراي زير پروتكل Snapshot آغاز شود: Σ 00 Σ 01 Σ 11 Σ 1 Σ Σ Σ 4 Σ 4 Σ 44 Σ 45 Σ 55 Σ 65 چون Σ 1 و Σهر 41 دو قابل دسترس از Σ 11 هستند پروتكل Snapshot ميتواند آنها را بسازد. بنابراين مبصر ميتواند شرط y-x= را تشخيص دهد هر چند اجراي واقعي هيچگاه داخل حالتي نرود كه اين شرط برآورده شود. y-x = 00 10 01 11 0 1 1 0 1 1 41 4 4 5 44 6 54 45 64 55 x = y P1 P x:= 1 4 5 6 e e 4 e 5 y:=6 y:=4 y:= Initially x=0, y=0 x:=4 x:=5 (1,0) (,1) (,1) (4,1) (5,) (6,) (0,1) (0,) (0,) (4,4) (4,5) 65
گزاره هاي ناپايدار - ادامه گزاره هاي ناپايدار - ادامه 1 نكته: چه ارزشي دارد كه پروتكل Snapshot يك گزاره ناپايدار را كنترل كند چرا كه گزاره ممكن است رخ دهد ولي تشخيص داده نشود و يا برعكس (به خاطر ناپايداري) بهتر است كه گزارهها را بسط دهيم تا قابل اعمال در سطح كلي محاسبه توزيع شده باشند تا يك اجراي خاص! دو انتخاب براي تعريف گزارههايي در اين سطح وجود دارد: ١. (φ) :Possibility يك مشاهدهي سازگار O از محاسبات وجود دارد كه φ در حالت سراسري O برقرار است. ٢. (φ) :Definitely براي هر مشاهدهي سازگار O از محاسبات يك حالت سراسري از O وجود دارد كه φ در آن برقرار است. محاسبه شكل قبل هردو گزاره را برآورده مي كند. Definitely(x=y) و Possibly ((y-x)=) در φ debugging ميتواند وجود يك خطا را مشخص كند. بنابراين Possibility احتمال وجود خطا در محاسبات هرچند در يك اجراي واقعي مشاهده نشود. مثلا اگر y-x= معرف حالت خطا باشد محاسبه شكل بالا غلط است. چراكه احتمال بوجودآمدن حالت خطا وجود دارد. پايان