Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

DERS 8 (ÖLÜMCÜL KİTLENMELER)

Benzer bir sunumlar


... konulu sunumlar: "DERS 8 (ÖLÜMCÜL KİTLENMELER)"— Sunum transkripti:

1 DERS 8 (ÖLÜMCÜL KİTLENMELER)
İŞLETİM SİSTEMLERİ DERS 8 (ÖLÜMCÜL KİTLENMELER)

2 ÖLÜMCÜL KİTLENMELER (DEADLOCKS)
Bilgisayar sistemleri, bir anda sadece tek bir proses tarafından kullanılabilecek kaynaklar ile doludur. Genel örnekler; Yazıcı, disket sürücüleri, tarayıcı, cd/dvd yazıcısı ve okuyucusu vb. Örneğin iki prosesin yazıcıyı aynı anda kullanması durumunda karma karışık çıktılar elde edilir. Her işletim sistemi, belirli kaynaklara aynı anda sadece tek bir proses erişmesini sağlayan erişim mekanizmalarına sahiptir. Ayrıca bir proses aynı anda birden fazla kaynağa da erişmek isteyebilir.

3 Örneğin, A ve B prosesleri tarayıcıdan aldıkları veriyi CD’ ye yazdırmak istesinler. Tarayıcının kullanım izni A prosesine, CD yazıcısının kullanım izni ise B prosesine verilmiş olsun. A prosesi CD yazıcısını kullanmak istediğinde, B'nin kullanımı nedeniyle A prosesine yetki verilmez. Aynı şekilde B süreci de tarayıcıya erişmeye çalıştığında, tarayıcıyı A süreci kullandığı için B’ye tarayıcıyı kullanma yetkisi verilmez. Bu durumda iki proses de bloklanır ve sonsuza kadar bloklanmış olarak kalır. Bu duruma ölümcül kitlenme (deadlock) denir.

4 SİSTEM KAYNAKLARI Kaynak bazen bir donanımsal cihaz (örneğin yazıcı), bazen de yazılımsal bir bilgi (örneğin veritabanındaki bir kayıt) olabilir. Bazı kaynaklardan sistemde bir fazla bulunabilir, örneğin bilgisayarda iki tane cd-writer olması gibi. Eğer sistemde aynı tipde kaynaktan birden fazla varsa, bunlardan herhangi biri kullanılabilir. Kısaca, bir kaynak anlık olarak sadece bir proses tarafından kullanılabilen sistem elemanıdır.

5 YARIDA KESİLEBİLİR ve YARIDA KESİLEMEZ KAYNAKLAR
Bilgisayarda bulunan kaynaklar aşağıdaki şekilde kategorileştirilebilir: Yarıda kesilebilir(preemptable) kaynaklar Yarıda kesilemez (non-preemptable) kaynaklar Yarıda kesilebilir kaynak, bir proses tarafından kullanılıyorken, kaynağın bu prosesin elinden alınması ve başka bir prosese tahsis edilmesinde herhangi bir olumsuzluk çıkmayan kaynak tipleridir. Örneğin bellek bir yarıda kesilebilir bir kaynaktır. Bu durumu bir örnekle açıklayalım. 32 MB bellek kapasitesine sahip bir bilgisayarda 32 MB bellek alanına ihtiyacı olan ve yazıcıdan çıktı almak isteyen 2 proses olsun. Proses 1 yazıcı kullanımı için talepte bulunur ve yazıcı Prose 1’e tahsis edilir. Proses 1 yazıcıda yazdıracağı bilgileri hazırlarken quantum süresi dolar ve işlemci dışına anahtarlanır.

6 İşlemciye anahtarlanan Proses 2 ise yazıcıyı kullanmak ister fakat buna sistem tarafından izin verilmez. Bu durumda, Proses 1 yazıcı kullanım hakkına sahipken , Proses 2 ise bellek kullanım hakkına sahiptir. İkisi de işlemlerine devam edemez ve bu durumda potansiyel bir deadlock durumu söz konusudur. Fakat bellek yarıda kesilebilir bir kaynak olduğundan dolayı 2. proses belleği 1. prosese bırakarak deadlock durumu engellenmiş olur. Buna karşılık yarıda kesilemez kaynaklar, bir prosesin elinden alınıp diğerine verilemez. Örneğin Cd-Writer bir CD’ye yazma işlemi yapıyorken yarıda kesilirse bozuk bir CD elde etmiş olunur. Genel olarak deadlock durumları yarıda kesilemez kaynakların kullanımı sırasında olur.

7 Bir kaynağı kullanmak için aşağıdaki adımlar izlenir:
Kaynağı iste Kaynağı kullan Kaynağı serbest bırak Bir proses kaynağı talep ettiğinde kaynak musait değil ise bu proses bekletilir. Bu durumda bazı işletim sistemleri talepte bulunan bu proses bloklar ve kaynak müsait olunca tekrar uyandırırken, bazı işletim sistemlerinde ise kaynak müsait değilken hata kodu üretilir ve proses tarafından bir müddet sonra tekrar kaynağın müsaitliği kontrol edilir.

8 KAYNAKLARIN KULLANIMI
Sistemde kaynakların düzgün bir şekilde kullanımı için her bir kaynağa bir semafor atanır. Proses, kaynağı kullanmadan önce semafora ait olan down() metodu çalıştırılarak kaynağı elde eder. Kaynağı kullandıktan sonra sonra ise up() metodu ile kaynağı serbest bırakır. Bazen bir proses görevi gereği iki ya da daha fazla kaynağı kullanmak ister. Bu durumda sırası ile bu kaynakları talep eder ve kullanır.

9 Sadece tek bir proses çalışıyorsa, deadlock oluşma ihtimali yoktur
Sadece tek bir proses çalışıyorsa, deadlock oluşma ihtimali yoktur.Çünkü kaynak kullanımı konusunda bir yarış durumu yoktur.

10 Şimdi ise A ve B gibi iki prosesin beraber çalıştıdığı durumu inceleyelim.
(Deadlock oluşmaz) (DeadLock Oluşabilir)

11 Deadlock olmuş bir proses, deadlock olmuş diğer bir prosesin ya da proseslerin elinde tuttuğu kaynakları bekliyordur. Deadlock olmuş proseslerin hiçbiri çalışmasına devam edemez, elindeki kaynakları serbest bırakamaz ve devamlı bloklamış olarak uyku modunda beklerler. Deadlock olmuş proseslerin ve kaynakların sayısının hiç bir önemi yoktur. Bu kaynaklar yazılımsal ve donanımsal kaynaklar olabilir.

12 Deadlock’a Neden Olan Durumlar
Karşılıklı Dışlama(Mutual Exclusion) : Herhangi bir kaynağı anlık olarak sadece bir proses ya kullanabilir. Sahiplenme ve Bekleme Koşulu: Elindeki kaynağı bırakmadan başka kaynak ister ve bu kaynağı elde edemediğinde beklemeye geçenler. Yarıda Kesilemez Koşulu: Bir prosese daha önceden verilen kaynaklar zorla elinden alınamaz. Çevrimsel Bekleme Koşulu:İki veya daha proses zincir şeklinde bir sonraki sürece ait olan kaynağı bekler. Deadlock oluşumu için bu dört durumun geçerli olması gerekir. Bu durumlardan birinin yokluğunda deadlock oluşmaz.

13 Deadlock Modelleme Graf yapısı kullanarak deadlocklar modellenebilir. Bu grafta daire şeklindeki düğümler prosesleri, kare şeklindeki düğümler ise kaynakları temsil etmektedir. Kaynaktan prosese doğru gösterilen ok ise, prosesin kaynağa sahip olduğunu gösterir (Şekil a). Yine bir prosesten kaynağa doğru giden ok, bu prosesin ilgili kaynağı talep ettiği ve bloklanarak bekletildiğini gösterir (Şekil b)

14 Aşağıdaki şekilde bir deadlock durumu görülmektedir
Aşağıdaki şekilde bir deadlock durumu görülmektedir. C prosesi T kaynağını istiyor ve U kaynağını kullanıyor. D prosesi ise T kaynağını kullanıyor ve onu serbest bırakmadan U kaynağını kullanmak istiyor. Bu durumda her iki proses de sonsuza kadar bloklanmış olarak bekler. Graf yapısında döngü var ise deadlock vardır denir. Aşağıdaki grafta C–T–D–U–C deadlock olmuş durumdadır.

15 Kaynak kullanım Şekil d’deki gibi olursa;

16 Eğer işletim sistemi deadlock durumunu sezebilen bir işletim sistemi ise, B prosesini bekleterek, deadlock oluşumunu engellemiş olur.

17 Genel olarak deadlock durumları ile başa çıkmak için 4 farklı yaklaşım vardır:
Deadlock durumlarını ihmal etme. Deadlock oluşumu durumunda tespit etme ve geri yükleme Dikkatli kaynak dağıtımı ile deadlock durumlarından kaçınma Deadlock oluşumu için gerekli olan 4 şarttan birini kaldırarak deadlock oluşumunun önüne geçme

18 1.Devekuşu Algoritmasi (Ostrich Algorithm )
Devekuşu gibi başını kuma gömerek, bir şey yokmuş gibi davranmak. Matematikçiler tamamen kabul edilmez bulurlar ve deadlock oluşumu ne pahasına olursa olsun önlenmesini söylerler. Mühendisler ise problemin ne kadar sıklıkla olması beklendiğini ve sitemin diğer nedenlerden ne kadar sıklıkla hata verdiğini sorgularlar. Eğer ölümcül kilitlenmeler ortalama beş yılda bir kez oluyorsa fakat sistemdeki donanım bozulmaları, derleyici hataları ve işletim sistemi hataları ile haftada bir kez karşılıyorsa, birçok mühendis ölümcül kilitlenmelerin çözülmesininin getireceği performans kaybına ve kullanıcıların kısıtlanmasına, deadlock durumu ile karşılaşmayı tercih ederler. UNIX ve Windows’un da içinde bulunduğu birçok işletim sistemi bu yaklaşımı benimser.

19 2.Deadlock Tespiti ve Geri Yükleme
Bu teknik kullanıldığında, işletim sistemi deadlock oluşumunu engellemez. Bunun yerine deadlock oluşumuna izin verir, oluştuğu zamanda deadlock öncesi duruma geri dönüş için bazı işlemler yapar.

20 1. Her kaynak Tipinden Sistemde Bir Adet Olduğu Durumda Deadlock Tespiti
Sistemde sadece bir tane yazıcı, bir cd yazıcı, bir disket sürücü vb kaynak olsun. Deadlock tespitinde graph yapısı kullanılır. Graf bir veya daha fazla döngü(cycle) içeriyorsa, “deadlock vardır” denir. Döngünün parçası olan bütün proses ve kaynaklar deadlock olmuştur. Eğer çizilen grafta döngü yok ise sistemde deadlock durumu da yoktur.

21 Örneğin; 7 proses ve 6 adet kaynak olsun
Örneğin; 7 proses ve 6 adet kaynak olsun. A,B,C,D,E,F,G prosesleri; R,S,T,U,V,W ise kaynakları göstersin. 1. A prosesi R yi tutar ve S i ister. 2. B prosesi T yi ister. 3. C prosesi S i ister. 4. D prosesi U yu tutar ve S ile T yi ister. 5. E prosesi T yi tutar ve V yi ister. 6. F prosesi W yi tutar ve S i ister. 7. G prosesi V yi tutar ve U yu ister.

22 Çizgedeki her N düğümü için, N'i başlangıç düğümü alarak 2-6 adımlarını yap.
L yi boş liste olarak başlat. Tüm kenarları işaretlenmemiş yap. Şu anki düğümü L ye ekle. L de iki kez olup olmadığını kontrol et. İkinci kez bulunursa çizgede döngü vardır ve algoritma sonlanır. Verilen düğümden başka düğümlere işaretlenmemiş giden kenar var mı? Varsa 5. adıma yoksa 6. adıma git. İşaretli olmayan bir kenar seç ve işaretle. Bu kenarı izleyerek yeni düğüme git. Adım 3 e git. Bir ölü noktaya ulaştık. Bu düğümü çıkar ve bir önceki düğüme git. Önceki düğümü aktif düğüm yap ve adım 3 e git. Eğer bu düğüm başlangıç düğümü ise döngü yoktur. Algoritma bir döngü bulunca çıkar. L düğümlerin listesidir.

23 L=[ ] → L=[R] → L=[R,A] → L=[R,A,S] → L=[R,A] Burası daha fazla ilerlemez. R için biter. Algoritmayı A için tekrar başlatırız. L=[A,S]→L=[A] Algoritmayı B için başlatırız. B 'den D ye kadar gelince L=[B,T,E,V,G,U,D] olur. Bu noktada eğer S i seçersek ölü nokta olur ve D ye geri geliriz. T yi seçelim. L=[B,T,E,V,G,U,D,T] olur. Bu noktada döngü tespit edilir ve algoritma durur.

24 2. Her Kaynak Tipten Birden Fazla Kaynak Olduğunda Ölümcül Kilitlenme Tespiti
Bu tip durumlar için matris temelli bir çözüm geliştirilmiştir. Sistemde çalışan n tane proses (P1, …, Pn), m farklı kaynak tipi vardır. E vektörü sistemde var olan kaynak sayısını tutar. Örneğin E1 disket sınıfı olsun. E1 = 2 elimizde 2 adet disket sürücüsü olduğunu gösterir. Belirli bir anda bu kaynaklardan bazıları proseslere tahsis edilmiş, bazıları ise boşta bekliyor olabilir. A vektörü kullanılabilir olan kaynakları göstersin. Ai i. sınıf kaynaktan kullanılabilir kaç tane örnek olduğunu gösterir. Eğer A1=0 ise, disket sürücüsünden kullanılabilir yok demektir. Tüm disket sürücüleri şu anda kullanılıyordur.

25 Algoritmada iki adet matris kullanılır.
C = Prosesler tarafından kullanılmakta olan kayakları ve sayılarını gösteren matristir. R = Proseslerin istedikleri kaynakları ve sayılarını gösteren matristir. Cij = j kaynağından i. prosesin kaç tane j kaynağından kullandığını gösterir. Rij = i prosesinin j kaynağından kaç adet istediğini gösterir.

26 Aşağıdaki örnekte 3 proses, 4 kaynağı (tape driver, plotter, scanner, CD-Rom driver) kullanmaktadır. 1. proses bir tane scanner; ikinci proses 2 tane tape driver ve 1 CD-Rom; üçüncü proses ise 1 plotter ve 2 scanner kullanmaktadır. Her bir prosesin hangi kaynaklara ihtiyaç duyduğu ise R matrisinde gösterilmiştir.

27 Önceki slayttaki örneğe göre, A = ( ) vektörü ile ilk çalışabilecek olan proses 3 nolu prosestir. 3 nolu proses çalıştıktan sonra yeni A = ( ) olur. Daha sonra 2 nolu proses çalışır ve yeni A = ( ) olur. Bu durumda son olarak 3 nolu proses de çalışarak tüm prosesler görevlerini deadlock oluşmadan tamamlamış olur. Örneğin 2 nolu proses ihtiyaç duyduğu kaynaklara ilave olarak bir CD-Rom daha talep etmiş olsaydı, bütün sistem deadlock olurdu.

28 Deadlock tespiti için aşağıdaki algoritma kullanılır:
R matrisindeki proseslerden işaretlenmemiş olanlardan hangisinin A vektörüne eşit ya da küçük olduğuna bakılır. Eğer böyle bir proses bulunur ise (Pi), 2. adıma git; bulunamaz ise 3. adıma git. i. proses işaretlenir ve C matrisinin i. satırındaki değerleri A vektörüne eklenir. 1. adıma geri dön. Eğer işaretlenmemiş proses kalmış ise deadlock vardır.

29 Deadlock Durumunun Onarilmasi
Kullanılan algoritmalar deadlock durumu tespit ettiğinde ne yapılmalıdır? Bazı durumlarda kaynağı geçici olarak sahibinden alıp başkasına vermek mümkün olabilir. Örneğin; Bir lazer yazıcının kullanımı bir prosesten alınıp başka bir prosese verilebilir. Kullanıcı o ana kadar yazdırılmış olan çıktıları bir deste halinde alır ve proses askıya alınır. Bu andan sonra yazıcı başka bir prosese verilir. İkinci proses yazıcıyı kullandıktan sonra ilk proses kaldığı yerden yazdırma işlemine devam eder. Bunun için kullanıcının deste halinde çıktıları tekrar yazıcıya yerleştirmesi gerekir.Bu şekilde onarım oldukça zordur. 1. Keserek Onarma

30 2. Geri Yukleyerek Onarma
Sistemde ölümcül kilitlenmelerin olası olduğunu biliyorsa, prosesler için periyodik olarak kontrol noktaları oluştur. Kontrol noktası prosesin mevcut durumunun bir dosyaya yazılmasıdır. Böylece proses daha sonra bu noktadan çalışmasına devam edebilir. Deadlock durumunda hangi kaynakların deadlocka neden olduğu belirlenir. Bu kaynaklara sahip olan, proses kontrol noktasına geri yüklenerek sahip olduğu kaynaklar elinden alınır ve ihtiyaç duyana verilir. Kaynakları elinden alınan prosesin kontrol notkasından o anki durumuna kadar olan bütün işlemler ve veriler kaybolmuş olur. Kaynakların işleri bittiğinde alındıkları proses kontrol noktasından itibaren tekrar çalıştırılmaya başlanır.

31 3. Sonlandirarak Onarma Acımasızca fakat en kolay yol bir veya birden fazla prosesin sonlandırılmasıdır. Deadlock döngüsündeki proseslerden biri ya da birkaç tanesi sonlandırılarak deadlock durumu çözülebilir. Eğer deadlock olmuş proseslerden birini sonlandırmak deadlock durumunu çözmüyorsa, çözünceye kadar prosesler teker teker sonlandırılır. Sonlandırılacak prosesleri seçerken tekrar çalıştırılması problem oluşturmayacak olan proseslerin sonlandırılması uygun bir seçim olacaktır.

32 3.Deadlock Durumunu Önleme
Deadlock tespitinde, prosesin ihtiyaç duyduğu tüm kaynakları peşinen başlangıçta bilindiğini varsaydık (R matirisi). Fakat bir çok sistemde kaynaklar belirli bir çalışma anında teker teker istenirler. Bu yüzden sistem istenilen kaynağın verilmesinin güvenli olup olmadığına kontor edip kaynak tahsisini buna göre yapmalıdır.

33 Güvenli ve Güvensiz Durumlari
Sistemde deadlock yoksa ya da sistemdeki tüm prosesler ihtiyaç duydukları kaynakları bir seferde istese bile sıralı bir şekilde çalışıp işlemlerini bitirebiliyorlarsa bu durum güvenli durumdur. Tek bir kaynak için durumu inceleyelim. Aşağıdaki şekilde A prosesi 3 kaynağı, B ve C prosesleri ise 2 kaynağı elinde bulunduruyor. Bunun yanı sıra A prosesi işlemi bitirmek için 6 kaynağa, B prosesi 2 kaynağa, C prosesi ise 5 kaynağa daha ihtiyaç duyuyor. Toplamda sistemde 10 kaynak var bu kaynakların 7 tanesi kullanımda…

34 Şekil a’da sistem güvenlidir
Şekil a’da sistem güvenlidir. Çünkü çalışabilecek durumda bir proses (B prosesi) vardır. B prosesi çalışırsa ve ihtiyaç duyduğu bütün kaynakları kullanırsa Şekil b’deki durum oluşur. B prosesi işlemi bitirdiğinde Şekil c’deki durum oluşur. Bu durumda C prosesi çalışabilecek durumdadır. C işlemi bitirdiğinde Şekil d oluşur. Bundan sonra A prosesi çalışarak işlemini bitirebilir. Bu şekilde dikkatli bir zamanlama yaparak deadlock durumuna yakalanılmamış olur.

35 Şimdi de başlangıç durumunun Şekil a’daki gibi olduuğunu düşünelim
Şimdi de başlangıç durumunun Şekil a’daki gibi olduuğunu düşünelim. A prosesi bir kaynağın birini aldığında Şekil b’deki durum elde edilir. Bu durumda ancak B prosesi bütün kaynaklarını kullanarak işlemini bitirecek durumdadır (Şekil c). B prosesi işlemini bitirdiğinde Şekil d’deki durum elde edilir ve bu durumda hiçbir proses işlemini bitirebilecek durumda değildir. Bu durumda A prosesi kaynaklardan birini serbest bırakıp, deadlock oluşmadan C’nin işleme devam etmesi sağlanabilir. Sonuç olarak güvenli durum bütün proseslerin işlemi bitirmesinin garanti edildiği, güvensiz durum ise böyle bir garantinin verilemediği durumdur.

36 1.Tek Tip Kaynak İçin Bankaci (Banker) Algoritmasi
Bu algoritmada bir bankanın bir grup müşteriye kredi vermesi örneği model alınmıştır. Algoritma, müşteri kredi talebinde bulunduğunda kredinin verilmesinin güvenli olup olmadığını inceler. Eğer güvensiz bir durum varsa müşteriden gelen kredi talebini reddeder. Bu örnekte A, B, C ve D kredi verilen müşterilerdir. Banka müşterilerin ihtiyaç duydukları maksimumum krediyi bir seferde talep etmeyeceklerini bilmektedir. Bu sebeple reservinde 22 birim kredi değil 10 birim kredi bulundurmaktadır. (Bu örnekte, müşteriler prosesleri, krediler kaynakları, bankacı da işletim sistemi rolünü üstelenmiştir.)

37 2.Birden Çok Kaynak Tipi İçin Bankaci Algoritmasi
R matrisinden ihtiyaç duyulan kaynaklar aranır. Eğer bu satırlarda A vektöründen daha küçük bir satır yoksa sistem ölümcül kilitlidir. Bu sürecin tüm istekleri aynı anda karşılansın. Tüm sahip oldukları A vektörüne eklenir. 1-2 adımlarını tüm süreçler sonlandı olarak işaretleninceye kadar tekrar edelim.

38 4.Deadlock Durumundan Kaçinma
Karşılıklı Dışlama Koşulu Elinde Tut ve Bekle Koşulu Yarıda Kesilemez Koşulu Zincirsel Bekleme Koşulu Eğer yukarda belirtilen bu 4 koşuldan en azından birini ortadan kaldırılırsa deadlock oluşumu engellenmiş olur.

39 1. Karşilikli Dişlamayi Koşulunu Ortadan Kaldirma
Eğer bir kaynağı iki proses aynı anda kullanabiliyor olsaydı deadlock oluşumu imkansız hale gelirdi. Yazıcılarda spooling teknolojisi ile birden fazla prosesin yazıcıdan hizmet alması olanaklı hale gelmiştir. Aslında burada yazıcı yine printer deamon adı verilen tek bir proses tarafından kullanılmaktadır ama spooler’da birden fazla prosese ait yazdırılacak dosyalar bekletilmektedir. Malesef sistemdeki bütün kaynaklar spooling teknolojisini uygulamaya uygun değildir (Örneğin proses tablosu).

40 2. Tut ve Bekle Koşulunu Ortadan Kaldirma
Eğer proseseler kullanacakları kaynakları başlangıçta toptan elde edebilseler deadlock problemi ortaya çıkmazdır. Bunun için bir proses çalışması boyunca ihtiyaç duyacağı bütün kaynakları eğer musaitlerde başlangıçta talep eder ve kullanım iznini alır. Böylece elinde bir kaynak varken başka bir kaynak için beklememiş olur. Fakat bu modelin de olumsuz yönleri vardır. Örneğin bir type’den yüklü miktarda veri okuyup onu analiz edip yazıcıdan çıktılarını alacak bir prosesi düşünelim. Bu işlem bir saat kadar sürüyorsa bu süre zarfında hem type hem de yazıcı başka prosesler tarafından hiç bir şekilde kullanılamayacaktır.

41 3. Yarida Kesilemez Koşulunu Ortadan KaldIrma
Bazı kaynakların prosesler tarafından kullanımını yarıda kesip bir başka bir prosese tahsis etmek imkansızdır.

42 4. Zincirsel Bekleme Koşulunu Ortadan Kaldirmak
Bu model için birkaç çözüm önerisi sunulmuştur. Birincisi bir proses elindeki kaynağı bırakmadan diğer bir kaynağı talep edemez. Bu yaklaşım büyük dosyaların type’den kopyalanması ve yazıcıdan çıktı alınması gibi işlemlerde kullanılmaz. İkinci yaklaşım ise şekilde görüldüğü gibi kaynakların global bir numaralandırma sistemine sahip olmasıdır. Bir proses kullanacağı kaynakları bu sıraya göre talep ederse deadlock oluşmaz.


"DERS 8 (ÖLÜMCÜL KİTLENMELER)" indir ppt

Benzer bir sunumlar


Google Reklamları