34
BÖLÜM 8 DEADLOCKS

BÖLÜM 8

  • Upload
    tiara

  • View
    50

  • Download
    0

Embed Size (px)

DESCRIPTION

BÖLÜM 8. DEADLOCKS. İçerik. Kilitlenme Problemi Sistem Modeli Deadlock Karakterizasyonu Kilitlenmeyi Yakalama Metotları Kilitlenmeyi Önleme Kilitlenmeden Kaçınma Kilitlenmeyi Tespit Kilitlenmeden Geri Dönme. Sistem Modeli. - PowerPoint PPT Presentation

Citation preview

Page 1: BÖLÜM 8

BÖLÜM 8

DEADLOCKS

Page 2: BÖLÜM 8

İçerik• Kilitlenme Problemi• Sistem Modeli• Deadlock Karakterizasyonu• Kilitlenmeyi Yakalama Metotları• Kilitlenmeyi Önleme• Kilitlenmeden Kaçınma• Kilitlenmeyi Tespit • Kilitlenmeden Geri Dönme

Page 3: BÖLÜM 8

Sistem Modeli• Sistemde sınırlı sayıda kaynak vardır ve bu kaynaklar belli sayıda proses tarafından

paylaşılarak kullanılırlar. • Bir proses bir kaynağı kullanıp bırakmadan önce o kaynağı kullanmak için istekte bulunmalıdır. • Bir proses işini tamamlamak için birden fazla kaynak talebinde bulunabilir. Fakat bu isteklerin

sayısı sistemde tanımlı toplam cihaz sayısını geçemez. Başka bir deyişle eğer sistemde 2 printer var ise proses 3 printer isteyemez.

• Normal işletimde kaynak kullanımı şu şekilde gerçekleşir : – Request : Proses kaynağı kullanmak için istekte bulunur. – Use: Proses kaynağı kullanır– Release : Proses kaynağı serbest bırakır.

• İstek ve kaynağı serbest bırakma system calls aracılığı ile gerçekleşir:– Request device – release device , open/close file , allocate /free memory vb..

• Deadlock aynı kaynakların isteği veya farklı kaynakların isteği durumunda oluşabilir. 3 proses sistemdeki 3 tape drive ‘ı tutuyor ve işlerini tamamlamak için bir 2. tape drive ‘a ihtiyaçları var veya 2 proses işlerini tamamlamak için 1 ‘er adet tape drive ve 1 ‘er adet printer ‘a ihtiyaç duyuyor. Proseslerden birisi tape drive ‘ı tutuyor , diğeri printer ‘ı tutuyor.

Page 4: BÖLÜM 8

Deadlock Karakterizasyonu

• Blok duruma geçmiş iki proses işletimlerinin devamı için birbirlerinin kaynaklarına ihtiyaç duyarlarsa sistem kilitlenme durumundadır.

• Deadlock oluşması durumunda proses işletimini hiçbir zaman tamamlayamayacak , sistem kaynakları düğümlenecek bu da diğer proseslerin çalışmalarını engelleyecek veya hiç çalışamamalarına sebep olacaktır.

Page 5: BÖLÜM 8

Deadlock Problemi

• Örnek:– Sistemde 2 tape drive vardır.– P1 ve P2 herbiri bir tane tape drive’a sahiptir ve diğerine

ihtiyaç duyar.

• Örnek: – Semaphore A=1 ve B=1

P0 P1

wait (A); wait(B)wait (B); wait(A)

Page 6: BÖLÜM 8

Gerekli Durumlar1. Mutual Exclusion (paylaşımı reddetme)

En azından bir kaynak paylaşılamaz moddadır yani o kaynağı aynı anda sadece 1 proses kullanabilir. Başka bir proses bu kaynağı kullanmak isterse kaynak release olana kadar beklemelidir.

2. Hold and Wait (Tut ve Bekle)Bir kaynağı tutan bir proses olmalıdır ve bu kaynak işini tamamlamak için başka bir proses tarafından tutulan diğer bir kaynağa ihtiyaç duymaktadır.

3. No Preemption (Ele Geçirememek) Kaynaklar ele geçirilememektedir. Kaynak sadece kendisini tutan prosesin işini tamamlaması ve sonrasında izni ile serbest hale geçebilir.

4. Circular Wait (Döngüsel Bekleme)Sistemde P0 , P1 , P2 , Pn proses olsun. P0 , P1 tarafından tutulmuş kaynağı ; P1 , P2 tarafından tutulmuş kaynağı .. Pn , P0 tarafından tutulmuş kaynağı bekler.

Page 7: BÖLÜM 8

Kaynak Paylaşım Şeması

• Kilitenmeler, System Resource Allocation Graph kullanılarak daha kesin bir şekilde gözlenebilirler. G(V(Düşey) ,E(Kenar) ) bileşenlerinden oluşur.

• E: Proses ve prosesin kullanmak istediğini kaynak bileşenlerinden oluşur.

• P=P1,P2,P3• R=r1,r2,r3,r4

– E=(p1,r1),(P2,r3) ,(r1,p2) , (r2,P2) ,(r2,P1),(r3,P3)

Page 8: BÖLÜM 8

...

ProcessResource Type with 4 instances

Pi requests instance of Rj

Pi is holding an instance of RjPi

PiRj

Rj

Page 9: BÖLÜM 8

Kaynak Paylaşım Örneği

Page 10: BÖLÜM 8

Kilitlenme Durumu

Sistemde iki döngüsel bekleme var. P1, P2 ve P3 prosesleri kilitlenme durumundadır.

Page 11: BÖLÜM 8

Döngüsel Beklemede, Kilitlenme yok

Sistemde tek bir döngüsel bekleme var. Aşağıdaki döngüsel beklemeye göre Kilitlenme yoktur.

Page 12: BÖLÜM 8

...

• Eğer grafta döngü yoksa kilitlenme de yoktur. • Eğer grafta bir döngü varsa

– Her kaynaktan 1 örnek varsa kilitlenme oluşur. – Her kaynaktan birden fazla örnek varsa kilitlenme

olasılığı vardır.

Page 13: BÖLÜM 8

Kilitlenmeden Kurtulma

• Temelde 2 çeşit kilitlenme ile mücadele yöntemi vardır: – Sistemin asla deadlock durumuna düşmeyeceği bir

protokol kullanabiliriz – veya alternatif olarak sistemin deadlocka girmesine izin

verir daha sonra kurtarma operasyonu gerçekleştiririz. • Kilitlenme durumuna düşmesini engellemenin 2

bilinen metodu vardır : – Deadlock Prevention (önleme) – ve Deadlock Avoidance (kaçınma)

Page 14: BÖLÜM 8

Kilitlenmeyi Engelleme• Mutual Exclusion –

– Prosesler paylaşılabilir kaynaklar için sırada beklemezler. Eğer kaynakları mümkün olduğunca paylaşılabilir yapabilirsek kilitlenmeyi bir derece önlemiş oluruz. (Readonly dosyalar bu durumda kilitlenme için kötü örneklerdir.)

• Hold and Wait – – Bir proses bir kaynağı kullanmak istediğinde bir başka prosesin o kaynağı tutmadığından

emin olduktan sonra kaynağın kullanımına izin verebiliriz. Bir proses işletilmeye başlanmadan önce kullanacağı bütün kaynaklar kendisine verilebilir.

– Bir başka alternatif protokol de proseslere kaynak kullanımını eğer o proses başka bir kaynağı kullanmıyor ise vermektir. Bir proses bir kaynak kullanımını istemeden önce kullandığı diğer tüm kaynakları serbest bırakmış olmalıdır.

Page 15: BÖLÜM 8

...• No Preemption –

– 3.Koşul kullanılmak istenen kaynakların kullanımda olması nedeni ile ele geçirilememesi kullanımına başlanamaması idi.

– Bu durumun oluşmaması için izleyeceğimiz yol;• Eğer bir proses bir kaynağı kullanıyorsa ve yeni bir kaynağı kullanmak istiyorsa, bu

yeni kullanmak istediği kaynağı belli bir süre kullanamayacaksa, tutmuş olduğu kaynağı da serbest bırakmalıdır.

• Proses bekleme konumuna geçer ve belli bir süre sonra serbest bıraktığı kaynağı tekrar ele geçirir ve kullanacağı yeni kaynağın elverişliliğine bakar.

• Circular Wait – – Circular wait oluşumunu engellemek için tüm kaynakların kullanımında her birine bir id vermeliyiz. Bu

id ile kaynaklara öncelik tanımalı, kaynakları kıyaslayabilmeliyiz. – Bir proses aynı anda 2 kaynak kullanımı istediğinde öncelikle daha yüksek id ‘li kaynakları kullansın.

Bu bir prosesin aynı anda 2 aynı tip kaynağı kullanmasını engellememize yardımcı olacaktır. Hızlı cihazların öncelikli kullanımı sağlayabiliriz.

Page 16: BÖLÜM 8

Kilitlenmeden Sakınma• Basit ve en kullanışlı olan model, her prosesin, ihtiyaç

duyabileceği her tipteki kaynaktan “maksimum sayı” belirtmesidir.

• Kilitlenmeden sakınma algoritması, dinamik olarak kaynak yerleşim durumunu, döngüsel beklemeye düşmemek için test eder.

• Kaynak yerleşim durumu, uygun olan ve tahsis edilmiş kaynak sayısı ile tanımlanır.

Page 17: BÖLÜM 8

Safe State (Güvenli Durum)• Bir proses, uygun olan kaynaktan istekte bulunduğunda, sistem kaynak yerleşim

işinin sistemi güvenilir durumda bırakacağını tespit etmelidir.• Tüm proseslerin işletimi güvenilir ise sistem güvenilir durumdadır.• Örnek:

– Sistemde 12 tape drive ve 3 proses(P0, P1, P2) var.

Maksimum İhtiyaç Mevcut İhtiyaçP0 10 5P1 4 2P2 9 2

• Başlangıta sistem güvenilir durumdadır ve 3 adet boş kaynak vardır.• P1, tüm tape drivelarını alır, kullanır ve sisteme geri iade eder. (Sistemde boşta 5

kaynak olmuş olur)• P0 tüm kaynaklarını alabilir ve sonra geri iade eder.(Sistemde boşta 10 kaynak

olmuş olur)• Son olarak da P2 kaynaklarının tümünü alır ve iade eder.(Son olarak sistemde yine

12 kaynak bulunur)

Page 18: BÖLÜM 8

Safe, Unsafe, Deadlock State

Page 19: BÖLÜM 8

Temelde

• Sistem güvenli durumda ise kilitlenme yoktur. • Sistem unsafe durumda çalışıyor ise kilitlenme

olasılığı vardır. • Kilitlenmeden kaçınmak demek, sistemin unsafe

duruma düşmemesini garanti altına almak demektir.

Page 20: BÖLÜM 8

Bankers Algorithm• Yeni bir proses sisteme dahil olduğunda her tip kaynaktan

maksimum kaç adet kullanacağını deklare eder. • Bu sayı sistemdeki ilgili kaynak toplam kaynak miktarını

aşamaz. • Proses kaynak kullanımını istediğinde eğer kaynakların tahsisi

durumunda safe state koşulu sağlanıyorsa kaynaklar tahsis edilir.

• Aksi taktirde kaynakların tahsisinden sonra safe state durumunu sağlayacak kadar kaynak elverişli duruma gelene kadar beklenir.

Page 21: BÖLÜM 8

Bankers Algorithm• N sistemdeki proses sayısı ve m sistemdeki kaynak sayısı iken şu verileri

dikkate almamız gerekir: – Available: her tipteki uygun kaynak sayısını belirtir m boyutlu bir vektördür.

Available[j]=k, Rj kaynağından uygun durumda bulunan k tane örnek var demektir.

– Max: n*m boyutlu matris. Her proses için kullanılabilecek maksimum kaynak sayısı. Max[i,j]=k, Pi maksimum k adet rj isteyebilir demektir.

– Allocation: n*m boyutlu matris, her prosesin kullanmakta olduğu kaynak sayısını belirtir. Allocation[i,j]=k, Proses Pi , rj kaynaklarından k adedini kullanmaktadır demektir.

– Need: n*m boyutlu matris prosesin tamamlanması için ihtiyaç duyulan kaynak adedi. Need[i,j]=k ,Pi prosesi işletimini tamamlamak için k tane daha Rj kaynağına ihtiyaç duymaktadır demektir.Need[i,j]=Max[i,j]-Allocation[i,j]

Page 22: BÖLÜM 8

Bankers Algorithm

• Safety Algorithm: Sistemin safe state ‘de çalışıp çalışmadığını bulan algoritmadır.

Page 23: BÖLÜM 8

Bankacılar Alg.• Resource-Request (Kaynak-Talep) Algortihm

Page 24: BÖLÜM 8

Bankacılar Alg. Örnek• P0 ’dan P4 e kadar 5 proses var. Kaynak A’dan 10 örnek var,

B (5 örnek) ve C (7 örnek).• T0 zamanındaki durum:

Allocation Max Available A B C A B C A B C

P0 0 1 0 7 5 3 3 3 2P1 2 0 0 3 2 2 P2 3 0 2 9 0 2P3 2 1 1 2 2 2P4 0 0 2 4 3 3

Page 25: BÖLÜM 8

Örn..• Need belirlenir: Max – Allocation.

NeedA B C

P0 7 4 3 P1 1 2 2 P2 6 0 0 P3 0 1 1 P4 4 3 1

• Sistem < P1, P3, P4, P2, P0> sırasında güvenli durum sağlandığı sürece güvenli durumdadır.

Page 26: BÖLÜM 8

Örn...• Request Available (örnek olarak, P1,1 tane A 2 tane de C kaynağı istediği

zaman (1,0,2) (3,3,2) true olduğunu kontrol et

Allocation Need Available A B C A B C A B C P0 0 1 0 7 4 3 2 3 0 P1 3 0 2 0 2 0 P2 3 0 1 6 0 0 P3 2 1 1 0 1 1P4 0 0 2 4 3 1

P1 isteği karşılandığında P4 prosesinden (3,3,0 ) isteği geliyor karşılanır mı?

Page 27: BÖLÜM 8

Deadlock detection

• İşletim sistemi kilitlenmeden sakınma ve önleme algoritmaları kullanmıyor ise kilitlenme oluşur. Bu durumda sistem şunları sağlamalıdır:– Sistemin kilitlenme durumunu tespit eden bir

algoritma– Kilitlenmeden geri dönen bir algoritma

Page 28: BÖLÜM 8

Her kaynaktan tek bir örnek var ise• Resource allocation graph wait for graph’a dönüştürülerek karar verilir:• Wait-for graph’ta sadece döngü var ise sistem kilitlenir• İşletim sistemi bu döngüyü kontrol eden bir algoritmayı periyodik olarak

çalıştırmalıdır.

Page 29: BÖLÜM 8

Her kaynaktan birden çok örnek var ise

• Her kaynaktan birden çok örnek olduğu durumda wait-for graph çözüm değildir. Bu durumda bankacılar algoritması benzeri bir algoritma ile çözüm sağlanır.

Page 30: BÖLÜM 8

Her kaynaktan birden çok örnek var ise• Veri yapıları:

Page 31: BÖLÜM 8

Örnek • Sistemde 5 proses var

– P0,P1,P2,P3,P5

• 3 kaynak var – A(7 adet), B(2 adet),C(6 adet)

• T0 zamanında kaynak yerleşim durumu:

• Algoritma işletilir ise <P0,P2,P3,P1,P4> sırasında tüm i’ler için finish[i]==true ile sonuçlanır. Sistem deadlock durumuna düşmez. Bu zamanda P2 bir tane daha C kaynağı isteğinde bulunur ise kilitlenme gerçekleşir.

Page 32: BÖLÜM 8

Kilitlenmenin Düzeltilmesi• Kilitlenmeyi tespit algoritmaları sistemde kilitlenme

tespit edildiğinde, yapılması muhtemel birtakım hareketler vardır. – Bunlardan birisi sistemde yetkili kişiye deadlock

oluştuğunun bildirilmesidir. – Bir diğeri sistemin otomatik olarak deadlock recovery

yapmasıdır. • Düzeltme için 2 temel yol vardır :

– Bunlardan basit olanı proses sonlandırmaktır. – Bir diğeri kaynakları serbest bırakmaktır.

Page 33: BÖLÜM 8

...Prosesin Sonlandırılması– Kilitlenmiş durumdaki tüm prosesler sonlandırılır. – Bir prosesi sonlandır. Deadlock incele

• Proses sonlandırılırken hangisinin sonlandırılacağının seçiminde şu kriterler göz önüne alınabilir : – Prosesin sistem için önceliği– Ne kadar zamandır beklediği– Kaç adet kaynak kullandığı ve kaç çeşit kaynak kullandığı– Çalışmasını tamamlamak için kaç adet daha kaynağa ihtiyacı olduğu– Sistemin normale dönmesi için kaç adet prosesin sonlandırılması

gerekliliği

Page 34: BÖLÜM 8

...• Kaynak Serbest Bırakma

Kaynakları serbest bırakarak diğer proseslerin işlerini bu kaynaklarla tamamlamalarını sağlamak. – Hangi kaynak serbest bırakılacak. Bundan hangi prosesler

etkilenecek– Rollback : Total Rollback : Kaynağı serbest bırakılan prosesi

abort etmek. Tekrar başlatmak– Starvation : Kaynakları alınarak tekrar başlatılan prosesin

açlığa uğrayıp uğramadığının incelenmesi verimli olacaktır.