Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

İşletim Sistemleri (Operating Systems)

Benzer bir sunumlar


... konulu sunumlar: "İşletim Sistemleri (Operating Systems)"— Sunum transkripti:

1 İşletim Sistemleri (Operating Systems)

2 Ölümcül Kilitlenme (Deadlock)

3 Ölümcül Kilitlenme (Deadlock)
Bilgisayardaki kilitlenmeler trafikteki kilitlenmelere benzer. Örneğin, bir dörtyol kavşağına gelindiğinde uygulanması gereken kural sağdan gelene yol vermeyi belirtir. Ancak eğer bu kavşağa aynı anda 4 araba gelirse ve hepsi de geçmeye çalışırsa kilitlenme olacaktır.

4 Ölümcül Kilitlenme (Deadlock)
Çok process’li ortamlarda process’ler bellek alanı, CPU kullanımı, dosyalar, Giriş/Çıkış birimleri gibi sonlu sayıdaki kaynakları kullanmak için yarışırlar. Kilitlenme, bekleme durumundaki process’lerin hazır durumuna geçebilmek için bir diğerinin sağlayacağı koşulu karşılıklı beklemelerine verilen addır. Kilitlenme genelde process’lerin ellerindeki kaynakları bırakmadan, başka process’lere ait olan kaynakları kullanmak istedikleri durumlarda gerçekleşir. Tek şeritli yolun iki araç tarafından da kullanılmak istenmesi sonucunda yolun tıkanması gibi

5 Ölümcül Kilitlenme (Deadlock)
Kilitlenme iki yada daha çok process’in karşılıklı olarak hiç bir zaman gerçekleşmeyecek koşulları beklemeleriyle oluşan bir durumdur. Her process yalnız bir başka process’in sağlayacağı bir koşulu beklerse ve bu processler de kapalı bir zincir oluşturursa, kilitlenme kaçınılmazdır.

6 Ölümcül Kilitlenme (Deadlock)
Ana bellekte 200Kb’lık boş yer olduğunu varsayınız. İki process aşağıdaki sırayla ana bellekten istekte bulunurlar. Her iki process’in de ilk istekleri bellek tarafından karşılanınca geriye sadece 50 Kb’lik boşluk kalacaktır. Bu durumda her iki process de ikinci isteğini alamayacağı için kilitlenme olacaktır. P1 80 Kb istek  60 Kb istek P2 70 Kb istek  80 Kb istek

7 Ölümcül Kilitlenme (Deadlock)
Bu gibi durumda kilitlenmeyi önlemek için process’lerin istekleri işlem sırasına göre yapılabilir. İlk olarak P1 process’inin istekleri karşılanır. P1 işini bitirince bellekten silinecektir. Daha sonra da P2’nin istekleri karşılanır ve kilitlenme ortadan kaldırılır. P1 80 Kb istek  60 Kb istek  P2 70 Kb istek 80 Kb istek

8 Ölümcül Kilitlenme (Deadlock)
Bilgisayarda iki process’in (P1, P2) CD ve disket kaynaklarına ihtiyacı olduğunu varsayınız. P1 process’i CD kaynağına sahipken disketi, P2 process’i ise disket kaynağına sahipken CD’yi beklemektedir. Her iki process de bekleme durumundan çıkamayacağı için kilitlenme olacaktır.

9 Ölümcül Kilitlenme (Deadlock)
Bir sistemde, 3 tane CD WR sürücüsü olsun. 3 process bu kaynakları kullanırken, her process diğer CD WR sürücülerden birisine istek yaparsa kilitlenme oluşur. Bir sistemde, 1 yazıcı ve 1 DVD sürücü olsun. P0 process’i yazıcıyı, P1 process’i DVD sürücüyü tutarken, P1 yazıcıya ve P0 DVD sürücüye istek yaparsa kilitlenme oluşur. Multithread uygulama geliştiriciler kilitlenme (deadlock) olasılığına dikkat etmelidir.

10 Ölümcül Kilitlenme (Deadlock)
Process 1 Process 2 Process 3 Request(Kaynak_1); //Kaynak_1 tutuluyor Request(Kaynak_2); Request(Kaynak_2); //Kaynak_2 tutuluyor Request(Kaynak_3); Request(Kaynak_3); //Kaynak_3 tutuluyor Request(Kaynak_1); Process 1 Process 2 Process 3 Kaynak 1 Kaynak 2 Kaynak 3

11 Kaynak Tahsis Grafikleri
Process’lerin istekleri ve kaynakların process’lere atanması kaynak tahsis grafikleri ile gösterilirler. Process’ler daireler şeklinde, kaynaklar kareler şeklinde gösterilir. Bir process’ten kaynağa doğru giden ok, process’in kaynak için istek yaptığını gösterir. Kaynaktan process’e doğru gösterilen ok, process’in kaynağa sahip olduğunu gösterir. Process 1 Process 2 Process 1 Kaynak 1 ‘e sahiptir. (allocate) Process 2 Kaynak 2 için istekte bulunuyor. (request)  Kaynak 1  Kaynak 2 Kaynak içindeki noktalar, kaynağın o kadar process’e atanabileceğini belirtir.

12 Kaynak Tahsis Grafikleri
Dairesel bekleme oluşan durumlarda kilitlenme oluşmaktadır.

13 Kaynak Tahsis Grafikleri
Eğer kaynaklar birden fazla process’e hizmet verebilirse kilitlenme ortadan kalkabilir.

14 Kilitlenme (Deadlock)
Eğer graf üzerinde döngü yoksa kilitlenme (deadlock) yoktur, döngü varsa kilitlenme olabilir. Her kaynaktan sadece 1 örnek varken graf üzerinde döngü varsa, kilitlenme oluşur. Döngü içerisinde yer alan tüm process’ler kilitlenme durumundadır. Kaynaklardan birden fazla olması durumunda, kilitlenme için döngü oluşması gereklidir ancak yeterli değildir. Döngü dışındaki bir process’e atanmış kaynak seçilebilir.

15 Kilitlenme (Deadlock)
Şekilde P1, P2 ve P3 deadlock durumundadır.

16 Kilitlenme (Deadlock)
Şekilde döngü vardır, ancak deadlock yoktur. P4, R2’nin kopyasını serbest bırakırsa P3 kullanabilir.

17 Kilitlenme (Deadlock)
Soru: Aşağıdaki kaynak tahsis grafiğine göre kilitlenme durumu var mıdır?

18 Kilitlenme (Deadlock)
P1 ve P3 process’leri boşta kaynağı olmayan R1 ve R2 kaynaklarını beklemektedir. Ancak P2 ve P4 istekte bulundukları tüm kaynaklara sahiptir.

19 Kilitlenme (Deadlock)
Bu durumda bu iki process işlerini bitirince, kullandıkları kaynakları bırakacaklardır. Bırakılan kaynakları diğer process’ler kullanabilir.

20 Kilitlenme (Deadlock)
Cevap: Kilitlenme yoktur!

21 Kilitlenme (Deadlock)
Örnek : Aşağıdaki kümelerde P process’leri, R kaynakları, E ise process istekleri ile kaynak atamalarını belirtmektedir. P={P1, P2, P3} R={R1, R2, R3} E={P1→R1, P2 → R3, P3 → R2, R1 → P2, R2 → P2, R2 → P1, R3 → P3} R1 ve R3 kaynakları bir process’e, R2 kaynağı ise iki process’e atanabilmektedir. a) Kaynak tahsis grafiğini çiziniz. b) Kilitlenme durumu var mıdır, karar veriniz.

22 Kilitlenme (Deadlock)
a) Kaynak tahsis grafiğini çiziniz. E={P1→R1, P2 → R3, P3 → R2, R1 → P2, R2 → P2, R2 → P1, R3 → P3}

23 Kilitlenme (Deadlock)
b) Kilitlenme durumu var mıdır, karar veriniz. Kilitlenme vardır. P1, P2 ve P3 process’leri kilitlenmiştir. P1 process’i R1 kaynağını beklemektedir. P2 process’i R3 kaynağını beklemektedir. P3 process’i R2 kaynağını beklemektedir.

24 Kilitlenme için Gerekli Koşullar
Ölümcül kilitlenmenin ortaya çıkması için dört koşul vardır. Bu dört koşul aynı anda gerçekleşmezse kilitlenme durumu oluşmaz. 1. Karşılıklı dışlama (mutual exclusion) 2. Sahiplenme ve bekleme (hold and wait) 3. Geri alınamaz kaynak (no preemption) 4. Döngüsel bekleme (circular waiting) Kilitlenmeleri önlemek üzere bu koşullardan en az birinin oluşmasını engellemek yeterlidir.

25 1. Karşılıklı dışlama (mutual exclusion-mutex):
Kilitlenmeleri önlemek için process’lerin karşılıklı dışlama davranışları içinde bulunmaları durumu. İki process veya thread’ın birbirinden bağımsız çalışmasını, aynı anda bir işlemi yapmamasının istendiği durumlarda karşılıklı dışlama özelliği kullanılabilir. İki adet birbirine paralel ilerleyen process için aynı anda bir kaynağa erişme veya birbirleri için kritik olan işlemler yapma ihtimali her zaman bulunur. (iki ayrı process’in paylaşılan bir dosyaya aynı anda yazmaya çalışması gibi) Bir kaynağın aynı anda yalnız bir process tarafından kullanılabilmesi (aynı anda bölüşülememesi) durumudur. Bölüşülür kaynaklar kilitlenme (deadlock) oluşturmaz.

26 1. Karşılıklı dışlama (mutual exclusion):
Bölüşülür ve bölüşülemez kaynaklar Process’ler tarafından ardıl biçimde kullanılması zorunlu olan birimler bölüşülemez kaynakları oluşturur. Bölüşülemez kaynakların kullanımları sona ermeden bir process’den geri alınarak diğer bir process’e atamaları yapılamaz. Örneğin, bir process CD yazıcıyı kullanıyorsa CD yazıcının kullanan process’in elinden alınması oluşan CD nin bozulmasına yol açar. CD yazıcı bölüşülemez bir kaynaktır. Örneğin; yazıcı bir yazma işlemindeyken, işletim sistemi yazıcıyı bu process’den alıp başka bir process’e veremeyeceği için yazıcı bölüşülemez bir kaynaktır. Bölüşülemez kaynaklara birden fazla process tarafından eş zamanlı erişim yapılamaz (Semafor veya mutex lock ile engellenir). Öte yandan, işlemcinin (CPU) process’ler arasında kullanımına işletim sistemi karar verebildiğinden, CPU bölüşülür bir kaynaktır. Aynı zamanda bellek bölüşülür bir kaynaktır. Process’ler tarafından eşzamanlı biçimde paylaşılabilen birimler bölüşür kaynaklardır.

27 1. Karşılıklı dışlama (mutual exclusion):
Bölüşülür ve bölüşülemez kaynaklar Process’lere atanan kaynakların, process’ler istemedikçe alınamaması kilitlenmeleri oluşturan bir koşuldur. Atanan kaynakların, process’lerin istemleri dışında da sistemce geri alınmasının sağlanması, kilitlenmelerden korunmada akla gelen bir yöntem olabilir. Ancak bu yöntem bölüşülemez kaynaklar için uygulanamaz.

28 2. Sahiplenme ve bekleme (hold and wait):
Bir process en azından bir kaynağı elinde tutmalı ve diğer process’ler tarafından tutulan ek bir kaynağa gereksinim duymalıdır. Yani bir process bir kaynağa sahipken başka bir kaynak talebinde bulunduğu durumdur.

29 3. Geri alınamaz kaynak (no preemption):
Bir prosese atanan kaynaklar, işletim sistemi tarafından process’in kendi isteği dışında elinden alınamıyorsa. Bir process’e atanan kaynakların yalnız bu process tarafından özgür bırakılması, işletim sisteminin bu kaynaklara kullanımda iken el koyamaması durumudur. Bir kaynak, kendisini kullanan bir process’i bırakamaz. Ancak, process görevini tamamladıktan sonra gönüllü olarak bırakılabilir. Bu yüzden geri alınamaz kaynakların tutulup beklenmesi kilitlenmeye sebep olur. İşletim aşamasında kullanılan kaynakları gerektiğinde tekrar geri alan bir atama yönetimi uygulamak çoğu fiziksel kaynak için olanaksızdır. Ancak CPU ve ana bellek gibi yeniden kullanılır kaynaklar gereken yatırımla işletim aşamasında geri alınıp başka bir process’in kullanımına verilebilir.

30 Preemptable ve non-preemptable kaynaklar
Kilitlenmeler sistem kaynaklarının processler arasında paylaşım zorunluluğundan ortaya çıkar. Bilgisayarda bulunan kaynaklar iki kategoriye ayrılabilir. 1. Geri alınabilir-yeniden kullanılır (preemptable) kaynaklar 2. Geri alınamaz – tüketilir (non-preemptable) kaynaklar

31 Preemptable ve non-preemptable kaynaklar
1. Geri alınabilir-yeniden kullanılır (preemptable) kaynaklar Bu kaynaklar istem üzerine aynı anda en çok bir processe atanan, sınırlı (sonsuz olmayan) bir süre sonunda serbest bırakılan ve başka bir processin kullanımına verilen kaynaklardır. İşlemci, ana bellek, disk birimleri, yazıcılar ve veritabanı kütükleri yeniden kullanılır kaynaklardır. Kilitlenmelerden korunmak için alınan önlemler yeniden kullanılır-geri alınabilir kaynaklara yöneliktir.

32 Preemptable ve non-preemptable kaynaklar
2. Geri alınamaz – tüketilir (non-preemptable) kaynaklar İşletim aşamasında processler tarafından oluşturulup kullanılan ve işletim sonunda varlığı son bulan kaynaklardır. Geri alınamaz kaynak, process bu kaynağa sahiptir ve elinden alınamaz. Processler arasındaki iletişim için kullanılan sinyaller ve mesajlar bu tür kaynaklara örnek olarak verilebilir. Bu kaynaklarla ilgili kilitlenmeler, bu türdeki kaynakları paylaşan belirli sayıda processle sınırlı kalır. İşletim sistemlerinde bu tür kaynaklarla ilgili kilitlenmelere karşı herhangi bir önlem alınmaz, bunların ortadan kaldırılması programcının sorumluluğuna bırakılır.

33 4. Döngüsel bekleme (circular waiting):
Process’lerin gereksinim duyduğu kaynakları, karşılıklı olarak birbirlerinden beklemesi durumudur. İki veya daha fazla process zincir şeklinde kendinden önceki process’e ait olan kaynağı bekler. Kilitlenme tam iki process ile olmak zorunda değildir. Çembersel olarak birbirini bekleyen en az iki process’le kilitlenme ortaya çıkar. {P0, P1, ..., Pn} processleri birbirini beklemektedir. P0 process’i P1’i, P1 process’i P2’yi, ..., Pn process’i de P0’ı beklemektedir. Bu yüzden, kilitlenme varsa mutlaka çembersel bir bekleme vardır; ancak çembersel bekleme varsa mutlaka kilitlenme olur denilemez, çünkü bir kaynağın birden çok örneği varsa, bu örnekler farklı process’ler tarafından kullanılabilir ve çember olmasına rağmen kilitlenme oluşmaz.

34 Kilitlenmelerle Başa Çıkma Yöntemleri
Sistemin kilitlenme durumuna girmemesini sağlamak. Bir sistemde hiçbir zaman kilitlenme (deadlock) olmamasını garanti etmek için, kilitlenmeyi önleme (deadlock-prevention) veya kilitlenmeden kaçınma (deadlock-avoidance) yöntemleri kullanılabilir. Kilitlenmeyi önlemek : Kilitlenmeler daha oluşmadan önlemek demektir. Kaynak isteklerini sınırlandırarak kilitlenme oluşmasını önler. Kilitlenmeden kaçınmak : Kilitlenme koşullarından en çok 3 tanesine izin verilir. Son koşul yerine getirilmediği için kilitlenme asla oluşmaz. Bir sistem, kilitlenmeyi önleme veya kilitlenmeden kaçınma yöntemlerini kullanmazsa kilitlenme (deadlock) oluşabilir. Bu sistemler, kilitlenme olup olmadığını kontrol eden bir algoritma ve kilitlenme oluştuğunda çözümünü sağlayan bir algoritma sağlamalıdır.

35 Kilitlenmeden Kaçınma (Deadlock Avoidance)
Kilitlenme oluşacak işlemlerin başlatılmasını engellemek için Banker’s algoritması kullanılmaktadır. Bu yöntemde kaynaklar (R), boşta bulunan kaynaklar (V), istekler (C) ve atanmalar (A) hakkında bilgi sahibi olunması gerekir.

36 Banker’s Algoritması Banker Algoritması Dijkstra tarafından önerilmiştir; Belli bir sermayeye sahip bir bankerin iflas etmeden müşterilerine kredi imkanı tanıması esastır. Müşterinin tüm gereksinim duyduğu krediyi almadan, geri ödeme garantisi yoktur. Şayet bir miktar kredi talep edildiğinde diğer müşterilerin ihtiyaçlarının karşılanamaması riski varsa kredi verilmemektedir. Sistemin içinde bulunabileceği iki durum vardır; güvenli ve güvenli olmayan durum. Güvenli durumda, tüm proseslerin kilitlenme oluşturmayacak şekilde sonlanmasına olanak veren bir işletim şekli mevcuttur. Böyle bir işletim şekli yoksa güvenli olmayan durumdur.

37 Banker’s Algoritması Tüm isteklerden (C), atanan kaynaklar (A) çıkarıldığı zaman geriye kalan istek sayıları (Q) bulunabilir. Q = C – A Bu algoritma kullanılarak process’ler için güvenli şekilde çalışabilecek bir sıra bulunursa kilitlenme olmaz demektir. Eğer güvenli bir yol yok ise kilitlenme oluşabilir demektir.

38 Banker’s Algoritması Örnek 1
Aşağıda verilen bilgileri ve Banker’s algoritmasını kullanarak sistemin güvenli olup olmadığına karar veriniz.

39 Banker’s Algoritması İlk olarak process’lerin geriye kalan isteklerini (Q) hesaplamak gerekir.

40 Banker’s Algoritması Daha sonra geriye kalan istekler (Q) ve boştaki kaynaklar (V) kontrol edilerek çalışabilecek bir process var mı bulunması gerekir. Bu noktada P2 process’inin sadece R3 kaynağına ihtiyacı vardır.

41 Banker’s Algoritması P2 process’i istediği tüm kaynaklara sahip olduğundan, işlemini yapıp bitecek ve sonra da kullandığı tüm kaynakları serbest bırakacaktır.

42 Banker’s Algoritması Bu durumda 3 process’den herhangi biri için yetecek kadar kaynak bulunmaktadır. P1, P3 ve P4 process’lerinden bir tanesi çalışmaya başlayabilir. Sıra ile gidilecek olursa P1 kaynakları kullanıp çalışmaya başlayabilir.

43 Banker’s Algoritması P1’in ardından P3 çalışabilir.

44 Banker’s Algoritması Son olarak da P4 process’i çalışabilir.
Böylece process’ler P2, P1, P3 ve P4 sırası ile güvenli bir şekilde çalışabilir. Kilitlenme yoktur.

45 Banker’s Algoritması Örnek 2
Aşağıda verilen bilgileri kullanarak Banker’s algoritmasını kullanarak sistemin güvenli olup olmadığına karar veriniz.

46 Banker’s Algoritması Bu durumda, boştaki kaynakları kullanarak hiçbir process çalışmaya başlayamaz. Güvenli bir durum yoktur ve kilitlenme olabilir.

47 Kilitlenme Bulma (Deadlock Detection)
Kilitlenme bulma yöntemlerinde kaynakların process’lere atanması kısıtlanmaz. İstekte bulunan process’lere boşta bulunan kaynaklar atanabilir. Yöntem aşağıdaki gibidir: 1. Atananlar (A) matrisinde tamamı 0 (sıfır) olan satırlar işaretlenmelidir. 2. W adında geçici bir vektör tanımlayıp, boştaki kaynaklar (V) vektörüne eşitlenmelidir (W=V). 3. Process’lerin işaretlenmemiş satırlarındaki geriye kalan isteklerine (Q) bakılmalı, eğer istekler W vektöründen büyükse algoritma durdurulmalıdır, çünkü kilitlenme vardır. eğer W vektöründen küçükse, bu process’in satırı işaretlenmeli ve atananlar matrisindeki satır W vektörüne eklenmelidir, ardından 3. adıma dönülmelidir.

48 Kilitlenme Bulma (Deadlock Detection)
Örnek Aşağıdaki bilgileri kullanarak kilitlenme olup olmadığına karar veriniz.

49 Kilitlenme Bulma (Deadlock Detection)
İlk olarak atanmalar (A) matrisinde tamamı 0 olan satırlar bulunup işaretlenmelidir.

50 Kilitlenme Bulma (Deadlock Detection)
Daha sonra geçici W vektörünü tanımlanıp boştaki kaynaklar vektörüne (V) eşitlenmelidir (W=V).

51 Kilitlenme Bulma (Deadlock Detection)
Geriye kalan istekler (Q) matrisindeki satırlar W vektörü ile karşılaştırılmalıdır. Eşit veya küçük olan satıra sahip process’in atanmalar satırı W vektörüne eklenmeli ve işaretlenmelidir.

52 Kilitlenme Bulma (Deadlock Detection)
Yine Q matrisinin satırları ile W vektörü karşılaştırılmalıdır. Bu durumda W vektöründen daha küçük Q satırı yoktur. P1 ile P2 işaretlenmediği için bu iki process’in kilitlendiği bulunmuştur.

53 Kilitlenme Kurtarma Kilitlenme bulunduktan sonra process’leri bu durumdan kurtarmak gerekir. Kurtarma yöntemleri aşağıdaki gibidir: Kilitlenen tüm process’leri durdurmak. Çok kullanılan bir yöntem değildir. Kilitlenen process’leri belli bir noktaya kadar geri çekip tekrardan başlatmak. Tekrar aynı process’lerin kilitlenme ihtimali vardır. Kilitlenen process’leri durdurup kilitlenme çözülünceye kadar bekletmek. Kilitlenen process’lerin kullandığı kaynakları kilitlenme çözülene kadar durdurmak.


"İşletim Sistemleri (Operating Systems)" indir ppt

Benzer bir sunumlar


Google Reklamları