logo

אלגוריתם הבנקאי במערכת ההפעלה (OS)

זה אלגוריתם בנקאי שהיה רגיל אליו למנוע מבוי סתום ו להקצות משאבים בבטחה לכל תהליך במערכת המחשוב. ה ' S-State' בוחן את כל הבדיקות או הפעילויות האפשריות לפני שמחליטים אם יש לאפשר את ההקצאה לכל תהליך. זה גם עוזר למערכת ההפעלה לשתף בהצלחה את המשאבים בין כל התהליכים. האלגוריתם של הבנקאי נקרא בגלל שהוא בודק האם יש להטיל סנקציות על אדם בסכום הלוואה או לא כדי לעזור למערכת הבנק לדמות בצורה בטוחה משאבי הקצאת משאבים. בחלק זה נלמד את ה אלגוריתם הבנקאי בפירוט. כמו כן, אנו נפתור בעיות בהתבסס על אלגוריתם הבנקאי . כדי להבין את האלגוריתם של הבנקאי תחילה נראה דוגמה אמיתית שלו.

נניח שמספר בעלי החשבונות בבנק מסוים הוא 'n', והכסף הכולל בבנק הוא 'T'. אם בעל חשבון מבקש הלוואה; ראשית, הבנק מוריד את סכום ההלוואה ממזומן מלא ולאחר מכן מעריך שהפרש המזומנים גדול מ-T כדי לאשר את סכום ההלוואה. צעדים אלו ננקטים מכיוון שאם אדם אחר מבקש הלוואה או מושך סכום כלשהו מהבנק, זה עוזר לבנק לנהל ולתפעל את כל הדברים ללא הגבלה בפונקציונליות של המערכת הבנקאית.

באופן דומה, זה עובד ב-an מערכת הפעלה . כאשר נוצר תהליך חדש במערכת מחשב, התהליך חייב לספק את כל סוגי המידע למערכת ההפעלה כמו תהליכים קרובים, בקשות למשאבים שלהם, ספירתם ועיכובים. בהתבסס על קריטריונים אלו, מערכת ההפעלה מחליטה איזה רצף תהליכים יש לבצע או להמתין כדי שלא יתרחש מבוי סתום במערכת. לכן, זה ידוע גם בשם אלגוריתם למניעת מבוי סתום אוֹ זיהוי מבוי סתום במערכת ההפעלה.

יתרונות

להלן המאפיינים החיוניים של האלגוריתם של הבנקאי:

  1. הוא מכיל משאבים שונים העונים על הדרישות של כל תהליך.
  2. כל תהליך צריך לספק מידע למערכת ההפעלה לגבי בקשות משאבים עתידיות, מספר המשאבים וכמה זמן יישמרו המשאבים.
  3. זה עוזר למערכת ההפעלה לנהל ולשלוט בקשות תהליך עבור כל סוג של משאב במערכת המחשב.
  4. לאלגוריתם יש תכונת משאב מקסימלית המייצגת מצביעה על כל תהליך יכול להכיל את המספר המרבי של משאבים במערכת.

חסרונות

  1. זה דורש מספר קבוע של תהליכים, ולא ניתן להתחיל תהליכים נוספים במערכת בזמן ביצוע התהליך.
  2. האלגוריתם אינו מאפשר עוד לתהליכים להחליף את צרכיו המקסימליים תוך עיבוד המשימות שלו.
  3. כל תהליך צריך לדעת ולציין מראש את דרישת המשאבים המקסימלית שלו עבור המערכת.
  4. ניתן להעניק את מספר בקשות המשאבים בזמן סופי, אך מגבלת הזמן להקצאת המשאבים היא שנה אחת.

כאשר עובדים עם אלגוריתם של בנקאי, הוא מבקש לדעת על שלושה דברים:

  1. כמה כל תהליך יכול לבקש עבור כל משאב במערכת. זה מסומן על ידי [ MAX ] בקשה.
  2. כמה כל תהליך מחזיק כרגע כל משאב במערכת. זה מסומן על ידי [ מוּקצֶה ] משאב.
  3. הוא מייצג את המספר של כל משאב הזמין כעת במערכת. זה מסומן על ידי [ זמין ] משאב.

להלן מונחי מבני הנתונים החשובים המיושמים באלגוריתם הבנקאי כדלקמן:

נניח ש-n הוא מספר התהליכים, ו-m הוא המספר של כל סוג משאב המשמש במערכת מחשב.

    זמין: זהו מערך באורך 'm' שמגדיר כל סוג של משאב זמין במערכת. כאשר Available[j] = K, פירושו שמופעי 'K' של משאבים מסוג R[j] זמינים במערכת.מקסימום:זוהי מטריצה ​​[n x m] המציינת שכל תהליך P[i] יכול לאחסן את המספר המרבי של משאבים R[j] (כל סוג) במערכת.הַקצָאָה:זוהי מטריצה ​​של m x n סדרים המציינת את סוג המשאבים המוקצים כעת לכל תהליך במערכת. כאשר הקצאה [i, j] = K, זה אומר שלתהליך P[i] מוקצה כרגע K מופעים של משאבים מסוג R[j] במערכת.צוֹרֶך:זהו רצף מטריצת M x N המייצג את מספר המשאבים שנותרו עבור כל תהליך. כאשר Need[i] [j] = k, תהליך P[i] עשוי לדרוש K מופעים נוספים של משאבים מסוג Rj כדי להשלים את העבודה שהוקצתה.
    Nedd[i][j] = Max[i][j] - הקצאה[i][j].סיים: זה הווקטור של הסדר M . הוא כולל ערך בוליאני (true/false) המציין אם התהליך הוקצה למשאבים המבוקשים, וכל המשאבים שוחררו לאחר סיום המשימה שלו.

אלגוריתם הבנקאי הוא השילוב של אלגוריתם הבטיחות ואלגוריתם בקשת המשאבים כדי לשלוט בתהליכים ולמנוע מבוי סתום במערכת:

אלגוריתם בטיחות

זהו אלגוריתם בטיחות המשמש כדי לבדוק אם מערכת נמצאת במצב בטוח או לא או עוקב אחר הרצף הבטוח באלגוריתם של בנקאי:

1. ישנם שני וקטורים ווק ו סיים באורך m ו-n באלגוריתם בטיחות.

אתחול: עבודה = זמין
Finish[i] = false; עבור I = 0, 1, 2, 3, 4… n - 1.

2. בדוק את סטטוס הזמינות עבור כל סוג של משאבים [i], כגון:

אני צריך]<= work
סיום[i] == false
אם ה-i לא קיים, עבור לשלב 4.

3. עבודה = עבודה +הקצאה(i) // כדי לקבל הקצאת משאבים חדשה

bash for loop

סיום[i] = נכון

עבור לשלב 2 כדי לבדוק את מצב זמינות המשאבים לתהליך הבא.

4. אם Finish[i] == true; זה אומר שהמערכת בטוחה לכל התהליכים.

אלגוריתם בקשת משאבים

אלגוריתם בקשת משאבים בודק כיצד מערכת תתנהג כאשר תהליך מבצע כל סוג של בקשת משאב במערכת כמטריצת בקשה.

תן ליצור מערך בקשת משאבים R[i] עבור כל תהליך P[i]. אם בקשת המשאביםאני[j] שווה ל-'K', כלומר התהליך P[i] דורש מופעי 'k' של משאבים מסוג R[j] במערכת.

1. כאשר המספר של משאבים מבוקשים מכל סוג הוא פחות מה צוֹרֶך משאבים, עבור לשלב 2 ואם התנאי נכשל, מה שאומר שהתהליך P[i] חורג מהתביעה המקסימלית שלו עבור המשאב. כפי שהביטוי מציע:

אם בקשה (i)<= need
עבור לשלב 2;

2. וכאשר מספר המשאבים המבוקשים מכל סוג קטן מהמשאב הזמין עבור כל תהליך, עבור לשלב (3). כפי שהביטוי מציע:

אם בקשה (i)<= available
Else Process P[i] חייב להמתין למשאב מכיוון שהוא אינו זמין לשימוש.

3. כאשר המשאב המבוקש מוקצה לתהליך על ידי שינוי מצב:

זמין = זמין - בקשה
Allocation(i) = Allocation(i) + Request (i)
צוֹרֶךאני= צריךאני- בקשהאני

כאשר מצב הקצאת המשאב בטוח, המשאבים שלו מוקצים לתהליך P(i). ואם המצב החדש אינו בטוח, תהליך P (i) צריך להמתין לכל סוג של Request R(i) ולשחזר את מצב הקצאת המשאבים הישן.

דוגמא: שקול מערכת המכילה חמישה תהליכים P1, P2, P3, P4, P5 ושלושת סוגי המשאבים A, B ו-C. להלן סוגי המשאבים: ל-A יש 10, ל-B יש 5 ולסוג המשאב C יש 7 מופעים.

תהליך הַקצָאָה
א ב ג
מקסימום
א ב ג
זמין
א ב ג
P1 0 1 0 7 5 3 3 3 2
P2 200 3 2 2
P3 3 0 2 9 0 2
P4 2 1 1 2 2 2
P5 0 0 2 4 3 3

ענה על השאלות הבאות באמצעות האלגוריתם של הבנקאי:

  1. מהי ההתייחסות של מטריצת הצורך?
  2. קבע אם המערכת בטוחה או לא.
  3. מה יקרה אם בקשת המשאב (1, 0, 0) עבור תהליך P1 האם המערכת יכולה לקבל בקשה זו באופן מיידי?

שנים. 2: ההקשר של מטריצת הצורך הוא כדלקמן:

צריך [i] = מקסימום [i] - הקצאה [i]
צורך ב-P1: (7, 5, 3) - (0, 1, 0) = 7, 4, 3
צורך ב-P2: (3, 2, 2) - (2, 0, 0) = 1, 2, 2
צורך ב-P3: (9, 0, 2) - (3, 0, 2) = 6, 0, 0
צורך ב-P4: (2, 2, 2) - (2, 1, 1) = 0, 1, 1
צורך ב-P5: (4, 3, 3) - (0, 0, 2) = 4, 3, 1

דפוסי תוכנת java
תהליך צוֹרֶך
א ב ג
P1 7 4 3
P2 1 2 2
P3 6 0 0
P4 0 1 1
P5 4 3 1

לפיכך, יצרנו את ההקשר של מטריצת צורך.

תשובות. 2: החל את האלגוריתם של הבנקאי:

המשאבים הזמינים של A, B ו-C הם 3, 3 ו-2.

כעת אנו בודקים אם כל סוג של בקשת משאב זמין עבור כל תהליך.

שלב 1: עבור תהליך P1:

צוֹרֶך<= available< p>

7, 4, 3<= 2 3, condition is שקר .

אז, אנחנו בוחנים תהליך אחר, P2.

שלב 2: עבור תהליך P2:

צוֹרֶך<= available< p>

1, 2, 2<= 2 3, condition נָכוֹן

חדש זמין = זמין + הקצאה

(3, 3, 2) + (2, 0, 0) => 5, 3, 2

באופן דומה, אנו בוחנים תהליך אחר P3.

שלב 3: עבור תהליך P3:

P3 צריך<= available< p>

6, 0, 0<= 2 5, 3, condition is שקר .

באופן דומה, אנו בוחנים תהליך אחר, P4.

שלב 4: עבור תהליך P4:

P4 צריך<= available< p>

0, 1, 1<= 2 5, 3, condition is נָכוֹן

משאב חדש זמין = זמין + הקצאה

5, 3, 2 + 2, 1, 1 => 7, 4, 3

באופן דומה, אנו בוחנים תהליך אחר P5.

שלב 5: עבור תהליך P5:

P5 צריך<= available< p>

4, 3, 1<= 3 7, 4, condition is נָכוֹן

משאב זמין חדש = זמין + הקצאה

7, 4, 3 + 0, 0, 2 => 7, 4, 5

כעת, אנו שוב בוחנים כל סוג של בקשת משאב עבור תהליכים P1 ו-P3.

שלב 6: עבור תהליך P1:

P1 צריך<= available< p>

7, 4, 3<= 5 7, 4, condition is נָכוֹן

משאב חדש זמין = זמין + הקצאה

7, 4, 5 + 0, 1, 0 => 7, 5, 5

אז, אנו בוחנים תהליך אחר P2.

שלב 7: עבור תהליך P3:

P3 צריך<= available< p>

6, 0, 0<= 5 7, 5, condition is true< p>

משאב חדש זמין = זמין + הקצאה

7, 5, 5 + 3, 0, 2 => 10, 5, 7

לפיכך, אנו מבצעים את האלגוריתם של הבנקאי כדי למצוא את המצב הבטוח ואת הרצף הבטוח כמו P2, P4, P5, P1 ו-P3.

אורך מיתר Java

שנים. 3: לצורך קבלת הבקשה (1, 0, 2), ראשית עלינו לבדוק זאת בַּקָשָׁה<= available< strong>, כלומר (1, 0, 2)<= (3, 3, 2), since the condition is true. so process p1 gets request immediately.< p>