logo

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

Това е алгоритъм на банкера, използван за избягвайте задънена улица и разпределят ресурси безопасно за всеки процес в компютърната система. ' S-състояние разглежда всички възможни тестове или дейности, преди да реши дали разпределението трябва да бъде разрешено за всеки процес. Освен това помага на операционната система успешно да споделя ресурсите между всички процеси. Алгоритъмът на банкера е наречен, защото проверява дали дадено лице трябва да бъде санкционирано за сума на заема или не, за да помогне на банковата система безопасно да симулира ресурси за разпределение. В този раздел ще научим Алгоритъм на банкера подробно. Освен това ще решаваме проблеми въз основа на Алгоритъм на банкера . За да разберем алгоритъма на банкера, първо ще видим реален пример за него.

Да предположим, че броят на притежателите на сметки в определена банка е 'n', а общите пари в банката са 'T'. Ако титуляр кандидатства за кредит; първо, банката изважда сумата на кредита от пълните парични средства и след това изчислява, че разликата в паричните средства е по-голяма от T, за да одобри сумата на кредита. Тези стъпки се предприемат, защото ако друго лице кандидатства за заем или изтегли някаква сума от банката, това помага на банката да управлява и управлява всички неща без никакви ограничения във функционалността на банковата система.

По същия начин работи в операционна система . Когато се създава нов процес в компютърна система, процесът трябва да предостави всички видове информация на операционната система като предстоящи процеси, заявки за техните ресурси, тяхното преброяване и закъснения. Въз основа на тези критерии операционната система решава коя последователност от процеси трябва да бъде изпълнена или изчакана, така че в системата да не възникне блокиране. Поради това е известен още като алгоритъм за избягване на блокиране или откриване на безизходица в операционната система.

Предимства

Следват основните характеристики на алгоритъма на банкера:

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

Недостатъци

  1. Той изисква фиксиран брой процеси и не могат да бъдат стартирани допълнителни процеси в системата, докато се изпълнява процесът.
  2. Алгоритъмът вече не позволява на процесите да обменят максималните си нужди, докато обработват задачите си.
  3. Всеки процес трябва да знае и да заяви своите максимални изисквания за ресурси предварително за системата.
  4. Броят заявки за ресурси може да бъде предоставен за ограничено време, но срокът за разпределяне на ресурсите е една година.

Когато работи с алгоритъм на банкер, той иска да знае за три неща:

  1. Колко всеки процес може да поиска за всеки ресурс в системата. Означава се с [ МАКС ] заявка.
  2. Колко всеки процес в момента държи всеки ресурс в системата. Означава се с [ РАЗПРЕДЕЛЕН ] ресурс.
  3. Той представлява броя на всеки ресурс, наличен в момента в системата. Означава се с [ НА РАЗПОЛОЖЕНИЕ ] ресурс.

Следват важните термини на структурите от данни, прилагани в алгоритъма на банкера, както следва:

if и else в bash

Да предположим, че 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] = Макс[i][j] - Разпределение[i][j].завършек: Това е векторът на реда м . Той включва булева стойност (вярно/невярно), показваща дали процесът е бил разпределен към заявените ресурси и всички ресурси са били освободени след завършване на задачата му.

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

Алгоритъм за безопасност

Това е алгоритъм за безопасност, използван за проверка дали системата е в безопасно състояние или следва безопасната последователност в алгоритъма на банкера:

1. Има два вектора Уок и завършек с дължина m и n в алгоритъм за безопасност.

Инициализиране: Работа = Налично
Finish[i] = невярно; за I = 0, 1, 2, 3, 4… n - 1.

2. Проверете състоянието на наличност за всеки тип ресурси [i], като например:

нужда[аз]<= work
Finish[i] == невярно
Ако i не съществува, преминете към стъпка 4.

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

Finish[i] = вярно

Преминете към стъпка 2, за да проверите състоянието на наличност на ресурс за следващия процес.

4. Ако Finish[i] == true; това означава, че системата е безопасна за всички процеси.

Алгоритъм за заявка на ресурси

Алгоритъмът за заявка на ресурс проверява как ще се държи системата, когато даден процес направи всеки тип заявка за ресурс в системата като матрица на заявка.

Нека създадем масив от заявки за ресурси R[i] за всеки процес P[i]. Ако Заявката за ресурсi[j] е равно на 'K', което означава, че процесът P[i] изисква 'k' екземпляра на ресурси тип 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>