Semafor ve Monitör
Semafor, paralel programlama ortamlarında birden çok işlemin ortak bir kaynağa veya kritik bir bölüme aynı anda erişmediğinden emin olmak için kullanılan bir veri yapısıdır. Semaforlar ölü kilitleri ve yarış koşullarını önlemek için kullanılır. Monitör, aynı anda ortak bir kaynağa erişen birden çok işlemden kaçınmak için kullanılan ve bu nedenle karşılıklı dışlamayı garanti eden bir programlama dili yapısıdır. Monitörler bu görevi yerine getirmek için koşullu değişkenler kullanır.
Semafor nedir?
Semafor, kritik bölümlere karşılıklı dışlama sağlamak için kullanılan bir veri yapısıdır. Semaforlar çoğunlukla bekle (tarihsel olarak P olarak bilinir) ve sinyal (tarihsel olarak V olarak bilinir) adı verilen iki işlemi destekler. Bekleme işlemi, semafor açılana ve sinyal işlemi başka bir işlemin (iş parçacığı) girmesine izin verene kadar bir işlemi engeller. Her semafor bir bekleme işlemleri sırası ile ilişkilidir. Bekleme işlemi bir iş parçacığı tarafından çağrıldığında, semafor açıksa, iş parçacığı devam edebilir. Bir iş parçacığı tarafından bekleme işlemi çağrıldığında semafor kapatılırsa, iş parçacığı engellenir ve kuyrukta beklemesi gerekir. Sinyal işlemi bir semafor açar ve kuyrukta zaten bekleyen bir iş parçacığı varsa, bu işlemin devam etmesine izin verilir ve kuyrukta bekleyen iş parçacığı yoksa, sonraki iş parçacıkları için sinyal hatırlanır. Muteks semaforları ve sayma semaforları olarak adlandırılan iki tür semafor vardır. Muteks semaforları, bir kaynağa tek bir erişime izin verir ve sayma semaforları, birden çok iş parçacığının bir kaynağa erişmesine izin verir (birkaç birim kullanılabilir).
Monitör Nedir?
Monitör, paylaşılan verilere erişimi kontrol etmek için kullanılan bir programlama dili yapısıdır. Monitörler, paylaşılan veri yapılarını, prosedürleri (paylaşılan veri yapıları üzerinde çalışan) ve eşzamanlı prosedür çağrıları arasındaki senkronizasyonu kapsar. Bir monitör, verilerinin yapılandırılmamış erişimlerle karşı karşıya kalmamasını sağlar ve izlerin (monitörün verilerine prosedürleri aracılığıyla erişen) yasal bir şekilde etkileşime girmesini garanti eder. Bir monitör, belirli bir zamanda herhangi bir monitör yordamını yürütmesine izin vererek karşılıklı dışlamayı garanti eder. Başka bir iş parçacığı monitörde bir yöntemi çağırmaya çalışırsa, iş parçacığı monitörde zaten bir yordam yürütüyorsa, ikinci yordam engellenir ve kuyrukta beklemesi gerekir. Hoare monitörleri ve Mesa monitörleri olarak adlandırılan iki tür monitör vardır. Temel olarak programlama semantiklerinde farklılık gösterirler.
Semaphore ve Monitor arasındaki fark nedir?
Semaforlar ve monitörler paralel programlama ortamlarında karşılıklı dışlama sağlamak için kullanılsalar da, bu görevi gerçekleştirmek için kullanılan tekniklerde farklılık gösterirler. Monitörlerde, karşılıklı dışlama elde etmek için kullanılan kod tek bir yerde bulunur ve daha yapılandırılırken, semaforlar kodu bekleme ve sinyal fonksiyonu çağrıları olarak dağıtılır. Ayrıca, semaforları uygularken hata yapmak çok kolaydır, monitörleri uygularken hata yapma şansı çok azdır. Ayrıca, monitörler koşul değişkenlerini kullanırken, semaforlar kullanmaz.