هنگامی که چندین فرآیند در یک سیستم به صورت موازی با یکدیگر به
فعالیت مشغولند ممکن است شرایطی رخ دهد که در طی آن اجرای تمام فرآیندها
متوقف می شود و هیچ یک از آن ها نمی تواند به کار خود ادامه دهند. در چنین شرایطی
استفاده از منابع امکان ندارد و در اصطلاح سیستم در بن بست گرفتار شده است.
نمونه ای از این بن بست، هنگامی که در روش Sleep wakeup بررسی می شد، مشاهده
شد.
باید توجه داشت که ساده ترین حالت بن بست هنگامی رخ می دهد که دو فرآیند
همزمان منتظر به دست آوردن منبعی باشند که در اختیاز دیگری است و خود نیز منابع خود
را به صورت انحصاری نگهداری می کنند. منبع مورد بحث می تواند یک منبع نرم
افزاری و یا سخت افزاری باشد. از آنجایی که نوع منبع در تعیین بروز بن بست نقش
تعیین کننده ای بر عهده دارد، ابتدا یک دسته بندی کلی بر روی منابع ارائه می دهیم.
به طور کلی منابع موجود در سیستم را می توان به دو گروه عمده تقسیم
کرد:
1. منابع قابل استفاده مجدد : این منابع ذاتا غیر
انحصاری هستند یعنی امکان تخصیص آنان به صورت غیر انحصاری وجود دارد مانند
حافظه.
2. منابع غیر قابل استفاده مجدد: این منابع ذاتا
انحصاری هستند یعنی نمی توان پیش از پایان یک فرآیند منبع را در اختیار فرآیند
دیگری قرار داد. از جمله این منابع می توان به چاپگر اشاره کرد.
چنانچه در
سیستمی که از منابعی مانند هر یک از منابع فوق استفاده می کند، فرآیندی بخواهد
منبعی را در اختیار بگیرد، باید3مرحله زیر را به ترتیب انجام
دهد:
1. درخواست منبع: سیستم عامل می تواند با درخواست فرآیند
برای در اختیار گرفتن منبع موافقت نکند در این حالت فرآیند بلوکه می
شود.
2. به کار بردن: این مرحله هنگامی اجرا می شود که
سیستم عامل درخواست فرآیند را جابت کرده و منبع را در اختیار وی قرار داده
است.
3. آزاد سازی: فرآیند موظف است پس از پایان کار با منبع،
آن را آزاد ساخته در اختیار سیستم عامل قرار دهد تا فرآیندهای دیگر بتوانند
آن را در اختیار بگیرند.
با توجه به مقدمات فوق می توان تعریف زیر را برای بن
بست ارائه داد:
یک مجموعه از فرآیند ها در بن بست قرار دارند اگر هر
فرآیندی در مجموعه منتظر واقعه ای باشد که تنها فرآیند دیگری در مجموعه می تواند
باعث آن شود.