Professional Documents
Culture Documents
Operating System Concepts with Java – 8th Edition 6.1 Silberschatz, Galvin and Gagne ©2009
İşlem Senkronizasyonu
Arkaplan Bilgisi
Kritik-kısım Problemi
Peterson Çözümü
Senkronizasyon Donanımı
Semaforlar
Senkronizasyonun Klasik Problemleri
Monitörler
Senkronizasyon Örnekleri
Atomik İşlemler
Operating System Concepts with Java – 8th Edition 6.2 Silberschatz, Galvin and Gagne ©2009
Hedefler
Operating System Concepts with Java – 8th Edition 6.3 Silberschatz, Galvin and Gagne ©2009
Arkaplan Bilgisi
Operating System Concepts with Java – 8th Edition 6.4 Silberschatz, Galvin and Gagne ©2009
Üretici
Operating System Concepts with Java – 8th Edition 6.5 Silberschatz, Galvin and Gagne ©2009
Tüketici
while (count == 0)
; // do nothing
Operating System Concepts with Java – 8th Edition 6.6 Silberschatz, Galvin and Gagne ©2009
Yarışma Durumu - Örnek
register1 = count
register1 = register1 + 1
count = register1
count-- şu şekilde gerçekleştirilebilir
register2 = count
register2 = register2 - 1
count = register2
“count = 5” iken aşağıdaki işlemlerin gerçekleştiğini varsayın:
T0: üreticinin çalıştırdığı kod: register1 = count {register1 = 5}
T1: üreticinin çalıştırdığu kod: register1 = register1 + 1 {register1 = 6}
T2: tüketicinin çalıştırdığu kod: register2 = count {register2 = 5}
T3: tüketicinin çalıştırdığu kod: register2 = register2 - 1 {register2 = 4}
T4: üreticinin çalıştırdığı kod: count = register1 {count = 6 }
T5: tüketicinin çalıştırdığu kod: count = register2 {count = 4}
Operating System Concepts with Java – 8th Edition 6.7 Silberschatz, Galvin and Gagne ©2009
Yarışma Durumu - Tanım
Pek çok işlemin aynı anda bir veriye erişmek ve onu değiştirmek istediği
durumlarda işlemlerin çalışması sonucu elde edilen sonucun işlemlerin
veriye eriştiği sıraya bağlı olduğu durumlara yarışma durumları (race
condition) denir
Yarışma durumunda tutarlı sonuç elde etmek için, count değişkenine aynı
anda sadece bir işlemin erişmesini sağlamalıyız. Bu da işlemlerin
senkronizasyonu ile mümkündür
Yarışma durumları işletim sistemlerinde çok karşılaşılan bir durumdur
Bunun nedeni kaynakların (örn: hafıza, I/O cihazları) pek çok bileşen
tarafından paylaşılıyor olmasıdır
Çok çekirdekli işlemcilerin ve iş parçacıklarının kullanımı da durumu
giderek daha karmaşık hale getirmektedir
Operating System Concepts with Java – 8th Edition 6.8 Silberschatz, Galvin and Gagne ©2009
Kritik-kısım Problemi
Operating System Concepts with Java – 8th Edition 6.9 Silberschatz, Galvin and Gagne ©2009
Kritik-kısım Problemine Çözüm
2.İlerleme (progress) – Eğer kritik kısımda çalışan bir işlem yoksa ve bazı
işlemler kritik kısımda çalışmak istiyorsa, bu işlemlerden birini seçip
çalıştırmak sonsuza kadar ertelenmemelidir
Operating System Concepts with Java – 8th Edition 6.10 Silberschatz, Galvin and Gagne ©2009
Tipik Bir İşlemin Yapısı
Operating System Concepts with Java – 8th Edition 6.11 Silberschatz, Galvin and Gagne ©2009
Peterson’un Çözümü
İki işlem çözümü
flag dizisi bir işlemin kritik kısma girişe hazır olup olmadığını belirtiyor.
flag[i] = true Pi işlemininhazır olduğunu gösteriyor
Operating System Concepts with Java – 8th Edition 6.12 Silberschatz, Galvin and Gagne ©2009
Pi İşlemi için Algoritma
while (true) {
flag[i] = true;
turn = j;
while (flag[j] && turn == j);
critical section
flag[i] = false;
remainder section
}
Dikkat: j = 1 - i
Operating System Concepts with Java – 8th Edition 6.13 Silberschatz, Galvin and Gagne ©2009
Kilitleri Kullanarak Kritik-kısım Problemi Çözümü
while (true) {
acquire lock
critical section
release lock
remainder section
}
Operating System Concepts with Java – 8th Edition 6.14 Silberschatz, Galvin and Gagne ©2009
Senkronizasyon Donanımı
Kritik-kısım problemi icin pek çok sistem donanım desteği
sunmaktadır
Operating System Concepts with Java – 8th Edition 6.15 Silberschatz, Galvin and Gagne ©2009
Donanım Çözümleri için Veri Yapısı
Operating System Concepts with Java – 8th Edition 6.16 Silberschatz, Galvin and Gagne ©2009
GetAndSet Komutu ile Çözüm
Operating System Concepts with Java – 8th Edition 6.17 Silberschatz, Galvin and Gagne ©2009
Swap Komutu ile Çözüm
Operating System Concepts with Java – 8th Edition 6.18 Silberschatz, Galvin and Gagne ©2009
Semafor (Semaphore)
Meşgul bekleme (busy waiting) gerektirmeyen senkronizasyon aracı
Operating System Concepts with Java – 8th Edition 6.19 Silberschatz, Galvin and Gagne ©2009
Semafor Genel Senkronizasyon Aracı
Operating System Concepts with Java – 8th Edition 6.20 Silberschatz, Galvin and Gagne ©2009
Java ile Semafor Kullanımı (1)
Operating System Concepts with Java – 8th Edition 6.21 Silberschatz, Galvin and Gagne ©2009
Java ile Semafor Kullanımı (2)
Operating System Concepts with Java – 8th Edition 6.22 Silberschatz, Galvin and Gagne ©2009
Semafor Gerçekleştirimi
Operating System Concepts with Java – 8th Edition 6.23 Silberschatz, Galvin and Gagne ©2009
Meşgul Bekleme Yapmayan Semafor
Gerçekleştirimi (1)
İki işlem:
block – bu komutu çalıştıran işlemi uygun bekleme listesine
yerleştirir
wakeup – bekleme listesinde bulunan bir işlemi listeden siler
ve bekleme kuyruğuna (ready queue) yerleştirir
Operating System Concepts with Java – 8th Edition 6.24 Silberschatz, Galvin and Gagne ©2009
Meşgul Bekleme Yapmayan Semafor
Gerçekleştirimi (2)
acquire() gerçekleştirimi:
release() gerçekleştirimi:
Operating System Concepts with Java – 8th Edition 6.25 Silberschatz, Galvin and Gagne ©2009
Deadlock and Starvation
Kilitlenme (Deadlock) – iki vea daha fazla işlem, sadece bekleyen bir
işlemin neden olabileceği bir olayı sonsuza kadar bekliyor
Operating System Concepts with Java – 8th Edition 6.26 Silberschatz, Galvin and Gagne ©2009
Klasik Senkronizasyon Problemleri
Sınırlı Tampon Bellek Problemi (Bounded-Buffer Problem)
Operating System Concepts with Java – 8th Edition 6.27 Silberschatz, Galvin and Gagne ©2009
Sınırlı Tampon Bellek Problemi
Operating System Concepts with Java – 8th Edition 6.28 Silberschatz, Galvin and Gagne ©2009
Sınırlı Tampon Bellek - Factory
Operating System Concepts with Java – 8th Edition 6.29 Silberschatz, Galvin and Gagne ©2009
Sınırlı Tampon Bellek
Operating System Concepts with Java – 8th Edition 6.30 Silberschatz, Galvin and Gagne ©2009
Sınırlı Tampon Bellek - insert()
Operating System Concepts with Java – 8th Edition 6.31 Silberschatz, Galvin and Gagne ©2009
Sınırlı Tampon Bellek - remove()
Operating System Concepts with Java – 8th Edition 6.32 Silberschatz, Galvin and Gagne ©2009
Sınırlı Tampon Bellek - Producer
Operating System Concepts with Java – 8th Edition 6.33 Silberschatz, Galvin and Gagne ©2009
Sınırlı Tampon Bellek - Consumer
Operating System Concepts with Java – 8th Edition 6.34 Silberschatz, Galvin and Gagne ©2009
Okuyucular-Yazıcılar Problemi (1)
Bir veri kümesi, aynı anda çalışan birden fazla işlem arasında
paylaştırılıyor
Okuyucular – sadece veriyi okuyorlar, veriyi güncellemiyorlar
Yazıcılar – hem okuyup hem de yazabiliyorlar
Operating System Concepts with Java – 8th Edition 6.35 Silberschatz, Galvin and Gagne ©2009
Okuyucular-Yazıcılar Problemi (2)
Operating System Concepts with Java – 8th Edition 6.36 Silberschatz, Galvin and Gagne ©2009
Okuyucular-Yazıcılar – Kilit Arayüzü
Operating System Concepts with Java – 8th Edition 6.37 Silberschatz, Galvin and Gagne ©2009
Okuyucular-Yazıcılar - Yazıcı
Operating System Concepts with Java – 8th Edition 6.38 Silberschatz, Galvin and Gagne ©2009
Okuyucular-Yazıcılar - Okuyucu
Operating System Concepts with Java – 8th Edition 6.39 Silberschatz, Galvin and Gagne ©2009
Okuyucular-Yazıcılar - Veritabanı
Operating System Concepts with Java – 8th Edition 6.40 Silberschatz, Galvin and Gagne ©2009
Okuyucular-Yazıcılar - Okuyucu Metotları
Operating System Concepts with Java – 8th Edition 6.41 Silberschatz, Galvin and Gagne ©2009
Okuyucular-Yazıcılar - Yazıcı Metotları
Operating System Concepts with Java – 8th Edition 6.42 Silberschatz, Galvin and Gagne ©2009
Yemek Yiyen Filozoflar Problemi
Paylaşılan veri
bir kase pilav (veri kümesi)
chopStick [5] semaforları, ilk değerleri 1 – yemek çubuğu
Operating System Concepts with Java – 8th Edition 6.43 Silberschatz, Galvin and Gagne ©2009
Yemek Yiyen Filozoflar – Filozof i
Operating System Concepts with Java – 8th Edition 6.44 Silberschatz, Galvin and Gagne ©2009
Semafor Çözümü Problemleri
Operating System Concepts with Java – 8th Edition 6.45 Silberschatz, Galvin and Gagne ©2009