Uyuyan Berber Sorunu

Kısaca: uyuyan berber sorunu işletim sistemleri konusunda klasik bir sorundur. Berber ve müşteriler prosesler olarak düşünülebilir. ...devamı ☟

uyuyan berber sorunu işletim sistemleri konusunda klasik bir sorundur. Berber ve müşteriler prosesler olarak düşünülebilir. Gerçekleme * Aşağıdaki sözde kod berber ve müşteriler için ölümcül kilitlenme olmayan bir çözümdür ancak kaynak açlığına yol açabilir. Semaphore Müşteriler = 0 Semaphore Berber = 0 Semaphore sandalyelereErişim = 1 # mutex int BoşSandalyeSayısı = N # toplam sandalye sayısı def Berber(): while true: # Bir sonsuz döngü içinde çalış. P(Müşteriler) # Bir müşteri yakalamaya çalış. Eğer uygun bir müşteri yoksa uyu. P(sandalyelereErişim) # Uyandım - uygun sandalye sayısını değiştir. BoşSandalyeSayısı++ # Bir sandalye boşa çıktı. V(Berber) # Tıraşa hazırım. V(sandalyelereErişim) # Artık sandalyeler üzerinde kilide ihtiyaç yok. # (Tıraş) def Müşteri(): while true: # Bir sonsuz döngü içinde çalış. P(sandalyelereErişim) # Sandalyelere ulaşmaya çalış. if BoşSandalyeSayısı > 0: # Eğer boşta sandalye varsa: BoşSandalyeSayısı-- # bir sandalyeye otur V(Müşteriler) # müşteri bekleyen berberi uyar V(sandalyelereErişim) # artık sandalyeler üzerinde kilide ihtiyaç yok P(Berber) # sıra bu müşterinin, fakat berber meşgulse bekle. # (Tıraş) else: # boşta sandalye yok; şanssızlık... V(sandalyelereErişim) # sandalyeler üzerindeki kilidi bırakmayı unutma! # (Tıraş olmadan ayrıl) Kaynaklar * Modern Operating Systems (3rd Edition) by Andrew S. Tanenbaum * The Little Book of Semaphores by Allen B. Downey, http://greenteapress.com/semaphores Ayrıca bakınız * Makarna yiyen düşünürler sorunu

Kaynaklar

Vikipedi

Bu konuda henüz görüş yok.
Görüş/mesaj gerekli.
Markdown kullanılabilir.