Çok prosesli ortamlarda prosesler bellek alanı MİB’i kullanılan dosyalar giriş-çıkış birimleri gibi sonlu sayıdaki kaynaklar için yarışırlar. Bir proses kaynak alamadığında bekleme durumuna geçer. Kaynağı elinde bulunduran proseste bekleme durumunda olabilir. Bu durumda kaynağı bırakmaz kaynağı bekleyen proseste bekleme konumuna geçer. Bu duruma ölümcül kitlenme denir. Yani ölümcül kitlenme kaynakları paylaşan proseslerin sonsuza kadar bekleme durumuna alıp bloke olabilir. Prosesler ellerindeki kaynakları bırakmadan başka kaynak isterse ölümcül kitlenme olabilir.
Ölümcül kitlenmeye temel olarak 4 temel neden olmaktadır.
- Bir ya da daha fazla kaynağın (cpu,memory) aynı anda sadece bir proses tarafından kullanabileceği paylaşım olmayan karşılıklı dışlama durumlarıdır.
- Prosesin elindeki kaynağı bırakmadan başka ihtiyaç duyduğu ve bu kaynağı bulamayıp bloke olduğu sahiplenme ve bekleme durumlarıdır.
- İşletim sistemlerinin kaynakların proseslerin izni olmadan alamadığı geri alınamaz kaynak durumlarıdır.
- 2 veya daha fazla prosesin kendinden bir öncekinin elinde bulunana kaynağın ihtiyaç duyduğu çevrel bir kuyruğun oluştuğu çevrel bekleme durumudur.
Ölümcül kitlenmeyi önlemek için tercih edilen yöntemler ;
Ölümcül kitlenmeye neden olan koşullardan en az birinin ortadan kaldırılarak ölümcül kitlenmenin olmadığı sistem tasarlamak. Ölümcül kitlenmeye sezmek veya ölümcül kitlenmeye neden olacak prosesi başlatmamak kaynak tahsisi yapmamak.
Petri netler ile ölümcül kitlenmenin nedeni
Ölümcül kitlenme 2 şekilde ortaya çıkmaktadır. Eğer erişilen durumdan başka bir geçiş tetiklenmiyorsa o duruma ölü durum denilmektedir ve ölümcül kitlenme mevcuttur. Erişilen durumlar kendi içinde döngü oluşturuyor ve başlangıç durumuna dönülemiyorsa yine ölümcül kitlenme mevcuttur.
Bu yazı yorumlara kapalı.