Semafor nedir?
Semafor , negatif olmayan ve iş parçacıkları arasında paylaşılan bir değişkendir. Bir semafor, bir sinyalleşme mekanizmasıdır ve bir semafor üzerinde bekleyen bir iş parçacığı başka bir iş parçacığı tarafından sinyallenebilir. İki atomik işlem kullanır, 1) bekleme ve 2) işlem senkronizasyonu için sinyal.
Bir semafor, nasıl kurulduğuna bağlı olarak kaynağa erişime izin verir veya vermez.
Bu eğitimde şunları öğreneceksiniz:
- Mutex nedir?
- Semafor Kullanımı
- Mutex Kullanımı
- Semafor ile Mutex arasındaki fark
- Mutex ve Semafor hakkında Yaygın Yanlış Kanılar
- Semaforun Avantajları
- Mutex'in Avantajları
- Semaforların dezavantajı
- Mutex'in dezavantajları
Mutex nedir?
Mutex'in tam formu Karşılıklı Dışlama Nesnesidir. Paylaşılan kaynağa erişimi kontrol etmek için kullanılan özel bir ikili semafor türüdür. Genişletilmiş öncelikli ters çevirme sorunlarını önlemek için bir öncelikli kalıtım mekanizması içerir. Mevcut yüksek öncelikli görevlerin mümkün olan en kısa süre için engellenmiş durumda tutulmasına izin verir. Ancak, öncelikli miras, önceliğin tersine çevrilmesini düzeltmez, yalnızca etkisini en aza indirir.
ANAHTAR FARK
- Mutex bir kilitleme mekanizmasıdır, Semafor ise bir sinyalleşme mekanizmasıdır.
- Mutex sadece bir nesnedir, Semafor ise bir tamsayıdır
- Mutex'in alt türü yoktur, Semafor'un semafor ve ikili semaforu sayan iki türü vardır.
- Semafor, bekleme ve sinyal işlemlerinin değiştirilmesini desteklerken, Mutex yalnızca bir kaynak isteyebilecek veya serbest bırakabilecek işlem tarafından değiştirilir.
- Semafor değeri wait () ve signal () işlemleri kullanılarak değiştirilir, diğer yandan Mutex işlemleri kilitlenir veya kilidi açılır.
Semafor Kullanımı
Tek bir arabellek durumunda, 4 KB arabelleği dört 1 KB arabelleğe ayırabiliriz. Semafor bu dört tamponla ilişkilendirilebilir. Bu, kullanıcıların ve üreticilerin aynı anda farklı tamponlar üzerinde çalışmasını sağlar.
Mutex Kullanımı
Bir muteks, anahtara (muteks) sahip olabilecek ve işlerine devam edebilecek üretici veya tüketici olabilen karşılıklı dışlama sağlar. Üretici tamponu doldurduğu sürece, kullanıcının beklemesi gerekir ve bunun tersi de geçerlidir. Mutex kilidinde her zaman sadece tek bir iş parçacığı tüm tamponla çalışabilir.
Semafor ile Mutex arasındaki fark
Parametreler | Semafor | Mutex |
---|---|---|
Mekanizma | Bir tür sinyalleşme mekanizmasıdır. | Kilitleme mekanizmasıdır. |
Veri tipi | Semafor bir tamsayı değişkendir. | Mutex sadece bir nesnedir. |
Değişiklik | Bekleme ve sinyal işlemleri bir semaforu değiştirebilir. | Yalnızca bir kaynak isteyebilecek veya serbest bırakabilecek işlem tarafından değiştirilir. |
Kaynak yönetimi | Hiçbir kaynak ücretsiz değilse, işlem, bekleme işlemini yürütmesi gereken bir kaynak gerektirir. Semaforun sayısı 0'dan büyük olana kadar beklemesi gerekir. | Kilitliyse, işlemin beklemesi gerekir. İşlem bir kuyrukta tutulmalıdır. Buna yalnızca muteksin kilidi açıldığında erişilmesi gerekir. |
Konu | Birden fazla program dizisine sahip olabilirsiniz. | Mutex'te birden fazla program dizisine sahip olabilirsiniz, ancak aynı anda olamaz. |
Mülkiyet | Değer, kaynağı serbest bırakan veya elde eden herhangi bir işlemle değiştirilebilir. | Nesne kilidi, yalnızca kilidi elde eden işlem tarafından serbest bırakılır. |
Türler | Semafor türleri, semafor ve ikili semafor saymaktadır. | Mutex'in alt türü yoktur. |
Operasyon | Semafor değeri wait () ve signal () işlemi kullanılarak değiştirilir. | Mutex nesnesi kilitlendi veya kilidi açıldı. |
Kaynakları Doluluk | Tüm kaynaklar kullanılıyorsa ve kaynağı talep eden işlem wait () işlemini gerçekleştirirse ve semafor sayısı> 1 olana kadar kendisini bloke ederse işgal edilir. | Nesnenin zaten kilitlenmiş olması durumunda, kaynak isteyen işlem kilit serbest bırakılmadan önce bekler ve sistem tarafından kuyruğa alınır. |
Mutex ve Semafor hakkında Ortak Gerçekler
İşte Mutex ve Semaphore hakkında birkaç yaygın gerçek:
- Muteksi yalnızca bir görev alabilir. Dolayısıyla, bir muteks ile ilişkili sahiplik vardır ve yalnızca sahibi muteksi serbest bırakabilir.
- Muteks ve semafor kullanmanın nedenleri farklı olabilir, belki de uygulamalarındaki benzerliklerden dolayı, bir muteks, ikili semafor olarak adlandırılır.
- Bilinen bir yanlış anlama, Mutekslerin ve Semaforların neredeyse aynı olmasıdır; tek fark, bir Mutex'in 1'e kadar sayabilmesidir, Semaforların ise 0'dan N'ye kadar sayabilmesidir.
- İkili semafor ve muteks arasında her zaman belirsizlik vardır. Muteksin ikili bir semafor olduğunu duyabilirsiniz, bu doğru değildir.
Semaforun Avantajları
İşte Semafor kullanmanın artıları / faydaları:
- Birden fazla iş parçacığının kritik bölüme erişmesine izin verir
- Semaforlar makineden bağımsızdır.
- Semaforlar, mikro çekirdeğin makineden bağımsız kodunda uygulanır.
- Birden fazla işlemin kritik bölüme girmesine izin vermezler.
- Semaforda meşgul bekleme olduğu için, hiçbir zaman süreç zamanı ve kaynak israfı olmaz.
- Makineden bağımsızdırlar ve mikro çekirdeğin makineden bağımsız kodunda çalıştırılmalıdırlar.
- Kaynakların esnek yönetimine izin verirler.
Mutex'in Avantajları
İşte Mutex'in önemli artıları / faydaları
- Muteksler, kritik bölümüne girip ardından serbest bırakmadan önce elde edilen basit kilitlerdir.
- Herhangi bir zamanda kritik bölümünde yalnızca bir iş parçacığı olduğundan, yarış koşulları yoktur ve veriler her zaman tutarlı kalır.
Semaforların dezavantajı
İşte semaforun eksileri / dezavantajları
- Bir semaforun en büyük sınırlamalarından biri öncelikli ters çevirmedir.
- İşletim sistemi, semafor beklemek ve sinyal vermek için tüm çağrıları takip etmelidir.
- Kullanımları asla zorunlu değildir, ancak yalnızca konvansiyon gereğidir.
- Semaforda kilitlenmelerden kaçınmak için, Bekle ve Sinyal işlemlerinin doğru sırada yürütülmesi gerekir.
- Semafor programlama karmaşık bir yöntemdir, bu nedenle karşılıklı dışlamaya ulaşamama şansı vardır.
- Ayrıca, kullanımları modülerlik kaybına yol açtığından, büyük ölçekli kullanım için pratik bir yöntem değildir.
- Semafor, programcı hatasına daha yatkındır.
- Programcı hatası nedeniyle kilitlenme veya karşılıklı dışlamanın ihlaline neden olabilir.
Mutex'in dezavantajları
İşte Mutex'in eksileri / dezavantajları
- Bir iş parçacığı bir kilit alır ve uykuya dalarsa veya önlenirse, diğer iş parçacığı ilerleyemeyebilir. Bu açlığa yol açabilir.
- Onu edinmiş olandan farklı bir bağlamda kilitlenemez veya kilidi açılamaz.
- Kritik bölümde bir seferde yalnızca bir ileti dizisine izin verilmelidir.
- Normal uygulama meşgul bekleme durumuna neden olabilir ve bu da CPU zamanını boşa harcar.