Bölüm 6 · Simülasyon

Senkronizasyon Laboratuvarı

← Bölüm 6
Mod
Süreç 4
Kapasite 2
Hız 1.5/s

Adım 0/0 ✓ İçeride 0 ⏸ Bloke 0

Senkronizasyon Laboratuvarı

Süreçler, semaforlar üzerindeki wait/signal işlemlerinden oluşan küçük bir program çalıştırır. Round robin çizelgeleyici her adımda bloke olmayan sıradaki sürece bir işlem yaptırır; böylece kimin kritik bölgeye girdiği, kimin bir semaforun FIFO kuyruğunda bloke olduğu ve kimin kimi uyandırdığı izlenir. Sağdaki panel her sürecin sıradaki işlemini ve son olayları listeler.

Kullanım

  • Bir senaryo seçilir: Mutex (paylaşılan sayaç), Semafor (sınırlı izin), Üretici–Tüketici (sınırlı tampon), Okur–Yazar ya da Yemek Yiyen Filozoflar.
  • İkinci satır seçeneği (kilitli ya da kilitsiz, hangi tarafın hızlı olduğu, sıralı ya da saf çatal alma), süreç sayısını (2–8) ve kapasiteyi (izin ya da tampon yuvası, 1–6) değiştirir.
  • ▶ oynatır; adım düğmeleri bir işlem geri ya da ileri gider veya başa ya da sona atlar (en çok 150 adım ya da kilitlenmeye kadar).
  • Karşılaştır, geçerli senaryonun seçeneklerini 120 adım boyunca yan yana çalıştırır.

İşlemler

wait(S)
S > 0 ise azalt; değilse S’nin FIFO kuyruğunda bloke ol.
signal(S)
Bekleyen varsa ilkini uyandır (izni o alır); yoksa S’yi artır.
Çizelgeleyici
Round robin: bloke olmayan sıradaki süreç bir işlem yapar.
Mutex
Oku → değiştir → yaz adımlarını saran ikili semafor.
Yarış durumu
Senkronizasyon yok: eskimiş iki okuma bir güncellemeyi kaybettirir.
empty / full
Boş / dolu tampon yuvaları.
rw_mutex
İlk okur kilitler, son okur açar; yazar onu tek başına tutmalıdır.
Sıralı çatallar
Önce küçük numaralı çatalı almak döngüsel beklemeyi kırar.
Kilitlenme
Tüm süreçler bloke: kimse signal yapamaz.

Gösterim

hazır ✓ kritik bölgede ⏸ bloke son işlem yapan

Tuşlar

←→ adımBoşluk oynatHomeEndEsc kapat