***2
Interprocess Communication
اغلب نیاز است که یک پردازش با پردازشهای دیگر بتواند ارتباط داشته باشد . به عنوان مثال Shell Pipeline یا پوسته سیستم عامل بصورت پردازشهای متوالی پیاده سازی شده است . خروجی Process اول باید به Process دوم داده شود و . . . .
بنابراین نیاز است که پردازشها بتوانند با یک روش دارای ساختار مناسب با هم Communicate داشته باشند . حالا می خواهیم به برخی موضوعات مربوط به این ارتباط میان پردازشی Interprocess Communication (IPC) بپردازیم .
چند موضوع باید بحث شود :
1- چگونه یک Process می تواند اطلاعاتی را به Process دیگر انتقال دهد ؟
2- چگونه مطمئن شویم دو یا چند پروسس مزاحم همدیگر نمیشوند. مثلا هر دو نمی خواهند در یک فضای حافظه بنویسند.
وقتی پردازشها وابستگیهایی نسبت به هم دارند، دنباله صحیح پروسسها چگونه است.
***5
علت رخ دادن اشکال در مثال بالا این است که پروسس B استفاده از یکی از متغیرهای مشترک را زمانی شروع می کند که پروسس A هنوز کارش را با آن متغیر مشترک تمام نکرده است .
انتخاب Primitive (عمل اولیه) مناسب برای دستیابی به Mutual Exclusion یک موضوع مهم طراحی در هر سیستم عاملی است و موضوعی است که بطور دقیق با جزئیات به آن می پردازیم .
مسئله اجتناب از شرایط مسابقه بطور انتزاعی می تواند مطرح شود .
- برخی زمانها Process مشغول Computing (محاسبات) داخلی خودش و کارهای دیگری است که به شرایط مسابقه منجر نمی شود .
-برخی زمانهایک پردازش ممکن است در حال دستیابی به فایل یا حافظه مشترک یا کارهای بحرانی دیگری باشد که منجر به شرایط مسابقه می شود .
تعریف : بخشی از برنامه که طی آن Shared Memory (حافظه مشترک) مورد دستیابی قرار می گیرد Critical region (ناحیه بحرانی) یا Critical Section (بخش بحرانی) نامیده می شود .
اگر بتوانیم کاری کنیم که هیچ دو پردازشی همزمان در بخشهای بحرانی خود نباشند میتوانیم از شرایط مسابقه جلوگیری کنیم .