logo

İşletim Sisteminde (OS) Banker Algoritması

Bu, bankacının kullandığı bir algoritmadır. kilitlenmeyi önlemek Ve kaynakları tahsis et Bilgisayar sistemindeki her işlemin güvenli bir şekilde gerçekleştirilmesi. ' S-Devleti' Her bir sürece tahsise izin verilip verilmeyeceğine karar vermeden önce olası tüm testleri veya faaliyetleri inceler. Ayrıca işletim sisteminin kaynakları tüm süreçler arasında başarılı bir şekilde paylaşmasına yardımcı olur. Bankacının algoritması, banka sisteminin tahsis kaynaklarını güvenli bir şekilde simüle etmesine yardımcı olmak için bir kişiye bir kredi tutarına yaptırım uygulanması gerekip gerekmediğini kontrol ettiği için bu adı almıştır. Bu bölümde şunları öğreneceğiz: Bankacının Algoritması detayda. Ayrıca sorunları temel alarak çözeceğiz. Bankacının Algoritması . Banker Algoritmasını anlamak için öncelikle onun gerçek bir örneğini göreceğiz.

Belirli bir bankadaki hesap sahiplerinin sayısının 'n' olduğunu ve bankadaki toplam paranın 'T' olduğunu varsayalım. Hesap sahibi kredi başvurusunda bulunursa; Banka öncelikle kredi tutarını tam nakitten çıkarır ve daha sonra kredi tutarını onaylamak için nakit farkının T'den büyük olduğunu tahmin eder. Bu adımlar, başka bir kişinin kredi başvurusunda bulunması veya bankadan bir miktar para çekmesi durumunda, bankanın, bankacılık sisteminin işlevselliğinde herhangi bir kısıtlama olmaksızın her şeyi yönetmesine ve işletmesine yardımcı olması nedeniyle atılmaktadır.

Benzer şekilde, bir şekilde çalışır işletim sistemi . Bir bilgisayar sisteminde yeni bir süreç oluşturulduğunda, sürecin işletim sistemine yaklaşan süreçler, kaynaklarına yönelik istekler, sayılmaları ve gecikmeler gibi her türlü bilgiyi sağlaması gerekir. Bu kriterlere dayanarak işletim sistemi, sistemde kilitlenme yaşanmaması için hangi işlem sırasının yürütülmesi veya beklenmesi gerektiğine karar verir. Bu nedenle aynı zamanda olarak da bilinir. kilitlenmeden kaçınma algoritması veya kilitlenme tespiti işletim sisteminde.

Avantajları

Banker algoritmasının temel özellikleri şunlardır:

  1. Her sürecin gereksinimlerini karşılayan çeşitli kaynakları içerir.
  2. Her süreç, yaklaşan kaynak istekleri, kaynak sayısı ve kaynakların ne kadar süreyle tutulacağı konusunda işletim sistemine bilgi sağlamalıdır.
  3. İşletim sisteminin, bilgisayar sistemindeki her kaynak türü için süreç isteklerini yönetmesine ve kontrol etmesine yardımcı olur.
  4. Algoritma, her işlemin bir sistemdeki maksimum sayıda kaynağı tutabileceğini gösteren bir Maksimum kaynak niteliğine sahiptir.

Dezavantajları

  1. Sabit sayıda işlem gerektirir ve işlem yürütülürken sistemde hiçbir ek işlem başlatılamaz.
  2. Algoritma artık süreçlerin görevlerini yerine getirirken maksimum ihtiyaçlarını değiştirmesine izin vermiyor.
  3. Her prosesin sistem için maksimum kaynak gereksinimlerini önceden bilmesi ve belirtmesi gerekir.
  4. Kaynak taleplerinin sayısı sınırlı bir sürede verilebilir ancak kaynakların tahsisine ilişkin süre sınırı bir yıldır.

Bir bankacının algoritmasıyla çalışırken üç şey hakkında bilgi sahibi olmak istenir:

  1. Sistemdeki her kaynak için her sürecin ne kadar talep edebileceği. [ ile gösterilir MAKS ] rica etmek.
  2. Her bir işlemin şu anda bir sistemdeki her bir kaynağı ne kadar tuttuğu. [ ile gösterilir TAHSİS EDİLDİ ] kaynak.
  3. Sistemde mevcut olan her kaynağın sayısını temsil eder. [ ile gösterilir MEVCUT ] kaynak.

Bankacının algoritmasında uygulanan önemli veri yapıları terimleri aşağıda verilmiştir:

N'nin işlem sayısı olduğunu ve m'nin bir bilgisayar sisteminde kullanılan her kaynak türünün sayısı olduğunu varsayalım.

    Mevcut: Sistemde mevcut olan her kaynak türünü tanımlayan 'm' uzunluğunda bir dizidir. Mevcut[j] = K olduğunda, R[j] Kaynak tipinin 'K' örneklerinin sistemde mevcut olduğu anlamına gelir.Maksimum:Bu, her bir P[i] işleminin bir sistemde maksimum sayıda kaynak R[j] (her tür) depolayabildiğini gösteren bir [n x m] matrisidir.Paylaştırma:Sistemdeki her bir sürece halihazırda tahsis edilen kaynakların türünü gösteren mxn siparişlerden oluşan bir matristir. Tahsis [i, j] = K olduğunda, bu, P[i] prosesine halihazırda sistemde R[j] Kaynak tipinin K örneğine tahsis edildiği anlamına gelir.İhtiyaç:Her işlem için kalan kaynakların sayısını temsil eden bir M x N matris dizisidir. İhtiyaç[i] [j] = k olduğunda, P[i] süreci, atanan işi tamamlamak için Rj tipi kaynak türlerinin K kadar daha örneğini gerektirebilir.
    Nedd[i][j] = Maks[i][j] - Tahsis[i][j].Sona ermek: Düzenin vektörüdür M . Sürecin istenen kaynaklara tahsis edilip edilmediğini ve görevi tamamlandıktan sonra tüm kaynakların serbest bırakılıp bırakılmadığını gösteren bir Boole değeri (doğru/yanlış) içerir.

Banker Algoritması, süreçleri kontrol etmek ve sistemdeki kilitlenmeyi önlemek için güvenlik algoritması ile kaynak isteği algoritmasının birleşimidir:

Güvenlik Algoritması

Bir sistemin güvenli durumda olup olmadığını veya bankacı algoritmasındaki güvenli sırayı takip edip etmediğini kontrol etmek için kullanılan bir güvenlik algoritmasıdır:

1. İki vektör var Wok Ve Sona ermek bir güvenlik algoritmasında m ve n uzunluğundadır.

Başlatma: Çalışma = Mevcut
Bitiş[i] = yanlış; ben = 0, 1, 2, 3, 4… n - 1 için.

2. Her tür kaynak [i] için kullanılabilirlik durumunu kontrol edin, örneğin:

İhtiyacım var]<= work
Bitir[i] == yanlış
i yoksa 4. adıma geçin.

3. İş = İş + Tahsis(i) // yeni kaynak tahsisi almak için

Bitiş[i] = doğru

Bir sonraki işlem için kaynak kullanılabilirliği durumunu kontrol etmek üzere 2. adıma gidin.

4. Eğer Bitiş[i] == doğru ise; sistemin tüm işlemler için güvenli olduğu anlamına gelir.

Kaynak İsteği Algoritması

Bir kaynak isteği algoritması, bir süreç bir sistemdeki her tür kaynak isteğini bir istek matrisi olarak yaptığında sistemin nasıl davranacağını kontrol eder.

Her P[i] işlemi için bir kaynak istek dizisi R[i] oluşturalım. Kaynak Talebi iseBen[j] 'K'ye eşittir; bu, P[i] sürecinin sistemde R[j] Kaynak tipinin 'k' örneğini gerektirdiği anlamına gelir.

1. Sayısı ne zaman talep edilen kaynaklar her türden daha azdır İhtiyaç kaynaklar için 2. adıma gidin ve eğer koşul başarısız olursa, bu P[i] sürecinin kaynak için maksimum talebini aştığı anlamına gelir. İfadenin önerdiği gibi:

Eğer Talep(i)<= need
2. adıma gidin;

2. Ve her türden istenen kaynakların sayısı, her süreç için mevcut kaynaktan az olduğunda (3) adıma gidin. İfadenin önerdiği gibi:

Eğer Talep(i)<= available
Aksi halde, P[i] Süreci kaynağın kullanıma uygun olmaması nedeniyle beklemesi gerekir.

3. Talep edilen kaynak durum değiştirilerek sürece tahsis edildiğinde:

Mevcut = Mevcut - Talep
Tahsis(i) = Tahsis(i) + Talep (i)
İhtiyaçBen= İhtiyaçBen- Rica etmekBen

Kaynak tahsis durumu güvenli olduğunda, kaynakları P(i) sürecine tahsis edilir. Ve eğer yeni durum güvenli değilse, P(i) Sürecinin her R(i) İsteği türünü beklemesi ve eski kaynak tahsisi durumunu geri yüklemesi gerekir.

Örnek: Beş P1, P2, P3, P4, P5 sürecini ve üç A, B ve C kaynak türünü içeren bir sistem düşünün. Kaynak türleri aşağıda verilmiştir: A'nın 10, B'nin 5 ve C kaynak türünün 7 örneği vardır.

İşlem Paylaştırma
ABC
Maksimum
ABC
Mevcut
ABC
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

Bankacının algoritmasını kullanarak aşağıdaki soruları yanıtlayın:

  1. İhtiyaç matrisinin referansı nedir?
  2. Sistemin güvenli olup olmadığını belirleyin.
  3. P1 süreci için kaynak isteği (1, 0, 0) sistem bu isteği hemen kabul ederse ne olur?

Yıllar. 2: İhtiyaç matrisinin içeriği aşağıdaki gibidir:

İhtiyaç [i] = Maksimum [i] - Tahsis [i]
P1 İhtiyacı: (7, 5, 3) - (0, 1, 0) = 7, 4, 3
P2 İhtiyacı: (3, 2, 2) - (2, 0, 0) = 1, 2, 2
P3 İhtiyacı: (9, 0, 2) - (3, 0, 2) = 6, 0, 0
P4 İhtiyacı: (2, 2, 2) - (2, 1, 1) = 0, 1, 1
P5 İhtiyacı: (4, 3, 3) - (0, 0, 2) = 4, 3, 1

İşlem İhtiyaç
ABC
P1 7 4 3
P2 1 2 2
P3 6 0 0
P4 0 1 1
P5 4 3 1

Böylece ihtiyaç matrisinin içeriğini oluşturduk.

Cevap. 2: Banker Algoritmasını Uygulayın:

A, B ve C'nin Mevcut Kaynakları 3, 3 ve 2'dir.

Şimdi her işlem için her tür kaynak isteğinin mevcut olup olmadığını kontrol ediyoruz.

Aşama 1: P1 Süreci için:

İhtiyaç<= available< p>

7, 4, 3<= 2 3, condition is YANLIŞ .

Yani başka bir süreci inceliyoruz, P2.

Adım 2: P2 Süreci için:

İhtiyaç<= available< p>

1, 2, 2<= 2 3, condition doğru

Yeni mevcut = mevcut + Tahsis

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

Benzer şekilde başka bir P3 sürecini inceliyoruz.

Aşama 3: P3 Süreci için:

P3 İhtiyacı<= available< p>

6, 0, 0<= 2 5, 3, condition is YANLIŞ .

Benzer şekilde başka bir süreci inceliyoruz, P4.

Adım 4: P4 Süreci için:

P4 İhtiyacı<= available< p>

0, 1, 1<= 2 5, 3, condition is doğru

Yeni Kullanılabilir kaynak = Kullanılabilir + Tahsis

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

Benzer şekilde başka bir P5 sürecini inceliyoruz.

Adım 5: P5 Süreci için:

P5 İhtiyacı<= available< p>

4, 3, 1<= 3 7, 4, condition is doğru

Yeni kullanılabilir kaynak = Kullanılabilir + Tahsis

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

Şimdi P1 ve P3 süreçleri için her tür kaynak isteğini tekrar inceliyoruz.

Adım 6: P1 Süreci için:

P1 İhtiyacı<= available< p>

7, 4, 3<= 5 7, 4, condition is doğru

Yeni Kullanılabilir Kaynak = Kullanılabilir + Tahsis

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

Yani başka bir P2 sürecini inceliyoruz.

Adım 7: P3 Süreci için:

P3 İhtiyacı<= available< p>

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

Yeni Kullanılabilir Kaynak = Kullanılabilir + Tahsis

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

Bu nedenle, güvenli durumu ve P2, P4, P5, P1 ve P3 gibi güvenli sırayı bulmak için bankacının algoritmasını uygularız.

java koleksiyonları java

Yıllar. 3: İsteği (1, 0, 2) vermek için önce şunu kontrol etmeliyiz Rica etmek<= available< strong>yani (1, 0, 2)<= (3, 3, 2), since the condition is true. so process p1 gets request immediately.< p>