تعریف بن بست
بن بست (Deadlock) در سیستم عامل به وضعیتی اشاره دارد که در آن دو یا بیشتر فرآیند قفل متناظر خود را در اختیار گرفتهاند و منتظر آزاد شدن منابعی هستند که توسط سایر فرآیندها نگهداری میشوند. در نتیجه، هیچ یک از فرآیندها قادر به ادامه اجرای خود نیست و سیستم در حالت بن بست قرار میگیرد.
در بنبست، هر فرآیند در انتظار منبعی است که توسط فرآیند دیگری در اختیار قرار گرفته است و این فرآیندها همبستگی منابع را ایجاد میکنند. این وضعیت منجر به کاهش عملکرد سیستم میشود، زیرا فرآیندها نمیتوانند ادامه فعالیتهای خود را به صورت نرمال انجام دهند و منابع سیستم بهطور نامناسب تخصیص مییابند. برای حل بنبست، الگوریتمها و روشهای مختلفی مانند تخصیص منابع، الگوریتم بانکداران و تشخیص بنبست استفاده میشود.
انواع بن بست در سیستم عامل
بن بستها در سیستم عامل میتوانند به چندین نوع تقسیم شوند. در ادامه به برخی از انواع بن بستهای رایج در سیستم عامل اشاره خواهیم کرد:
بن بست نرمافزاری
بن بست نرمافزاری زمانی رخ میدهد که یک برنامه یا فرآیند در سیستم عامل با مشکلی مواجه شود و قادر به ادامه عملکرد صحیح خود نباشد. این ممکن است به دلیل خطاهای برنامهنویسی، نقصهای منطقی یا تعامل نادرست با منابع سیستم باشد.
بن بست سختافزاری
بن بست سختافزاری زمانی رخ میدهد که قطعات سختافزاری سیستم عامل دچار خرابی فیزیکی شوند و عملکرد صحیح را از دست بدهند. مثالهایی از این نوع بن بست شامل خرابی دیسک سخت، حافظههای سیستم و قطعات دیگری هستند که تأثیر منفی بر روی عملکرد سیستم دارند.
بن بست شبکه
بن بست شبکه زمانی رخ میدهد که ارتباط شبکه در سیستم عامل قطع شود و دسترسی به منابع شبکه امکانپذیر نباشد. این ممکن است به دلیل اشکالات در تنظیمات شبکه، خرابی تجهیزات شبکه یا مشکلات دیگری باشد.
بن بست سختافزاری-نرمافزاری
این نوع بن بست زمانی رخ میدهد که مشکلی به طور همزمان در قطعات سختافزاری و نرمافزاری سیستم عامل وجود داشته باشد. به عبارت دیگر، همزمانی بروز خطاهای سختافزاری و نرمافزاری منجر به بن بست سیستم عامل میشود.
بن بست ناشی از تداخل منابع
این نوع بن بست در سیستم عامل به دلیل تداخل در استفاده از منابع سیستم رخ میدهد. به عنوان مثال، هنگامی که چندین برنامه همزمان از یک منبع سیستم استفاده کنند و منابع را اشباع کنند، بن بستی در سیستم عامل ایجاد میشود.
همه این انواع بن بستها منجر به کاهش عملکرد سیستم، متوقف شدن فرآیندها و برنامهها، و از دست رفتن دادهها و اطلاعات میشوند. برای حل بن بستها در سیستم عامل، روشهای مختلفی وجود دارد که بسته به نوع بن بست و شرایط خاص میتوان از آنها استفاده کرد. در لینک زیر فایل آماده شده توسط مجموعه پی استور برای آشنایی شما با سیستم عاملهای توزیع شده طراحی شده که مناسب جهت ارائه کلاسی و آکادمیک بوده و دارای قابلیت ویرایش است.
تاثیرات بن بست بر عملکرد سیستم عامل
همانطور که گفته شد، بن بست در سیستم عامل یا Deadlock به وضعیتی گفته میشود که در آن دو یا بیشتری از فرآیندها در انتظار یکدیگر قرار گرفته و نمیتوانند به سمت پیشرفت بروند. این مشکل میتواند تاثیرات جدی بر عملکرد سیستم عامل داشته باشد. در ادامه، تاثیرات بنبست را بر روی عملکرد سیستم عامل بررسی خواهیم کرد:
کاهش عملکرد
بنبست موجب کاهش عملکرد سیستم عامل میشود زیرا منابع سیستم به طور نامناسب تخصیص داده میشوند و فرآیندها قادر به اجرای فعالیتهای خود نمیباشند. این منجر به کاهش ظرفیت استفاده از منابع سخت افزاری و نرم افزاری سیستم میشود.
تأخیر در اجرا
وقوع بنبست موجب تأخیر در اجرای فرآیندها میشود. زمانی که یک فرآیند به بنبست برخورد میکند، سایر فرآیندها نیز تحت تأثیر قرار میگیرند و تا رفع بنبست انتظار میکشند. این تأخیر میتواند باعث افزایش زمان اجرای فرآیندها و در نهایت کاهش کارایی سیستم عامل شود.
عدم پاسخگویی
در صورتی که بن بستی در سیستم عامل ایجاد شود، ممکن است سیستم عامل به درستی پاسخ ندهد یا برخی از وظایف را انجام ندهد. این موضوع میتواند باعث ایجاد ناکارآمدی و مشکلاتی در استفاده از سیستم عامل شود.
از دست دادن دادهها
در بعضی مواقع، بن بستها ممکن است باعث از بین رفتن دادههای مهم شوند. زمانی که یک سیستم عامل در حال انجام عملیات مهم است و بن بستی رخ میدهد، دادههای قبلی ممکن است به طور کامل از بین بروند و باعث ایجاد اختلالات جدی در کاربران و سیستم شوند.
خرابی سیستم
بعضی بن بستها میتوانند باعث خرابی و بروز عیب در سیستم عامل شوند. در بعضی مواقع، بن بستها میتوانند به گونهای بدون بازیابی یا بهبودی قابل قبول باشند که نیاز به راهاندازی مجدد سیستم عامل داشته باشد.
کاهش اعتماد به سیستم عامل
وقوع مکرر بن بستها میتواند باعث کاهش اعتماد کاربران به سیستم عامل شود. اگر سیستم عامل به طور مداوم با مشکلات و بن بستها مواجه شود، کاربران ممکن است اعتماد خود را به سیستم عامل از دست بدهند و به جستجوی سیستم عاملی پایدارتر بروند.
بنابراین، بن بستها میتوانند تأثیرات منفی و جدی بر عملکرد سیستم عامل داشته باشند و برای حل این مشکلات، نیاز به تشخیص و رفع بن بستها در سیستم عامل وجود دارد. برای جلوگیری از بنبستها، الگوریتمها و روشهای مناسب باید در سیستم عامل به کار گرفته شوند و منابع به درستی تخصیص داده شوند. برای آشنایی شما با عملکرد انواع سیستم عاملها پیشنهاد میکنیم فایل موجود در لینک زیر را مطالعه کنید.
شرایط ایجاد بن بست در یک سیستم
۴ شرط ایجاد بن بست در سیستم عامل، انحصار متقابل، نگهداشت و انتظار، غیرقابل استفاده مجدد و انتظار چرخهای هستند. سیستمی را میتوان متعد بروز بن بست دانست که شرایط زیر را داشته باشد که عبارتند از:
انحصار متقابل (Mutual Exclusion)
این شرط بیان میکند که برخی منابع در سیستم عامل قابل استفاده توسط یک فرآیند به طور همزمان هستند و تا زمانی که یک فرآیند از یک منبع استفاده میکند، دیگر فرآیندها قادر به استفاده از آن منبع نمیباشند. به عبارت دیگر، هر منبع در هر لحظه تنها برای یک فرآیند قابل استفاده است.
نگهداشت و انتظار (Hold and Wait)
این شرط بیان میکند که حداقل یک فرآیند در حال حاضر منابعی را نگهداشته است و در عین حال در انتظار دیگر منابع نیز میباشد. به عبارت دیگر، فرآیندها در حال نگهداشتن منابعی هستند که نیازمندیهای دیگری در سیستم وجود دارد.
غیرقابل استفاده مجدد (No Preemption)
این شرط بیان میکند که منابعی که توسط یک فرآیند در اختیار قرار گرفتهاند، نمیتوانند بدون اجازه فرآیند، قطع یا بازگشت داده شوند. به این ترتیب، یک منبع اجباراً نمیتواند از یک فرآیند میانبرداشت شود و به فرآیندهای دیگر اختصاص داده شود.
انتظار چرخهای (Circular Wait)
مجموعهای از فرآیندهایی است که به شکل دایرهای منتظر یکدیگر هستند. در این شرط، یک دایره از فرآیندها وجود دارد که هر فرآیند در انتظار منبعی است که توسط فرآیند بعدی در دایره اختصاص داده شده است. به این ترتیب، آخرین فرآیند در انتظار منبعی است که توسط اولین فرآیند در دایره اختصاص داده شده است.
مثال برای بن بست
در شکل بالا، دو فرآیند و دو منبع وجود دارد. فرآیند ۱ “منبع ۱” را در اختیار دارد و نیاز به “منبع ۲” دارد در حالی که فرآیند ۲ “منبع ۲” را در اختیار دارد و نیاز به “منبع ۱” را دارد. این وضعیت باعث ایجاد بن بست در سیستم عامل میشود زیرا هیچ یک از دو فرآیند قابل اجرا نیست. از آنجا که منابع قابل تقسیم نمیباشند، فقط میتوانند توسط یک فرآیند در یک زمان استفاده شوند (انحصار متقابل).
هر یک از فرآیندها یک منبع را نگهداشته و در انتظار آزاد شدن منبعی است که فرآیند دیگر آن را نیاز دارد. هیچ یک از دو فرآیند قبل از اجرای خود منابع خود را آزاد نمیکنند و این باعث ایجاد انتظار چرخهای میشود. بنابراین، همه چهار شرط بنبست برقرار است. وقوع همه این شرایط در سیستم به طور همزمان، منجر به بنبست میشود و میتواند منجر به توقف عملکرد صحیح سیستم شود. برای پیشگیری از بنبست، لازم است تمامی شرایط فوق را از بین برد یا مدیریت کنیم.
روشهای مقابله و برخورد با بن بست
برای مقابله با بن بست در سیستم عامل، میتوان از چهار روش زیر استفاده کرد:
چشم پوشی یا نادیده گرفتن (Ignorance)
در این روش، سیستم عامل بنبستها را نادیده میگیرد و هیچ اقدامی برای حل آنها انجام نمیدهد. سیستم به طور مداوم به سمت جلو پیش میرود و بنبستها را نادیده میگیرد. این روش میتواند ساده و سریع باشد، اما در بلندمدت میتواند منجر به مشکلات جدیتری شود و برخی موارد ممکن است منجر به توقف یا تاخیر در عملکرد سیستم شود. به طور کلی این روش بهعنوان روشی ایدهآل برای مقابله با بنبست در نظر گرفته نمیشود.
اجتناب (Avoidance)
در روش اجتناب، سیستم عامل با استفاده از الگوریتمها و روشهای مدیریت منابع (مانند الگوریتم بانکداران یا Banker)، سعی میکند از وقوع بنبست جلوگیری کند. با تحلیل دقیق نیازهای فرآیندها و منابع در دسترس، سیستم تصمیم میگیرد که آیا یک درخواست برای منبع باید پذیرفته شود یا نه.
این روش به صورت پیشگیرانه استفاده میشود و هدف آن جلوگیری از وقوع بنبست است. اگر تخصیص منابع ممکن باشد و وضعیت ایمن در سیستم برقرار باشد، منابع به فرآیندها اختصاص داده میشوند، در غیر این صورت، فرآیند در انتظار قرار میگیرد.
کشف و بازیابی (Detection & Recovery)
در این روش، سیستم عامل سعی میکند بنبستها را شناسایی کند و سپس با استفاده از الگوریتمها و روشهایی مانند ترشح (preemption) منابع را از فرآیندهای مورد نیاز دیگر بازیابی کند. به عبارت دیگر، منابع را از فرآیندهایی که در بنبست قرار دارند، قطع میکند تا بنبست رفع شود.
جلوگیری (Prevention)
در روش جلوگیری، سیستم عامل با طراحی و اجرای مناسب ساختار و الگوریتمها، سعی میکند از پیش از وقوع بنبست جلوگیری کند. با اجرای سیاستها و قوانینی که شرایط بنبست را ایجاد نمیکنند، مانند استفاده از ترتیب تخصیص منابع یا الگوریتمهای مبتنی بر اجتناب، سیستم قادر به جلوگیری از بنبست میشود.
تفاوت گرسنگی و بن بست
بن بست | گرسنگی |
---|---|
بنبست وضعیتی است که در آن بیش از یک فرآیند به دلیل نگهداشتن یک منبع و همچنین نیاز به منبعی که توسط فرآیند دیگری اختصاص داده شده، مسدود میشود. | گرسنگی یک فرایند است که در آن فرآیندهای با اولویت کم به صورت نامحدود به تأخیر میافتند زیرا منابع هرگز به آنها اختصاص داده نمیشوند. |
منابع توسط یک مجموعه فرآیند به صورت چرخشی مسدود شدهاند. | منابع به طور مداوم توسط منابع با اولویت بالا استفاده میشوند. |
با اجتناب از هر شرط ضروری مورد نیاز برای بنبست یا با استفاده از یک الگوریتم بازیابی، آن را ممکن است جلوگیری کرد یا بهبود بخشید. | میتوان با استفاده از روش پیری (Aging)، گرسنگی را جلوگیری کرد. |
در یک بنبست، هیچ یک از فرآیندها اجرا نمیشوند. | در گرسنگی، فرآیندهای با اولویت بالاتر اجرا میشوند در حالی که فرآیندهای با اولویت پایینتر به تأخیر میافتند. |
بنبست همچنین به عنوان انتظار چرخهای نیز شناخته میشود. | گرسنگی همچنین به عنوان قفل زنده نیز شناخته میشود. |
سخن آخر درمورد بن بست در سیستم عامل
در این مقاله، به بررسی بن بست در سیستم عامل پرداختیم. انواع بن بست نرمافزاری و سختافزاری را مورد بررسی قرار دادیم و علل و تاثیرات آن را بررسی کردیم. همچنین، روشهای حل بن بست و نکاتی برای جلوگیری از بن بست را بررسی کردیم. با رفع بن بست، سیستم عامل قادر به ادامه کار خود و بهبود عملکرد خواهد بود.
یک پاسخ
سلام ممنون از این مقاله ای که نوشتی من برای ارائه دانشگاه ازش نکته برداری کردم امیدوارم موفق باشی