Uyuyan berber sorunu

Vikipedi, özgür ansiklopedi

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]

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]

Ayrıca bakınız[değiştir | kaynağı değiştir]