Mutex vs Semaphore – Aralarındaki Fark

Mutex ve Arasındaki Temel Fark Semaphore

  • Mutex bir kilitleme mekanizmasıdır, oysa Semaphore bir sinyal mekanizmasıdır
  • Mutex sadece bir nesnedir, oysa Semaphore bir tamsayıdır
  • Mutex'in alt türü yoktur, oysa semaforun iki türü vardır: sayma semaforu ve ikili semafor.
  • Semaphore bekleme ve sinyal işlemlerinin değiştirilmesini desteklerken, Mutex yalnızca bir kaynağı talep edebilen veya serbest bırakabilen işlem tarafından değiştirilir.
  • Semaphore Değer, wait() ve signal() işlemleri kullanılarak değiştirilirken, Mutex işlemleri kilitlenir veya kilidi açılır.

Mutex ve arasındaki fark Semaphore
Mutex ve arasındaki fark Semaphore

Burada Mutex ile arasındaki farkı analiz ettim. Semaphore artılarını ve eksilerini kapsamlı bir şekilde değerlendirecekler.

Mutex ve Hakkında Ortak Gerçekler Semaphore

Uygulamalarımdan yola çıkarak, Mutex ile ilgili birkaç genel gerçeği aşağıda bulabilirsiniz: Semaphore:

  • Yalnızca bir görev muteksi edinebilir. Bu nedenle, bir muteksin mülkiyeti vardır ve onu yalnızca sahibi serbest bırakabilir.
  • Muteks ve semaforun kullanılma nedenleri farklıdır, belki de uygulanmalarındaki benzerlik nedeniyle, bir mutekse ikili semafor denir.
  • Oldukça bilinen bir yanılgı, Mutex'lerin ve Semaphoreler hemen hemen aynıdır, tek fark Mutex'in 1'e kadar sayabilmesidir. Semaphore0'dan N'ye kadar sayabiliyor.
  • İkili semafor ve muteks arasında her zaman belirsizlik vardır. Bir muteksin ikili bir semafor olduğunu duyabilirsiniz ama bu doğru değildir.

Nedir Semaphore?

Bir semafor negatif olmayan ve iş parçacıkları arasında paylaşılan basit bir değişkendir. Bir semafor bir sinyalleme mekanizmasıdır ve bir semaforu bekleyen bir iş parçacığı başka bir iş parçacığı tarafından sinyallenebilir. İki atomik işlem kullanır, 1) bekleme ve 2) sinyal süreç senkronizasyonu.

A semafor Nasıl ayarlandığına bağlı olarak kaynağa erişime izin verir veya vermez.

Kullanımı Semaphore

Tek bir tampon durumunda, 4 KB'lık tamponu dört adet 1 KB'lık tampona ayırabiliriz. Semaphore bu dört tamponla ilişkilendirilebilir. Bu, kullanıcıların ve üreticilerin aynı anda farklı tamponlar üzerinde çalışmasına olanak tanır.

Avantajları Semaphore

Uygulamamda semafor kullanmanın temel olumlu yönleri şunlardır:

  • Birden fazla iş parçacığının kritik bölüme erişmesine izin verir
  • Semaphoremakineden bağımsızdır.
  • Semaphoremikro çekirdeğin makineden bağımsız kodunda uygulanır.
  • Kritik bölüme birden fazla prosesin girmesine izin vermezler.
  • Semaforda yoğun bir bekleme takvimi olduğundan, hiçbir zaman işlem zamanı ve kaynak israfı yaşanmaz.
  • Bunlar makineden bağımsızdır ve mikro çekirdeğin makineden bağımsız kodunda çalıştırılması gerekir.
  • Kaynakların esnek yönetimine izin verirler.

Dezavantajları Semaphores

İşte karşılaştığım semaforun dezavantajları.

  • Bir semaforun en büyük sınırlamalarından biri önceliklerin ters çevrilmesidir.
  • İşletim sistemi, semaforu beklemek ve sinyal vermek için tüm çağrıları takip etmelidir.
  • Kullanımları hiçbir zaman zorunlu değildir, ancak yalnızca sözleşme gereğidir.
  • Semaforda çıkmazları önlemek için, Bekle ve Signal işlemlerin doğru sırayla yürütülmesi gerekir.
  • Semaphore Programlama karmaşık bir yöntem olduğundan karşılıklı dışlamanın sağlanamama ihtimali vardır.
  • Ayrıca büyük ölçekli kullanımlar için pratik bir yöntem değildir çünkü bunların kullanımı modülerlik kaybına yol açmaktadır.
  • Semaphore programcı hatasına daha yatkındır.
  • neden olabilir çıkmaz veya programcı hatası nedeniyle karşılıklı dışlamanın ihlali.

Mutex nedir?

Mutex'in tam biçimi 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ş öncelik ters çevirme sorunlarını önlemek için bir öncelik devralma mekanizması içerir. Mevcut yüksek öncelikli görevlerin mümkün olan en kısa süre boyunca engellenmiş durumda tutulmasına olanak tanır. Ancak öncelik devralma, öncelik tersine çevirmeyi düzeltmez, yalnızca etkisini en aza indirir.

Mutex Kullanımı

Bir mutex, anahtara (mutex) sahip olabilen ve işlerine devam edebilen ü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, yalnızca tek bir iş parçacığı tüm tamponla çalışabilir.

Mutex'in Avantajları

Gözlemlerime göre Mutex'in temel faydaları şunlardır:

  • Muteksler, kritik bölümüne girmeden ve daha sonra serbest bırakmadan önce elde edilen basit kilitlerdir.
  • Herhangi bir zamanda yalnızca bir iş parçacığı kritik bölümünde olduğundan, yarış koşulları yoktur ve veriler her zaman tutarlı kalır.

Mutex'in dezavantajları

Uygulamamda Mutex'in birkaç eksisini belirledim.

  • Bir iş parçacığı kilitlenir ve uyku moduna geçerse veya önceden boşaltılırsa, diğer iş parçacığı ileriye doğru hareket edemeyebilir. Bu açlığa yol açabilir.
  • Onu edinen bağlamdan farklı bir bağlamda kilitlenemez veya kilidi açılamaz.
  • Kritik bölümde aynı anda yalnızca bir iş parçacığına izin verilmelidir.
  • Normal uygulama, CPU zamanını boşa harcayan meşgul bekleme durumuna yol açabilir.

Arasındaki fark Semaphore ve Mutex

Onlarla çalışırken öğrendiklerime dayanarak, Mutex'lerin ve Semaphorefarklı:

Semaphore Mutex'e karşı
Semaphore Mutex'e karşı
parametreler Semaphore Karşılıklı dışlama
Mekanizma Bir çeşit sinyal mekanizmasıdır. Bir kilitleme mekanizmasıdır.
Veri tipi Semaphore bir tam sayı değişkenidir. Mutex sadece bir nesnedir.
Değişiklik Bekleme ve sinyal işlemleri semaforu değiştirebilir. Yalnızca bir kaynağı talep eden veya serbest bırakan süreç tarafından değiştirilir.
Kaynak yönetimi Hiçbir kaynak boş değilse, süreç, bekleme işlemini yürütmesi gereken bir kaynağa ihtiyaç duyar. Semaforun sayısı 0'dan büyük olana kadar beklenmelidir. Kilitliyse işlemin beklemesi gerekir. Süreç kuyrukta tutulmalıdır. Buna yalnızca muteksin kilidi açıldığında erişilmesi gerekir.
Konu Birden fazla program iş parçacığınız olabilir. Mutex'te birden fazla program iş parçacığı olabilir 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ürleri Tipleri Semaphore semafor ve ikili semafor sayımıdır. Mutex'in alt türü yoktur.
Çalışma Semaphore değer wait() ve signal() işlemi kullanılarak değiştirilir. Mutex nesnesi kilitlendi veya kilidi açıldı.
Kaynak Doluluğu Tüm kaynaklar kullanılıyorsa ve kaynak isteyen süreç wait () işlemini gerçekleştiriyorsa ve semafor sayısı >1 olana kadar kendisini bloke ediyorsa meşgul olur. Nesnenin zaten kilitli olması durumunda, kaynak isteyen süreç bekler ve kilit serbest bırakılmadan önce sistem tarafından kuyruğa alınır.

Sonuç

Deneyimime göre, mutex'ler ile semaforlar arasında seçim yapmanın anahtarı, bunların operasyonel nüanslarını tanımaktır. Semaphores'ler karmaşık senkronizasyonlar için idealdir, oysa karşılıklı dışlamalar basit bağlamlarda kaynak güvenliğini garanti altına alarak basit karşılıklı dışlamalar için uygundur.