ÜNİTE 4
BİRLİKTE ÇALIŞAN GÖREVLER
Bu Ünitede Neler Var?
• BİRLİKTE ÇALIŞAN GÖREVLER
• Koşut İşlem ve Görevler Arası Etkileşim
• Görevler Arası Zamanuyumlama
• Özel Donanım Desteği Gerektirmeyen Yöntemler
• Donanım Desteği Gerektiren Alt Düzey Araçlar
• Üst Düzey Zamanuyumlama Araçları
• Görevler Arası Kilitlenme
• Kilitlenmenin Tanımı
• Kilitlenmelerden Korunma
• Kilitlenmelerden Sakınma
BİRLİKTE ÇALIŞAN GÖREVLER
• Birlikte çalışan görevler zaman içinde koşut işletilen görevlerdir.
• İki görevin koşut işletimi, bunlardan birinin işletimi tümüyle sonlanmadan diğerinin de işletime alınması durumunda sözkonusu olur.
• Görev işletiminin koşutluğu gerçek ya da görüntü koşutluk olabilir.
• Birden çok işleyici içeren sistemlerde, eğer iki görev, herbiri bir işleyiciye atanmış biçimde işletiliyorsa buradaki koşutluğa gerçek koşutluk denir.
• Tek ana işlem birimi içeren sistemlerde iki görevin koşut işletimi, bu görevlerin, zaman içinde ana işlem birimini sırayla kullanmaları yoluyla sağlanır. Buradaki koşutluk, doğal olarak görüntü koşutluktur.
Koşut İşlem ve Görevler Arası Etkileşim
• Birlikte çalışan görevlerden en çok biri, aynı anda kritik kesimine girebilmelidir (karşılıklı dışlamanın sağlanması).
• Aynı anda ortak kaynağa erişmek isteyen görevlerden en az biri, sonlu bir süre için kritik kesimine girebilmelidir (karşılıklı tıkanmanın
engellenmesi).
• Kritik kesiminin dışındaki görevler ortak kaynağa erişmek isteyen görevleri engellememelidir.
• Görevlerin göreli hız ve öncelikleri ile sistemde yer alan ana işlem birimi sayısı hakkında herhangi bir varsayım yapılmamalıdır.
Görevler Arası Zamanuyumlama
• Özel Donanım Desteği Gerektirmeyen Yöntemler
• Donanım Desteği Gerektiren Alt Düzey Araçlar
• Üst Düzey Zamanuyumlama Araçları
Özel Donanım Desteği Gerektirmeyen Yöntemler
• Kesilme Düzeneğinin Kullanımı
• Algoritmik Yaklaşım
Donanım Desteği Gerektiren Alt Düzey Araçlar
• test-and-set türü Komutların Kullanımı
• İlkel Semafor İşleçlerinin Kullanımı
Üst Düzey Zamanuyumlama Araçları
• İleti Aktarımı, send/receive Komutları
• Monitör Kullanımı
Görevler Arası Kilitlenme
• Bilindiği gibi işletim sistemleri kullanıcılara hızlı işletim, kolay ve güvenli kullanım yönlerinden nitelikli bir hizmet sunarken sistem
kaynaklarının en verimli düzeyde kullanılmasını amaçlarlar. Yukarıda incelenen koşut işlem, bu genel amaca ulaşmanın temel araçlarından biridir. Gerek çok iş düzeni gerekse çok görevli işlem, koşut işletim
yapılmadan gerçekleşemez. Koşut işlem, sistem kaynaklarının görevler arasında paylaşılmasını ve bu paylaşımın eşgüdüm içinde yapılmasını gerektirir. Paylaşım ve eşgüdümün yarattığı görevler arası trafik,
kilitlenme olayını ortaya çıkarır.
Kilitlenmenin Tanımı
• Kilitlenme, bekleme durumundaki görevlerin, hazır görev durumuna geçebilmek için bir diğerinin sağlayacağı koşulu karşılıklı beklemelerine verilen addır.
• Görevler arası kilitlenmeyi ortaya çıkaran koşullar aşağıda verilen dört ana başlık altında toplanabilir:
• Karşılıklı Dışlama: Bir kaynağın aynı anda yalnız bir görev tarafından kullanılabilmesi.
• İstem üzerine kaynak atama: Görevin gereksediği kaynakları, teker teker, işletim aşamasında elde etmesi.
• Atanan kaynakların, görevler serbest bırakmadıkça geri alınamaması.
• Döngüsel Bekleme: Bir görevin elinde tuttuğu kaynaklardan bir yada daha çoğunun,
Kilitlenmelerden Korunma
• Kilitlenmelerden korunma, aynı anda bu dört koşuldan en az birinin oluşmasının engellenmesiyle gerçekleşir. Bu, işletime alınan görevlere kimi kısıtlamalar getirilerek sağlanır.
• Yukarıda sayılan koşullardan karşılıklı dışlama koşulunu ortadan kaldırma olanağı genelde bulunmaz. Zira bir sistemde yer alan
kaynakların sayısı, işletilen görev sayısından çok daha az olduğundan, bu kaynakların zorunlu paylaşımı karşılıklı dışlamayı da birlikte getirir.
Bu durumda arda kalan diğer üç koşuldan birinin kırılması kilitlenmeye karşı korunmayı sağlayabilir.
Kilitlenmelerden Sakınma
• Kilitlenmelerden sakınma, kilitlenmelere neden olan koşulları toptan kırmaya çalışmak yerine, herbir görev için, ayrı, ayrı gerekli ön incelemeleri yapmayı ve kaynak atamalarını buna göre yönlendirmeyi gerektirir.
• İlke olarak, bir görev, yeni bir kaynak isteminde bulunduğunda bu kaynakla ilgili işletim sistemi kesimi devreye girer. Görevin bu isteminin potansiyel bir
kilitlenmeye neden olup olmayacağını inceler. Kaynak ataması, ancak sonuç olumlu ise gerçekleştirilir.
• Görevlere kaynak atanırken bunun ileride bir kilitlenmeye neden olup olmayacağını belirleyebilen bir algoritma 1965 yılında Dijkstra tarafından tanımlanmıştır. Görevlere, kilitlenme oluşturmadan kaynak atayabilme, bir bankerin iflas etmeden borç verebilmesine benzediğinden Banker Algoritması
Kilitlenmelerin Yakalanması ve Ortadan Kaldırılması
• Kilitlenmelerle başa çıkmak için uygulanan bir diğer yol da, görevlerin kaynak istemlerine ilişkin herhangi bir kısıtlamaya gitmeden
kilitlenmelerin oluşmasını beklemek, bunlar oluştuğunda belirlenerek ortadan kaldırılmalarını sağlamaktır.
• Bu yol kullanıldığında, işletim sistemi görevlerin kaynak
gereksinimlerini, istem üzerine işletim aşamasında hiçbir kısıtlama getirmeden sağlar. Yalnız görevlere atanan ve bunlar tarafından serbest bırakılan kaynakları izleyerek ortaya çıkan kilitlenmeleri saptamaya çalışır.
Kaynak
• Saatçi, A., Bilgisayar İşletim Sistemleri, Ankara, 2003.