همروندی: ارتباط، شرایط رقابتی و همگامسازی
توضیحات
در جلسه بیست و یکم فیلم آموزشی (آموزش مجازی) سیستم عامل دکتر حقیقت ویژه کنکور کارشناسی ارشد مهندسی کامپیوتر و کنکور کارشناسی ارشد مهندسی فناوری اطلاعات و کنکور دکتری مهندسی کامپیوتر و نیز امتحانات دانشگاهی و آزمونهای استخدامی، فصل مهم چهارم سیستم عامل با عنوان «همروندی، انحصار متقابل و همگامسازی» آغاز میشود. هدف از این جلسه تعریف دقیق سه مسئله و مشکل اساسی است که در مبحث ارتباط بین فرایندها و هماهنگی و همگامسازی بین فرایندها با آن مسائل رو به رو میشویم. در ایم جلسه خواهیم دید که ارتباط بين فرايندها (IPC: InterProcess Communication)، سه جنبه مهم طراحي دارد: 1) تبادل داده بين فرايندها (Data Communication) که خود با چندين مكانيسم مختلف میتواند انجام شود: الف) حافظه مشترک ب) تبادل پيام ج) لوله (نوعی شبه فايل در UNIX) د) فايل مشترک 2) همگامسازی (Synchronization) فرايندها 3) رقابت (مسابقه) فرايندها (Race Condition). همگامسازی فرايندها به اين موضوع اشاره دارد كه هنگامی كه وابستگی وجود دارد، ترتيب درست انجام كارها اهميت پيدا میكند. در واقع همگامسازی به اين معناست كه همه مؤلفههای همكار، دقيقاً به صورت هماهنگ و بهجا و بهموقع عمل كنند و نوعی هارمونی در رفتار گروهی مشاهده شود و از يكديگر پيشی نگيرند. شرايط رقابتی (Race Condition) به اين بحث مربوط میشود كه چه كنيم تا مطمئن شويم كه دو يا چند فرايند به صورت همزمان سراغ منابع مشترک (مانند يك سطر از يک جدول مشترک) نروند ودر فعاليتهای بحرانی يكديگر برخورد يا مداخله نكنند و دچار شرايط رقابتی (Race Condition) نشوند. ابتدا با 3 مثال کامل و دقیق این سه مسئله به طور کامل مورد بحث و بررسی دقیق قرار میگیرند. همچنین مفاهیم مهمی مثل بنبست و قحطی در مسائل این فصل تعریف و مورد بررسی قرار میگیرند. همچنین مفاهیم منبع بحرانی (Critical Resource)، ناحيه بحرانی (Critical Resource) یا قسمت بحرانی (Critical Section)، شرايط رقابتی (Race Condition)، برخورد یا مداخله (conflict) یا در هم قفلی (Interlock) و انحصار متقابل (Mutual Exclusion) دقیقاً در این سه مثال تعریف شده و با یکدیگر مقایسه میشود. سپس هفت شرط یک راه حل خوب انحصار متقابل معرفی و تشریح میشوند: 1) شرط انحصار متقابل (Mutual Exclusion) : در هر لحظه تنها يك فرايند مجاز است در ناحيه بحرانی خود باشد. 2) شرط پيشرفت (Progress) : فرايندی كه در ناحيه بحرانی به سر نمیبرد و فعلاً قصد ورود به ناحيه بحرانی را ندارد نبايد مانع از ورود فرايندهای ديگر به ناحيه بحرانی شود. 3) شرط انتظار محدود (Bounded Waiting) : فرايندهايی كه نياز به ورود به ناحيه بحرانی دارند بايد مدت انتظارشان محدود باشد، يعنی نبايد دچار قحطی يا بنبست شوند. 4) شرط عموميت (Generality ): نبايد هيچ فرض سادهكنندهای در مورد سرعت نسبی و تعداد فرايندها، سرعت و تعداد CPUها... و داشته باشيم (مسئله را درشرايط كلی حل كنيم). 5) شرط قطعی (Deterministic) بودن: الگوريتم غيرقطعی و تصادفی نباشد. 6) شرط يک بار ورود: هر فرايندی كه مجوز ورود به ناحيه بحرانی را دريافت میكند، فقط يک بار وارد شده و به مدت محدود در ناحيه بحرانی میماند. 7) شرط ورود فوری: هنگامی كه هيچ فرايندی در ناحيه بحرانی نيست، فرايند متقاضی ورود به ناحيه بحرانی بايد فوراً و بدون تأخير وارد شود. همچنین در این جلسه گفته میشود که دو راه برای انتظار وجود دارد: 1) انتظار مشغول (Busy Waiting) 2) مسدود شدن (Blocking). در انتها راهحلهای انحصار متقابل به چهار دسته تقسيم میشود: 1) رويكردهای نرمافزاری (مثل راه حلِ دِكر و پيترسون) 2) رويكردهای سختافزاری (مثل از كار انداختن وقفهها و TSL و SWAP) 3) رويكردهای سيستمعاملی (مثل سمافور و تبادل پيام) 4) رويكردهای كامپايلری (مثل مانيتور). همچنین 3 تست کنکور ارشد و دکترای مهندسی کامپیوتر در خصوص مسائل بحث شده در این جلسه مطرح و حل کاملاً تشریحی آن ارائه میشود.