عکس پیش‌فرض نوشته

در این جلسه از سری جلسات سیستم های عامل، به توضیح مقدماتی همزمانی در سیستم های عامل می پردازیم.

سیستم های عامل - همزمانی

 

همه موضوعات محوری در طراحی سیستم عامل به مدیریت فرآیندها و نخ ها مربوط است.
چند برنامه ای : مدیریت فرآیند فرآیندهای متعدد در داخل یک کامپیوتر تک پردازنده ای
چند پردازشی : مدیریت فرآیند فرآیندهای متعدد در داخل یک کامپیوتر چند پردازنده ای
پرازش توزیعی : مدیریت فرآیند فرآیندهای متعدد روی سیستم های کامپیوتری متعدد
برای هر سه زمینه فوق مسئله هم زمانی است.

 

همزمانی در سه زمینه متفاوت طراحی می گردد :
کاربردهای متعدد : زمان پردازش کامپیوتر به طور پویا بین تعدادی کار یا کاربرد بتواند تقسیم گردد.
کاربرد ساخت یافته : بعضی از کاربردها را به صورت مجموعه ای از فرآیندهای همزمان، به طور کارآمد برنامه سازی کرد.
ساختار سیستم عامل : همین امتیاز ساختاردهی، برای برنامه ساز سیستم نیز قابل اعمال است.

 

نیاز اصلی برای حمایت از فرآیندهای همزمان، توان اعمال انحصار متقابل است.
یعنی وقتی به یک فرآیند قدرت انجام عملی داده شد، بتواند تمام فرآیندهای دیگر را از این قدرت بازدارد.

 

اصول همزمانی :
در سیستم های چند پردازنده ای، نه تنها ممکن است فرآیندها در بین یکدیگر اجرا شوند، بلکه می توانند واقعاً به موازات هم و با هم پوشانی اجرا گردند.

در این روش مشکلات زیر پیش می آید :
1- اشتراک منابع سراسری پر مخاطره است.
2- مدیریت تخصیص بهینه منابع برای سیستم عامل است.
3- تعیین محل خطای برنامه سازی مشکل می شود.

 

ملاحظات سیستم عامل در همزمانی :
– سیستم عامل باید بتواند فرآیندهای فعّال مختلف را دنبال کند؛ که این کار توسط بلوک های کنترل فرآیند انجام می شود.
– سیستم عامل باید منابع را به هر یک از فرآیندها تخصیص دهد و یا باز پس بگیرد؛ از جمله :
وقت پردازنده، حافظه، پرونده هاریا، دستگاه های ورودی و خروجی
– سیستم عامل باید داده ها و منابع فیزیکی هر فرآیند را در مقابل دخالت ناخواسته فرآیند دیگر محافظت کند.
– نتایج یک فرآیند باید مستقل از سرعت پیشرفت اجرای فرآیندهای همزمان دیگر باشد.

 

محاوره فرآیندها : ارتباطات بین فرآیندها و نخ ها
بی اطّلاعی فرآیندها از یکدیگر : فرآیندها مستقل هستند.
اطّلاع غیر مستقیم فرآیندها از یکدیگر : دسترسی به بعضی از اشیاء یکدیگر
اطّلاع فرآیندها از یکدیگر : به وسیله نام، با یکدیگر در ارتباط هستند.

 

هنگامی که چند فرآیند برای استفاده از یک منابع فعّالیت می کنند درگیری دارند.
شرایط اساسی در راه حل صحیح :
– انحصار متقابل در اجرای بخش بحرانی
– فعّالیت های محدوده زمانی در هر بخش
– تعداد مرتبه های رفتن به ناحیه بحرانی در حضور منتظران محدود است.
– هیچ فرضی نسبت به طول دستورات و سرعت اجرا نمی باشد.
– فرآیند : حلقه همیشگی
– در پایان بن بست به باقی فرآیندها پیامی ارسال می گردد.
– گرسنگی

 

همکاری فرآیندها توسط اشتراک :
– فرآیندهایی را پوشش می دهند که با یکدیگر محاوره می کنند، بدون اینکه صراحتاً از یکدیگر مطّلع باشند.
– مسئله کنترل انحصار متقابل، بن بست، گرسنگی نیز وجود دارد و داده در دو حالت ممکن خواندن و نوشتن مورد دسترسی قرار می گیرند و تنها مورد نوشتن باید در انحصار متقابل قرار گیرد.

 

همکاری فرآیندها توسط ارتباط :
– هر فرآیند، محیط مجزای خود را دارد و فرآیندهای دیگر را در بر ندارد.
– محاوره بین فرآیندها غیر مستقیم است و فرآیندها صراحتاً از محل یکدیگر اطّلاع ندارند.
– ارتباط را با نوعی پیام مشخّص می کنند.
– مسئله بن بست و گرسنگی وجود دارد.

 

در بخش بعدی در مورد انحصار متقابل بحث خواهیم نمود …

این آموزش بیش از ۳ سال قبل ارسال شده و اکنون در لیست به‌روزرسانی‌های سایت قرار دارد. اگر پیشنهاد یا انتقادی برای بهبود آموزش دارید، خوشحال می‌شیم به ما اطلاع بدهید.