Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
İnönü Üniversitesi Bilgisayar Mühendisliği Bölümü
Ölümcül Kilitlenme İnönü Üniversitesi Bilgisayar Mühendisliği Bölümü
2
Nedir
3
Kansas’ta Bir Kanun Önerisi
1913 yılında «İki trenin yolları kesişirse, iki tren de duracak ve diğeri geçene kadar yerinden ayrılmayacaktır.» şeklinde bir kanun önerilmişse de parlamentoda onay alamamıştır.
4
Nedir Bir grup bloklanmış ipliğin/sürecin her biri kaynak tutuyor ve gruptaki diğer süreçlerin sahip olduğu kaynakları istiyor olsun. Aşağıdaki durumlarda ölümcül kilitlenme kaçınılmazdır. İki (veya daha fazla) iplik birbirini beklemektedir. Kilitlenmiş ipliklerin hiç biri ilerleyememektedir. Kilit 1 İplik 1 İplik 2 Kilit 2 sahiptir Bunu bekler
5
Aç Kalma (Starvation) Bir sürecin/ipliğin ihtiyaç duyduğu kaynakları diğer süreçlerin/ipliklerin kullanması nedeniyle iş yapamamasıdır. Kaynak CPU ise: Bir sürecin/ipliğin CPU’ ya ulaşamaması zamanlayıcının her zaman diğer süreçlere/ipliklere öncelik vererek CPU kullandırmasından kaynaklanır. Kaynak kilitli ise : Bir sürecin/ipliğin istediği kilidi, diğerleri tuttuğu için alamamasıdır. Aç Kalma ≠ Ölümcül Kilitlenme Ölümcül Kilitlenme => Aç Kalma Aç Kalma ≠> Ölümcül Kilitlenme
6
Kilitlenme Çeşitleri Süreç ölümcül kilitlenmesi; asla gerçekleşmeyecek bir olayı beklemekten kaynaklanır. Sistem ölümcül kilitlenmesi; bir veya daha fazla sürecin kilitlenmesi önlenmediği/çözülmediği zaman kaçınılmaz sondur.
7
Kilitlenme İçin Gereken Şartlar
Karşılıklı Dışlama: Paylaşımlı kaynaklar karşılıklı dışlayıcı bir şekilde kullanılmaktadır. Tut & Bekle: Süreçler başka kaynakların tahsisini beklerken zaten sahip oldukları kaynakları tutmaya çalışır. Öncelik Kullanmama: Kaynaklar süreçler tarafından serbest bırakılana kadar önceden ayrılamaz. (sürecin rızasıyla bırakması beklenir.) Döngüsel Bekleme: Her sürecin zincirde bir sonraki süreç tarafından istenen kaynakları tuttuğu bir döngüsel süreç zinciri vardır. Bu durumların en az birini önlerseniz, ölümcül kilitlenme YAŞAMAZSINIZ.
8
Devekuşu Algoritması Sorun yokmuş gibi işleyişi sürdürme davranışıdır.
Eğer kilitlenmeler çok nadiren oluyorsa ve önleme maliyeti yüksekse kabul edilebilir. UNIX ve Windows bu yaklaşımı tercih eder. Elverişlilik ve doğruluk arasında bir dengelemedir.
9
Ölümcül Kilitlenmeyle Mücadele
Kilitlenme Önleme Kilitlenmeden Kaçınma Kilitlenme Tespiti Kilitlenmeden Kurtarma
10
Kilitlenme Önleme Kilitlenme için gereken şartların asla oluşmamasını sağlamaktır. Karşılıklı Dışlama: Yazıcılar, salt okunur dosyalar vb. paylaşılabilir kaynaklara uygulanmaz. Paylaşılması sakıncalı kaynaklara uygulanır. Tut ve Bekle: Bir sürece “Ya yep ya hiç” mantığıyla kaynak verilir. Süreç istediği kaynakların hepsini alana kadar bekler. Kodlaması kolaydır ve işe yarar, ancak kaynak israfına ve aç kalmaya sebep olur. Öncelik Kullanmama: Bir sürecin kaynak isteği reddedilirse elindeki bütün kaynakları bırakmalıdır. Kaynaklar sürecin işi bitmeden elinden alınabilir. Bu da işe yarar ve daha iyi kaynak kullanımı sağlar ancak bir sürecin kaynaklarını elinden alma maliyeti, çalışmaların kaybedilmesi ve aç kalma ihtimali söz konusudur. Döngüsel Bekleme: Kaynaklar tek tek numaralanır. Süreçler kaynakları sadece artan sırada isteyebilirler. İşe yarar ve bazı İ.S. tarafından kullanılır. Kaynaklar ihtiyaçtan ziyade artan sayıya göre istenmeli, numaralama da yönetilmeli ve her ekleme İ.S. ‘ne yansımalıdır. Kodlaması zordur.
11
Kilitlenmeden Kaçınma
Sistemin asla güvensiz bir duruma girmemesini sağlamaktır. Bunun içinde bir takım önden (a priori) bilgiye ihtiyaç vardır. En basit ve kullanışlı model her sürecin ihtiyaç duyabileceği kaynak türlerinden en fazla kaç tane kullanacağını belirtmesidir. Ölümcül kilitlenmeden kaçınma algoritması döngüsel bekleme olmaması için kaynak tahsis durumunu dinamik olarak denetler. Kaynak tahsis durumu tahsis edilen ve müsait kaynakların sayısı ve süreçlerin maksimum talepleri olarak tanımlanır.
12
Güvenli Durum Bir süreç müsait bir kaynak talep ettiğinde sistem anında tahsisin sistemi güvenli durumda bırakıp bırakmayacağına karar vermelidir. Sistem eğer sistemdeki bütün süreçler için bir güvenli dizi varsa güvenli durumdadır. <P1, P2, … Pn> dizisi; eğer her Pi için Pi’ nin isteyebileceği kaynaklar mevcut müsait kaynaklar ve Pj’ nin (j<i) sahip olduğu kaynaklarla karşılanabilecekse güvenlidir. Sistem güvenli durumdaysa kilitlenme olmaz. Sistem güvensiz durumdaysa kilitlenme muhtemeldir.
13
Sistem Modeli Sistem kaynaklardan oluşmaktadır.
Kaynak türlerine (CPU, bellek, G/Ç vd.) R1,R2, … Rm denirse Her Ri kaynak türünün Wi kopyası olsun. Her süreç bir kaynaktan; kaynağı isteyip, kullanıp, işi bitince serbest bırakarak faydalanır.
14
Kaynak Tahsisi Çizgesi
G = (V, E) olmak üzere Bu çizgenin köşeleri (V) iki türdedir: P = {P1, P2, … Pn} sistemdeki bütün süreçlerin kümesidir. R = {R1, R2, … Rm} sistemdeki bütün kaynak türlerinin kümesidir. İstek kenarı: Pi Rj yönlü kenarıdır. Atama kenarı: Rj Pi yönlü kenarıdır. Çizgede döngü yoksa kilitlenme yoktur. Çizgede döngü varsa eğer kaynak türünün sadece bir kopyası varsa kilitlenme vardır, birden fazla kopyası varsa kilitlenme muhtemeldir.
15
Kaynak Tahsisi Çizgesi
Süreç 4 Kopyası Olan Kaynak Türü Pi ; Rj’ nin bir kopyasını istiyor. Pi ; Rj’ nin bir kopyasını kullanıyor. Pi Rj Pi Rj
16
Kaynak Tahsisi Çizgesi Örnekleri
Döngü olsa da kilitlenme yoktur Ölümcül Kilitlenme Döngü olsa da kilitlenme yoktur
17
Yemek Yiyen Düşünürler Kaynak Tahsis Çizgesi
Başlangıçta 4 düşünür ve 4 çatal vardır. R P4 P1 R R P3 P2 R
18
Yemek Yiyen Düşünürler Kaynak Tahsis Çizgesi
P1 sağ çatalı alır R P4 P1 R R P3 P2 R
19
Yemek Yiyen Düşünürler Kaynak Tahsis Çizgesi
P2 sağ çatalı alır R P4 P1 R R P3 P2 R
20
Yemek Yiyen Düşünürler Kaynak Tahsis Çizgesi
P3 sağ çatalı alır R P4 P1 R R P3 P2 R
21
Yemek Yiyen Düşünürler Kaynak Tahsis Çizgesi
P4 sağ çatalı ister. Döngü Var!! Reddedilir. R P4 P1 X R R P3 P2 R
22
Bankacı Problemi Bankanın toplam nakdi 1000 olursa mevcut nakit 1000-( )=380 olacaktır. İsteklere nasıl cevap verilir? Müşteri c1 c2 Max. İhtiyaç 800 600 Mevcut Kredi 410 210 İstek 390
23
Dijkstra’ nın Bankacı Algoritması
Her süreç için KREDİ: Sahip olunan mevcut kaynak sayısı MAKSİMUM İHTİYAÇ: İşin tamamlanması için gereken kaynak sayısı İSTEK = MAKSİMUM – KREDİ Her süreç için bir KREDİ tavanı (MAKSİMUM İHTİYAÇ) oluşturulur. (eldeki müsait kaynak bundan azdır.) Bir sürecin kredisi MAKSİMUM İHTİYAÇ’a eşit veya daha az olmalıdır. Verilen kaynaklar sonlu bir zamanda iade edilmelidir.
24
Dijkstra’ nın Bankacı Algoritması
Kalan kaynaklarla işini görecek bir süreç ara. (geçici olarak isteği ver) Eğer böyle bir süreç bulunursa, alınan kaynakların verileceğini kabul et. Kalan kaynakları güncelle Bütün süreçler için önceki adımları tekrarla ve işaretle Eğer en az bir süreç işaretlenemiyorsa istenen kaynakları verme. Bir kaynak isteği sadece güvenli durumla sonuçlanıyorsa verilir. Sistem daima güvenli durumda tutulur dolayısıyla eninde sonunda bütün taleplere karşılık verilir. İşe yarar ve işlerin bir engelleme algoritması çalışmadığında ilerlemesini sağlar. Sabit sayıda kaynağa ihtiyaç duyar. Eğer bir kaynak kaybolursa sıkıntı olur. Ayrıca sürecin çalışırken maksimum ihtiyacını değiştirmesine müsaade etmez.
25
(a) durumunun güvenli olduğu (b) – (e) arasında gösterilmektedir.
Güvenli Bir Durum (a) (b) (c) (d) (e) (a) durumunun güvenli olduğu (b) – (e) arasında gösterilmektedir.
26
Güvensiz Bir Durum (a) (b) (c) (d) (b) durumunun güvenli olmadığı (c) ve (d)’ de gösterilmektedir.
27
Tek Kaynak İçin Bankacı Algoritması
(a) (b) (c) Boş kaynakların tahsisinde (a) ve (b) güvenli, (c) güvensiz durumdadır.
28
Çok Kaynak İçin Bankacı Algoritması
Çok kaynaklı sistemler için bankacı algoritması örneği
29
Kilitlenme Tespiti Sistemin kilitlenme durumuna girmesine müsaade edilir. Kilitlenmenin varlığı ve dahil olan süreçlerle kaynaklar tespit edilir. Genellikle döngüsel beklemenin olup olmadığına bakılır. Tespitin maliyeti ele alınmalıdır. Her kaynak türü için tek kopya varsa kaynak tahsis çizgesi kullanılır. Her kaynak türü için çok kopya varsa bankacı algoritmasına benzer yöntemler kullanılır.
30
Petri Ağları İle Kilitlenme Tespiti
Verilen petri ağının erişilebilirlik çizgesi oluşturulur. Başlangıçta jeton bulunan durumlar çizgenin kökleridir. Yeni durumlar, köklerden tetiklenen geçişlerle belirtilir. Erişilen durumdan başka bir geçiş tetiklenemiyorsa ölü durumdur ve kilitlenme olur. Erişilen durumlar kendi içinde döngü oluşturuyor ve başlangıç durumuna dönülemiyorsa kilitlenme vardır.
31
Kilitlenmeden Kurtarma
Sıkıntı çıkaran süreçleri sonlandırarak kilitlenmeden kurtulmak mümkün olabilir. Sonlandırılan süreçte kaydedilmemiş veriler kaybolabilir. Kilitlenme döngüsünden çıkılana kadar teker teker süreçler kapatılır. Sürecin önceliği, ne kadar süre çalıştığı ve bitmesine ne kadar kaldığı, sürecin kullandığı kaynaklar, sürecin tamamlanma için ihtiyaç duyduğu kaynaklar, kaç sürecin sonlandırılması gerekliliği, sürecin etkileşimli mi toplu iş mi olduğu sonlandırma sırasını belirler.
32
Kilitlenmeden Kurtarma
Çoğu sistem bir sürecin sonlandırılıp yeniden başlatılmasını desteklemez. Bazı süreçler sonlandırılmamalıdır. Onlarca hatta yüzlerce sürecin dahil olduğu bir kilitlenmede işe yaramayabilir. Kilitlenen süreçler direkt öldürülür. Öldürme için sırayla seçim yapılır. Bazı sistemler kontrol noktası/yeniden başlatma özellikleri sunabilir. Yazılım geliştirilirken bazı kontrol noktaları tanımlanır, böylece süreç en son kontrol noktasından devam ettirilir.
33
Ölümcül Kilitlenmenin Kesin Çözümü
Bir ölümcül kilitlenmeden kurtuluşun en basit ve sık kullanılan yolu sistemi YENİDEN BAŞLATMAKTIR.
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.