Uyuyan berber sorunu - Vikipedi
Bilgisayar mühendisliğinde, uyuyan berber sorunu işletim sistemleri konusunda klasik bir sorundur. Berber ve müşteriler prosesler olarak düşünülebilir.
Gerçekleme
[değiştir | kaynağı değiştir]- 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)
Kaynakça
[değiştir | kaynağı değiştir]- Modern Operating Systems (3rd Edition) by Andrew S. Tanenbaum
- The Little Book of Semaphores by Allen B. Downey, http://greenteapress.com/semaphores 11 Haziran 2011 tarihinde Wayback Machine sitesinde arşivlendi.
Ayrıca bakınız
[değiştir | kaynağı değiştir]Bilgisayar ile ilgili bu madde taslak seviyesindedir. Madde içeriğini genişleterek Vikipedi'ye katkı sağlayabilirsiniz. |