همگامسازی ساعت
توضیحات
در جلسه بیست و هشتم درس سیستمعامل پیشرفته دکتر حقیقت که از مهمترین دروس تخصصی آزمون دکترای مهندسی کامپیوتر در گرایش نرمافزار و گرایش شبکه و رایانش است، فصل ششم این درس با عنوان «همگامسازی» آغاز میشود. موضوع این جلسه «همگامسازی ساعت (Clock Synchronization)» میباشد. در فصل های قبل، نگاهی به فرايندها و ارتباط بين فرايندها (Inter Process Communication)داشتيم. موضوعات همكاری (Cooperation) بين فرايندها و همگامسازی (synchronization) آنها نيز با اين مبحث، ارتباط نزديكی دارند. يكی از مهمترين مباحث در همكاری گروهی از فرايندها يا نخها و همگامسازی آنها اين است كه امور طبق روال از قبل طراحی شده پيش برود و به ترتيب از قبل چيده شده انجام شود واز هم پيشی (سبقت) نگيرند. مبحث ديگر در همگامسازی فرايندها يا نخها اين مطلب مهم است كه فرايندهای مختلف به طور همزمان به يک منبع مشترک، همانند چاپگر دستيابی نداشته باشند، اما در عوض میتوانند در جهت توافق برای دسترسی انحصاری موقت به آن منبع با يكديگر همكاری نمايند. اين مسئله انحصار متقابل (Mutual Exclusion) ناميده میشود. مثال ديگر اين است كه فرايندهای مختلف ممكن است گاهی نياز به توافق بر روی ترتيب رويدادها داشته باشند، مانند اينكه آيا فرايند P پيام m1 خود را قبل از پيام m2 فرايند Q فرستاده است يا بعد از آن؟ همانطور كه از اين مطلب نتيجه میشود، همگامسازی در سيستمهای توزيعشده اغلب در مقايسه با همگامسازی در سيستمهای تک پردازندهای يا چندپردازندهای خيلی دشوارتر میباشد. مسائل و راهكارهايی كه در اين فصل مورد بحث قرار میگيرند ماهيت نسبتاً كلی و عمومی داشته و در موقعيتهای مختلفی در سيستمهای توزيعشده كاربرد دارند. اين بحث را در همین جلسه با مسئله همگامسازی بر اساس زمان واقعی (ساعت فیزیکی) شروع كرده و بعد از آن (در جلسه بعد) به بررسی همگامسازی، درساعتهای منطقی و برداری میپردازيم كه در آنجا ترتيب نسبی رويدادها به جای ترتيب مبتنی بر زمان مطلق اهميت دارد. در جلسه بعد از آن نیز به مسئله انحصار متقابل و الگوریتمهای آن پرداخته خواهد شد. در بسياری از موارد، اين مطلب مهم است كه گروهی از فرايندها میتوانند يک فرايند را به عنوان هماهنگ كننده (coordinator) تعیین كنند. اين کار به وسیله الگوريتمهای انتخاب (راهبر یا هماهنگ كننده) انجام میشود که موضوع جلسه بعد از آن است.