logo

Алгоритм банкіра в операційній системі (ОС)

Це звиклий алгоритм банкіра уникнути глухого кута і розподілити ресурси безпечно для кожного процесу в комп’ютерній системі. ' S-State' перевіряє всі можливі тести або дії, перш ніж вирішити, чи слід дозволити розподіл для кожного процесу. Це також допомагає операційній системі успішно розподіляти ресурси між усіма процесами. Алгоритм банкіра названий тому, що він перевіряє, чи потрібно на особу накладати санкції на суму кредиту чи ні, щоб допомогти банківській системі безпечно симулювати розподіл ресурсів. У цьому розділі ми дізнаємося Алгоритм банкіра детально. Також ми будемо вирішувати задачі на основі Алгоритм банкіра . Щоб зрозуміти Алгоритм Банкіра, ми спочатку побачимо його реальний словесний приклад.

Припустимо, що кількість власників рахунків у конкретному банку дорівнює «n», а загальна сума грошей у банку дорівнює «T». Якщо власник рахунку звертається за кредитом; спочатку банк віднімає суму позики від повної готівки, а потім оцінює різницю в готівці більше, ніж T, щоб затвердити суму позики. Ці кроки вживаються тому, що якщо інша особа подає заявку на отримання кредиту або знімає певну суму в банку, це допомагає банку керувати всіма речами без будь-яких обмежень у функціональності банківської системи.

Так само це працює в операційна система . Коли в комп’ютерній системі створюється новий процес, він повинен надавати операційній системі всі види інформації, як-от майбутні процеси, запити на їхні ресурси, їх підрахунок і затримки. На основі цих критеріїв операційна система вирішує, яку послідовність процесів слід виконати або почекати, щоб у системі не виникло взаємоблокування. Тому він також відомий як алгоритм уникнення тупикових ситуацій або виявлення взаємоблокувань в операційній системі.

Переваги

Нижче наведені основні характеристики алгоритму Банкіра:

  1. Він містить різні ресурси, які відповідають вимогам кожного процесу.
  2. Кожен процес повинен надавати операційній системі інформацію про майбутні запити ресурсів, кількість ресурсів і тривалість ресурсів.
  3. Це допомагає операційній системі керувати та контролювати запити процесу для кожного типу ресурсу в комп’ютерній системі.
  4. Алгоритм має атрибут Max resource, який означає, що кожен процес може містити максимальну кількість ресурсів у системі.

Недоліки

  1. Для цього потрібна фіксована кількість процесів, і жодні додаткові процеси не можуть бути запущені в системі під час виконання процесу.
  2. Алгоритм більше не дозволяє процесам обмінюватися максимальними потребами під час обробки своїх завдань.
  3. Кожен процес повинен заздалегідь знати та вказувати свої максимальні вимоги до ресурсів для системи.
  4. Кількість запитів на ресурси може бути надано протягом обмеженого часу, але обмеження часу для розподілу ресурсів становить один рік.

Під час роботи з алгоритмом банкіра він запитує інформацію про три речі:

  1. Скільки кожен процес може запитувати для кожного ресурсу в системі. Він позначається [ МАКС ] запит.
  2. Скільки кожен процес утримує кожен ресурс у системі. Він позначається [ ВИДІЛЕНО ] ресурс.
  3. Він представляє кількість кожного ресурсу, доступного в даний момент в системі. Він позначається [ В НАЯВНОСТІ ] ресурс.

Нижче наведено важливі терміни структур даних, які застосовуються в алгоритмі банкіра:

Припустимо, що n — кількість процесів, а m — кількість ресурсів кожного типу, які використовуються в комп’ютерній системі.

    в наявності: це масив довжини 'm', який визначає кожен тип ресурсу, доступного в системі. Якщо Available[j] = K, це означає, що в системі доступні K екземплярів типу Resources 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].Закінчити: Це вектор порядку м . Він містить логічне значення (true/false), яке вказує, чи було процесу виділено запитані ресурси, і чи всі ресурси було звільнено після завершення його завдання.

Алгоритм банкіра - це комбінація алгоритму безпеки та алгоритму запиту ресурсів для керування процесами та уникнення тупикової ситуації в системі:

Алгоритм безпеки

Це алгоритм безпеки, який використовується для перевірки того, чи перебуває система в безпечному стані чи дотримується безпечної послідовності в алгоритмі банкіра:

1. Є два вектори Вок і Закінчити довжини m і n в безпечному алгоритмі.

Ініціалізація: Робота = Доступно
Finish[i] = false; для I = 0, 1, 2, 3, 4… n - 1.

2. Перевірте статус доступності для кожного типу ресурсів [i], наприклад:

потрібно[я]<= work
Finish[i] == false
Якщо i не існує, перейдіть до кроку 4.

3. Робота = Робота +Розподіл(i) // для отримання нового розподілу ресурсу

Finish[i] = істина

Перейдіть до кроку 2, щоб перевірити статус доступності ресурсу для наступного процесу.

4. Якщо Finish[i] == true; це означає, що система безпечна для всіх процесів.

Алгоритм запиту ресурсу

Алгоритм запиту ресурсу перевіряє, як система поводитиметься, коли процес робить кожен тип запиту ресурсу в системі як матрицю запиту.

Створимо масив запитів ресурсів R[i] для кожного процесу P[i]. Якщо запит ресурсуi[j] дорівнює 'K', що означає, що процес P[i] вимагає 'k' екземплярів типу Resources R[j] у системі.

1. При кількості запитані ресурси кожного типу менше, ніж потреба ресурси, перейдіть до кроку 2 і, якщо умова не виконується, що означає, що процес P[i] перевищує максимальну вимогу щодо ресурсу. Як підказує вираз:

Якщо запит(i)<= need
Перейти до кроку 2;

2. І коли кількість запитуваних ресурсів кожного типу менше, ніж доступний ресурс для кожного процесу, перейдіть до кроку (3). Як підказує вираз:

Якщо запит(i)<= available
Інакше процес P[i] повинен чекати на ресурс, оскільки він недоступний для використання.

3. Коли запитуваний ресурс виділяється процесу шляхом зміни стану:

Доступно = Доступно - Запит
Розподіл (i) = Розподіл (i) + Запит (i)
потребаi= Потребаi- Запитi

Коли стан розподілу ресурсів безпечний, його ресурси виділяються процесу P(i). І якщо новий стан небезпечний, процес P (i) повинен чекати кожного типу запиту R (i) і відновлювати старий стан розподілу ресурсів.

приклад: Розглянемо систему, яка містить п’ять процесів P1, P2, P3, P4, P5 і три типи ресурсів A, B і C. Нижче наведено типи ресурсів: A має 10, B має 5 і тип ресурсу C має 7 примірників.

процес Виділення
A B C
Макс
A B C
в наявності
A B C
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

процес потреба
A B C
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.

років. 3: Щоб задовольнити Запит (1, 0, 2), спочатку ми повинні це перевірити запит<= available< strong>, тобто (1, 0, 2)<= (3, 3, 2), since the condition is true. so process p1 gets request immediately.< p>


фрагмент java масиву