İnönü Üniversitesi Bilgisayar Mühendisliği Bölümü

Slides:



Advertisements
Benzer bir sunumlar
FEN BİLİMLERİ ENSTİTÜSÜ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
Advertisements

İşlemci Zaman Planlaması
Ayrık Yapılar Algoritma Analizi.
ALPER LAÇİN SERDAR TAŞAN
BPR151 ALGORİTMA VE PROGRAMLAMA - I
MIT503 Veri Yapıları ve algoritmalar Algoritma Oluşturma – Açgözlü algoritmalar ve buluşsallar Y. Doç. Yuriy Mishchenko.
Problem çözme yöntem ve teknİklerİ
YAPAY ZEKA ÖDEV - 3 Kenan KILIÇASLAN Trakya Üniversitesi Fen Bilimleri Enstitüsü Makina Mühendisliği Doktora Programı.
İŞ SIRALAMA VE ÇİZELGELEME
İş (Job): Proses ve/veya thread
Bölüm 1: Introductions (Tanıtım,Tanım)
Bellek Yönetimi.
İçerik Ön Tanımlar En Kısa Yol Problemi Yol, Cevrim(çember)
Görev Yönetimi GÖREV bir programın işletimi sırasında aldığı addır.
RAID Nedir?.
Çizge Algoritmaları.
Chapter 8: Deadlocks (ölümcül kilitlenmeler)
KONU:Sistem sorun giderme ve geri yükleme
Yapısal Program Geliştirme – if, if-else
BÖLÜM 8 DEADLOCKS.
Çizge Teorisi, Dağıtık Algoritmalar ve Telsiz Duyarga Ağları
Projenin sonlandırılması
BPR151 ALGORİTMA VE PROGRAMLAMA - I
Algoritmalar (Algoritms)
GRAF TEORİSİ Ders 1 TEMEL KAVRAMLAR.
DEĞİŞKENLER, VERİ TÜRLERİ VE OPERATÖRLER
İŞLETİM SİSTEMLERİ Öğr. Gör. S.Serkan TAN.
ÇİZGELERİN GÖSTERİMİ Yılmaz KILIÇASLAN.
SINIFLANDIRMA VE REGRASYON AĞAÇLARI
PROCESS (GÖREV) GÖREV YÖNETİMİ
KARAR ALICI OLARAK YÖNETİCİ.
Çizge Algoritmaları Ders 2.
ENF 204 Bilgisayar Programlama Algoritma ve Akış Diyagramları
İşlem Yönetimi (Kilitlenme)
DERS 8 (ÖLÜMCÜL KİTLENMELER)
Bölüm 13: I/O Sistemleri Giriş/Çıkış Donanımı
BİL İŞLETİM SİSTEMLERİ
Ölümcül Kilitlenme (Deadlock)
BİLİŞİM TEKNOLOJİLERİ
GRAFİK NEDİR?   İstatistik bilim dalında çeşitli yöntemlerle elde edilen sonuçların çizgi ve şekillerle ifade edilmesine grafik denir.
BİLGİSAYAR MİMARİLERİ 7.Hafta: Çoklu-Çevrim İşlemci
 Projeler üç nedenle sona erdirilirler. 1. Proje amaçlarına ulaşılmış ve başarılı olarak tamamlanmıştır. 2. Projenin durdurulması gerekmektedir. 3. Proje.
FAT VE NTFS DOSYA YAPISI
ALGORİTMA VE PROGRAMLAMA 
Algoritma ve Akış Şemaları
İleri Algoritmalar 1. ders.
Algoritmalar II Ders 5 Açgözlü Algoritmalar.
T.C. ÖMER HALİSDEMİR ÜNİVERSİTESİ EĞİTİM FAKÜLTESİ BİLGİSAYAR VE ÖĞRETİM TEKNOLOJİLERİ ÖĞRETMENLİĞİ EĞİTİMDE BİLİŞİM TEKNOLOJİLERİ – 2 DERSİ ALGORİTMALAR.
ANKARA ÜNİVERSİTESİ SAĞLIK BİLİMLERİ FAKÜLTESİ SOSYAL HİZMET BÖLÜMÜ
Algoritmalar II Ders 8 Açgözlü Algoritmalar.
Algoritmalar II Ders 13 Çizgelerde tüm ikililer arasında en kısa yollar.
Çizgeler Çizge G=(V,E), ikilisine denir, burada V sonlu bir kümedir, E ise bu kümenin elemanları arasında ikili bir bağıntıdır. V kümesine G çizgesinin.
PROXY SERVER YASİN ÇAKIR
9. Ders Tüm ikililer arasında en kısa yollar
GPU LİSANSLAMANIN AVANTAJLARI VE DEZAVANTAJLARI NELERDİR?
FONKSİYONLAR.
İleri Algoritma Analizi
Algoritma Nedir? Algoritmayı, herhangi bir problemin çözümü için izlenecek yolun adımlar halinde yazılması olarak tanımlayabiliriz. Algoritma, bir problemin.
İşletim Sistemleri (Operating Systems)
İşletim Sistemleri (Operating Systems)
Çizge Algoritmalari 4. ders.
NİŞANTAŞI ÜNİVERSİTESİ
İleri Algoritmalar Ders 3.
NİŞANTAŞI ÜNİVERSİTESİ
Çizge Teorisi ve Algoritmalari
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Fonksiyonlar-2.
Bilgisayar Bilimi Problem Çözme Süreci-3.
NİŞANTAŞI ÜNİVERSİTESİ
Raptor - Reed-Solomon Göndermede Hata Düzeltim Kodları (FEC)
Sunum transkripti:

İnönü Üniversitesi Bilgisayar Mühendisliği Bölümü Ölümcül Kilitlenme İnönü Üniversitesi Bilgisayar Mühendisliği Bölümü

Nedir

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.

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

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

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.

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.

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.

Ölümcül Kilitlenmeyle Mücadele Kilitlenme Önleme Kilitlenmeden Kaçınma Kilitlenme Tespiti Kilitlenmeden Kurtarma

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.

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.

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.

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.

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.

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

Kaynak Tahsisi Çizgesi Örnekleri Döngü olsa da kilitlenme yoktur Ölümcül Kilitlenme Döngü olsa da kilitlenme yoktur

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

Yemek Yiyen Düşünürler Kaynak Tahsis Çizgesi P1 sağ çatalı alır R P4 P1 R R P3 P2 R

Yemek Yiyen Düşünürler Kaynak Tahsis Çizgesi P2 sağ çatalı alır R P4 P1 R R P3 P2 R

Yemek Yiyen Düşünürler Kaynak Tahsis Çizgesi P3 sağ çatalı alır R P4 P1 R R P3 P2 R

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

Bankacı Problemi Bankanın toplam nakdi 1000 olursa mevcut nakit 1000-(410+210)=380 olacaktır. İsteklere nasıl cevap verilir? Müşteri c1 c2 Max. İhtiyaç 800 600 Mevcut Kredi 410 210 İstek 390

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.

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.

(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.

Güvensiz Bir Durum (a) (b) (c) (d) (b) durumunun güvenli olmadığı (c) ve (d)’ de gösterilmektedir.

Tek Kaynak İçin Bankacı Algoritması (a) (b) (c) Boş kaynakların tahsisinde (a) ve (b) güvenli, (c) güvensiz durumdadır.

Çok Kaynak İçin Bankacı Algoritması Çok kaynaklı sistemler için bankacı algoritması örneği

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.

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.

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.

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.

Ö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.