الگوریتم بانکدار کیست؟ توضیح بده.
الگوریتم بانکدار یک الگوریتم تخصیص منابع و اجتناب از بن‌بست است که توسط ادسخر دیسترا توسعه یافته که امنیت آن به وسیله شبیه‌سازی تخصیص بیشترین مقدار ممکن از تمام منابع آزمایش شده به طوری که یک s-state ایجاد می‌کند تا برای همه فرایندهای در حال انتظار تمام شرایط بن‌بست را قبل از تصمیم‌گیری و اجازه تخصیص منبع بررسی کند.این الگوریتم در طراحی فرایند در سیستم عامل THE توسعه یافته و در اصل (به هلندی) در EWD108 شرح داده شده.الگوریتم."الگوریتم بانکدار" هر زمان که یک فرایند درخواست منبع کند توسط سیستم عامل اجرا می‌شود.الگوریتم به وسیله انکار یا تعویق درخواست از بن‌بست جلوگیری می‌کند. این در صورتی است که اگر تعیین شود که پذیرش درخواست می‌تواند سیستم را به حالت نا امن ببرد. (حالتی که بن‌بست می‌تواند رخ دهد). هنگامی که یک فرایند جدید وارد یک سیستم می‌شود باید حداکثر تعداد درخواستی از هر یک از منابع را اعلام کند که «نباید از تعداد کل منابع در سیستم تجاوز کند». همچنین هنگامی که یک فرایند همه منابع درخواستی را تحویل می‌گیرد باید آن‌ها را پس از اتمام عملیاتش، بازگرداند.منابع.الگوریتم بانکدار برای انجام کار نیاز به دانستن سه چیز دارد:منابع تنها در صورتی ممکن است اختصاص یابند که شرایط زیر وجود داشته باشد:برخی از منابعی که در سیستم‌های واقعی دنبال می‌شوند حافظه، سمافورها و رابط دسترسی هستند.نام "الگوریتم بانکدار" برگرفته از این حقیقت است که این الگوریتم می‌تواند در سیستم بانکی مورد استفاده قرار گیرد تا تضمین کند که بانک همه منابع خورد را از دست نمی‌دهد. چون بانک هیچ‌گاه پول را به نحوی تخصیص نمی‌دهد که نتواند نیازهای بقیه مشتری‌ها را برطرف نکند. با الگوریتم بانکدار بانک تضمین می‌کند که زمانی که مشتری‌ها پول درخواست می‌کنند بانک هیچ‌گاه به حالت ناامن نمی‌رود. اگر درخواست مشتری باعث نشود که بانک حالت امن را ترک کند، مبلغ اختصاص میابد در غیر اینصورت مشتری باید صبر کند تا زمانی که مشتری‌های دیگر سپرده کافی قرار دهند.ساختمان داده‌های اولیه برای پیاده‌سازی الگوریتم بانکدار:n را شماره فرایند و m را شماره منابع موجود قرار دهید. حال به این ساختمان داده‌ها نیاز است:توجه: Need = Claim- Allocationمثال.با فرض اینکه سیستم دارای چهار نوع منبع A,B،C,D باشد. این مثال نشان می‌دهد منابع چگونه اختصاص می‌یابند. توجه که این مثال مشان می‌دهد سیستم یک لحظه قبل از درخواست جدید در چه حالتی است.تعداد کل منابع در سیستم(Resource): R1 R2 R3 ۶ ۳ ۹بردار موجودی(Available): R1 R2 R3 ۱ ۱ ۰ماتریس منابع تخصیص یافته (Allocation) : R1 R2 R3 P1 1 0 0 P2 6 1 2 P3 2 1 1 P4 0 0 2ماتریس کل درخواست ها(Claim) : R1 R2 R3 P1 3 2 2 P2 6 1 3 P3 3 1 4 P4 4 2 2ماتریس منابع مورد نیاز فرایندها برای اتمام (Need): R1 R2 R3 P1 2 2 2 P2 0 0 1 P3 1 0 3 P4 4 2 0حالات امن و ناامن.طبیعی است که حالتی که امن نباشد، حالت ناامن است.مثال حالت امن.می‌توانیم با نشان دادن اینکه هر فرایند حداکثر منابع مورد نیاز را دریافت و به پایان می‌رسد حالت امن را در مثال قبل نشان دهیم. R1 R2 R3 P1 3 2 2 P2 0 0 0 P3 3 1 4 P4 4 2 2ᗛ پس از اتمام هر فرایند، باید دوباره از اولین ردیف، نیازمندی‌ها بررسی شود. R1 R2 R3 P1 0 0 0 P2 0 0 0 P3 3 1 4 P4 4 2 2 R1 R2 R3 P1 0 0 0 P2 0 0 0 P3 0 0 0 P4 4 2 2 R1 R2 R3 P1 0 0 0 P2 0 0 0 P3 0 0 0 P4 0 0 0مثال برای حالت ناامن.در مثال قبل فرض کنید مقادیر تخصیص یافته فرایند p2 از &lt;۲ ۱ ۶&gt; به &lt;۱ ۱ ۵&gt; و فرایند p1 از &lt;۰ ۰ ۱&gt; به &lt;۱ ۰ ۲&gt; تغییر حالت دهند. با این تغییر ماتریس نیازها هم تغییر خواهد کرد. یعنی:ماتریس تخصیص یافته‌ها : R1 R2 R3 P1 2 0 1 P2 5 1 1 P3 2 1 1 P4 0 0 2ماتریس نیازها : R1 R2 R3 P1 1 2 1 P2 1 0 1 P3 1 0 3 P4 4 2 0بردار موجودی : R1 R2 R3 ۱ ۱ ۰