Bir Monitör ile Semafor arasındaki en büyük farklar nelerdir ?
Bir Monitör ile Semafor arasındaki en büyük farklar nelerdir ?
Yanıtlar:
Bir Monitör birden çok iş parçacığı erişim için tasarlanmıştır bir amacıdır. Bir izleme nesnesinin üye işlevleri veya yöntemleri karşılıklı dışlamayı zorlar, bu nedenle belirli bir zamanda nesne üzerinde herhangi bir eylem gerçekleştirebilir. Bir iş parçacığı şu anda nesnenin üye işlevini yürütüyorsa, o nesnenin üye işlevini çağırmaya çalışan diğer iş parçacıklarının ilk iş bitene kadar beklemesi gerekir.
Bir Semafor alt düzey bir nesnedir. Bir monitörü uygulamak için bir semafor kullanabilirsiniz. Bir semafor aslında sadece bir sayaçtır. Sayaç pozitif olduğunda, bir iplik semaforu almaya çalışırsa, buna izin verilir ve sayaç azaltılır. Bir iş parçacığı yapıldığında, semaforu serbest bırakır ve sayacı artırır.
Bir iş parçacığı semaforu almaya çalıştığında sayaç zaten sıfırsa, başka bir iş parçacığı semaforu serbest bırakana kadar beklemek zorundadır. Bir iş parçacığı bir semaforu serbest bıraktığında birden çok iş parçacığı bekliyorsa, onlardan biri onu alır. Bir semaforu serbest bırakan iş parçacığının onu elde eden iş parçacığı ile aynı olması gerekmez.
Monitör umumi tuvalet gibidir. Bir kerede yalnızca bir kişi girebilir. Başkalarının içeri girmesini önlemek, eşyalarını yapmak ve sonra giderken kilidini açmak için kapıyı kilitlerler.
Bir semafor bisiklet kiralama yeri gibidir. Belli sayıda bisikletleri var. Eğer denemek ve bir bisiklet kiralamak ve onlar-si olmak bir özgür o zaman sen-ebilmek almak o, aksi takdirde beklemek gerekir. Birisi bisikletini geri verdiğinde, başka biri bisikletini alabilir. Eğer bir bisikletiniz varsa, geri dönmek için başkasına verebilirsiniz --- bisiklet kiralama yeri, bisikletlerini geri aldıkları sürece kimin geri döndüğü umrunda değil.
Aşağıdaki açıklama aslında monitörün wait () ve sinyalinin () semaforunun P ve V'den nasıl farklı olduğunu açıklar.
Bekleme () ve sinyal () bir koşul değişkenleri işlemler monitör benzer P ve V sayımı ile ilgili işlemler semaforlarıyla .
Wait ifadesi bir işlemin yürütülmesini engelleyebilir, bir sinyal ifadesi ise başka bir işlemin engellenmesine neden olabilir. Ancak, bazı farklılıklar varonların arasında. Bir işlem bir P işlemi yürüttüğünde, sayma semaforu sıfırdan büyük olabileceğinden, bu işlemi mutlaka engellemez. Bunun aksine, bir wait ifadesi yürütüldüğünde, işlemi her zaman engeller. Bir görev semaforda bir V işlemi gerçekleştirdiğinde, o semaforda bekleyen bir görevin engellemesini kaldırır veya kilidini açmak için bir görev yoksa semafor sayacını artırır. Öte yandan, bir işlem, engellenecek başka bir işlem olmadığında bir sinyal ifadesi yürütürse, koşul değişkeni üzerinde bir etkisi olmaz. Semaforlar ve monitörler arasındaki bir diğer fark, bir V işlemi ile uyanan kullanıcıların gecikmeden yürütmeye devam edebilmeleridir. Bunun aksine, bir sinyal işlemi ile uyanan kullanıcılar sadece ekranın kilidi açıldığında yeniden başlatılır. Ek olarak,
Link: daha fazla okumak için burada . Umarım yardımcı olur.
Semafor, birden çok iş parçacığının (belirli bir sayıya kadar) paylaşılan bir nesneye erişmesine izin verir. Monitörler, paylaşılan bir nesneye karşılıklı olarak özel erişime izin verir.
java.util.ArrayList
birden çok nesnenin bir nesnesi mi, yoksa bir konteyner mi? Her ikisi de aynı zamanda. Semafor, erişimi kontrol etmek için uygun mudur? Şunu söyleyebilirim: hayır.
Kritik bir bölgeyi korumak için bir semafor kullanıldığında, semafor ile korunan veriler arasında doğrudan bir ilişki yoktur. Bu, semaforların kod etrafında dağılmasının nedeninin ve bekleme veya bildirmeyi unutmayı unutma nedeninin bir parçasıdır, bu durumda sonuç sırasıyla karşılıklı dışlamayı ihlal etmek veya kaynağı kalıcı olarak kilitlemek olacaktır.
Aksine, bu kötü şeylerin bir monitöründe olabilir. Bir monitör doğrudan verilere yorulur (verileri kapsüller) ve monitör işlemleri atom eylemleri olduğundan, giriş protokolünü çağırmadan verilere erişebilen kod yazmak imkansızdır. Monitör işlemi tamamlandığında çıkış protokolü otomatik olarak çağrılır.
Bir monitörün devam etmeden önce durum değişkeni biçiminde durum senkronizasyonu için yerleşik bir mekanizması vardır. Koşul yerine getirilmezse, süreç durumdaki bir değişiklik bildirilinceye kadar beklemek zorundadır. Bir işlem koşul senkronizasyonu beklerken, monitör uygulaması karşılıklı dışlama sorununu halleder ve başka bir işlemin monitöre erişmesini sağlar.
Açık Üniversite M362 Ünite 3 "Etkileşim süreci" ders materyallerinden alınmıştır.
Semafor:
Eşzamanlı bir sistemdeki bazı paylaşılan kaynaklara erişimi kontrol etmek için bir sayaç veya bayrak kullanmak, Semaphore'un kullanılması anlamına gelir .
Misal:
Bayraklar yalnızca Kaynak'ın geçerli durumunu gösterir, sayım veya kaynakta bekleyen veya çalışan nesneler hakkında herhangi bir bilgi yoktur.
Monitör:
Bir Monitör bazı koşul doğru olması için acquire erişim veya bekleme istemenizi, nesne ile ilgilenen iş parçacığı ile iletişim kurarak bir nesne erişimini eşitler.
Misal: