Lecture 6: Deadlocks in Operating Systems PDF
Document Details
Uploaded by BeauteousLeopard
Afghahi.F
Tags
Summary
This document provides a lecture on deadlocks in operating systems. It covers various aspects of deadlocks, including examples, the concept of resources, and different approaches to handling deadlocks.
Full Transcript
سیستم عامل Operating system Click to edit Master subtitle style Lecture 6 DeadLock بن بست 2 [email protected] مدل سیستم منابع سیست...
سیستم عامل Operating system Click to edit Master subtitle style Lecture 6 DeadLock بن بست 2 [email protected] مدل سیستم منابع سیستم از انواع مختلف R1,R2,…….Rnهستند. قطعه هاي زماني پردازنده ،فضاي حافظه ،ابزارهاي خواندن /نوشتن... ، از هر منبع Riبه تعداد Wiدر سیستم وجود دارد. مراحل استفاده از منابع توسط فرآیندها عبارت است از: (1درخواست منبع تا زمانيکه درخواست قبول شود و منبع را دریافت کند ،فرآیند منتظر خواهد ماند. (2استفاده از منبع (3آزاد سازي 3 [email protected] بن بست: بن بست را به صورت مسدود بودن دائمي مجموعه اي از فرایندها ،که براي منابع سیستم رقابت میکنند یا با یکدیگر در ارتباط هستند ،تعریف میکنند.این مسدود بودن ادامه ميیابد تا سیستم عامل عمل فوق العادهاي انجام دهد ،مثال فرایندي را حذف کند یا مجبور به برگشت به عقب کند. براي بن بست راه حل کارآمدي وجود ندارد. تمام بنبستها با نیازهاي متضاد دو فرایند یا بیشتر ،براي منابع همراه هستند. 4 [email protected] مثال بن بست یک مثال بن بست ،ترافیک است.در رانندگي قانون این است که هر خودرو باید تسلیم خودروي سمت راست باشد.در این صورت در حالت زیر چه رخ میدهد؟ 5 [email protected] مثال بن بست در فرایندها ساده ترین نوع بن بست زماني اتفاق مي افتد که دو فرایند مجزا و همزمان منتظر بدست آوردن منبعي هستند که در اختیار دیگریست و خود نیز منابعشان را تا اتمام فرایند آزاد نمیکنند. Process P2 Process P1 Get B Get A Get A Get B Release B Release A Release A Release B . . . . 6 [email protected] انواع منابع: منابعنقشتعیینکنندهايدربنبستدارند. منابعبهدودستهتقسیممیشوند: منابعقابلاستفادهمجدد منابعمصرفشدنيیاغیرقابلاستفادهمجدد 7 [email protected] منابع قابل استفاده مجدد: منابعي هستند که در هر لحظه از زمان تنها توسط یک فرایند قابل استفاده اند و استفاده از آنها موجب به پایان رسیدن آنها نمیشود(بدون آسیب دیدن آزاد میشوند) فرایند ها منابع را بدست مي آورند و سپس آنها را براي استفاده مجدد توسط سایر فرایند ها آزاد میکنند. پردازنده ،کانالهاي ،I/Oحافظه اصلي و ثانوي ،دستگاه ها و ساختمان داده هایي مثل پرونده ها ،پایگاه هاي داده و راهنماها از این دسته اند. بن بست زماني رخ میدهد که یک فرایند منابع را نگه دارد و منبع دیگري درخواست کند. 8 [email protected] مثالی از بن بست منابع قابل استفاده مجدد: فرض کنید فضاي حافظه که میتواند به فرایند ها تخصیص یابد 200 KBباشد.در این صورت ترتیب زیر موجب بروز بن بست میشود. P1 P2 ... ... ;Request 80 Kbytes ;Request 70 Kbytes ... ... ;Request 60 Kbytes ;Request 80 Kbytes 9 [email protected] منابع مصرف شدنی: اینمنابعتولیدمیشوندوازبینميروند. وقفه ها ،عالمتها ،پیامها و اطالعات بافر I/Oاز این نمونه اند. کشفبنبستهايحاصلازاینمنابعبسیارمشکلاستوممکناست ترکیب نادريازحوادثآنهاراایجادکند. 10 [email protected] مثالی از بن بست منابع مصرف شدنی: درصورتیکهعمل Receiveمسدودکنندهباشدبنبستاتفاقميافتد. P1 P2 ... ... ;)Receive(P2 ;)Receive(P1 ... ... ;)Send(P2, M1 ;)Send(P1, M2 11 [email protected] شرایط الزم برای ایجاد بن بست : اگر چهار شرط زیر همزمان در سیستمي وجود داشته باشد ،بن بست رخ میدهد(شرایط کافمن): (1انحصار متقابل()Mutual Exclusion در هر لحظه تنها یک فرایند میتواند از یک منبع استفاده کند ،اگر فرایند دیگري درخواست همان منبع را کند ،باید منتظر بماند تا منبع آزاد شود. (2نگهداری و انتظار()Hold and Wait هنگام درخواست منبع جدید فرایند منابع قبلي تخصیص یافته را آزاد نمیکند.به عبارت دیگر فرایندي وجود دارد که حداقل یک منبع را در اختیار داشته باشد(نگهداري) و منتظر به دست آوردن منبع دیگري باشد که فعال در اختیار فرایند دیگري است. (3انحصاری بودن (قبضه نشدنی)()Non Preemption هنگامي که فرایندي منبعي را در اختیار دارد ،نتوان آن منبع را به زور باز پس گرفت. (4انتظار چرخشی ()Circular Wait یک زنجیره بسته اي از فرایندها وجود دارد به طوري که هر فرایند منتظر منبعي باشد که در اختیار فرایند دیگري است. 12 [email protected] گراف تخصیص منابع: گراف تخصیص منابع یک گراف جهت دار است که نحوه تخصیص منابع به فرایند ها را در هر لحظه از زمان نشان میدهد. براي تشخیص بن بست باید گراف تخصیص منابع را بعد از هر درخواست ،هر تخصیص، یا هر ترخیص به روز کرد. در گراف ،منابع را با مربع (تعداد در آن مشخص)و فرایند را با دایره نشان میدهیم. وجود دور یا چرخه در گراف بیانگر بروز بن بست است.و اگر گراف تخصیص منابع فاقد چرخه باشد ،حالت بن بست وجود ندارد. P S P S فرایند Pدرانتظارمنبع Sاست فرایند Pمنبع Sرادراختیاردارد 13 [email protected] مثال انتظار مدور یا چرخشی 14 [email protected] مثال در گراف مقابل وضعیت بن بست را بررسي نمایید. حل :سه فرایند p1,p2,p3در بنبست هستند و این مثال (وجود چرخه همراه با بنبست) 15 [email protected] مثال در گراف مقابل وضعیت بن بست را بررسي نمایید. حل :با وجود چرخه P1->R1 ->P3 ->R2 ->P1بن بست رخ نمي دهد.چون فرایند P4میتواند منبع نمونه R2را آزاد کند و آنگاه منبع R2به فرایند P3داده ميشود و چرخه از بین برود . اگر چرخهاي در گراف وجود داشته باشد ،ممکن است بنبست وجود داشته باشد. به عبارت دیگر وجود چرخه شرط الزم وقوع بنبست است اما کافي نیست! 16 [email protected] معیار تشخیص اولیه در گراف تخصیص منابع اگر گراف تخصیص منابع حلقه ندارد. سیستم بن بست ندارد. اگر گراف تخصیص منابع حلقه دارد. اگر از هر نوع منبع درگیر در حلقه فقط یک نمونه داریم ،یک بن بست رخ داده است. اگر از هر نوع منبع درگیر در حلقه چندین نمونه داریم ،ممکن است بن بست رخ داده باشد. 17 [email protected] روشهای برخورد با بنبست (1نادیده گرفتن بنبست(شترمرغ) فرض میشود هیچگاه بنبست رخ نميدهد ،هیچ عملي در مقابل بنبست انجام نميشود ،پس از وقوع بنبست رياستارت ميشود. (2پیشگیری یا جلوگیری از بن بست()Prevention سیستم طوري طراحي شود که از قبل امکان بنبست از بین برود ،یعني تضمین کنیم که حداقل یکي از چهار شرط بنبست رخ ندهد. (3اجتناب از بن بست ()Avoidance در مورد درخواستهاي منبع طوري رفتار شود که حداقل یکي از چهار شرط بن بست رخ ندهد. (4کشف بن بست ()Detection هرجا که ممکن باشد ،منابع درخواستي به فرایندها داده میشود.سیستم عامل به طور متناوب الگوریتمي را دنبال میکندتا وجود شرط انتظار چرخشي را کشف کند. 18 [email protected] جلوگیری از بن بست: جلوگیري از بن بست با نقض کردن یکي از شرایط چهارگانه الزم براي بن بست انجام میشود: (1نقض انحصار متقابل (2نقض نگهداشت و انتظار (3نقض شرط انحصاري بودن (4نقض شرط انتظار مدور 19 [email protected] .1نقض انحصار متقابل این شرط را نمیتوان رد کرد ،چرا که بعضي از منابع ذاتا انحصاري هستند.مثال یک چاپگر تنها میتواند به یک فرایند پاسخ دهد یا نوشتن بر روي یک بانک اطالعاتي تنها توسط یک فرایند انجام میشود. 20 [email protected] .2نقض نگهداشت و انتظار میتوان فرایند ها را ملزم ساخت که اختصاص منابع تنها زماني انجام شود که تمام منابع مورد نیاز فرایند آزاد باشد و حتي اگر یک منبع آماده نبود هیچ اختصاصي انجام نشود. معایب این روش: انتظار طوالني فرایند براي تکمیل منابعش احتمال قحطي بیکار ماندن یک منبع به مدت طوالني منجر به بهرهوري پایین منابع عدم پیش بیني منابع مورد نیاز در آینده 21 [email protected] .3نقض شرط انحصاری بودن براي پیشگیري از بروز این شرط دو راه پیشنهاد شده است: اگر فرایندي منابعي را در اختیار دارد ،درخواست جدیدش موافقت نشود.در این حالت باید منابع قبلي خود را آزاد کند و در صورت نیاز ،مجددا با منابع اضافي درخواست نماید. قبضه کردن فرایند با اولویت پایینتر :زماني که یک فرایند نیاز به منبعي دارد که فرایند دیگري آن را نگه داشته است ،سیستم عامل آنرا قبضه کرده و منابعش را آزاد میکند. در فرایند هاي اولویت بندي شده استفاده میشود. حالت منبع باید براحتي قابل ذخیره باشد تا بعدها بازیابي شود. 22 [email protected] .4نقض شرط انتظار مدور مرتب کردن منابع به صورت خطي :به هر منبع یک شاخص نسبت داده میشود. در این صورت فرایند میتواند ابتدا منبع Riو سپس منبع Rjرا درخواست کند اگر i