Logo tr.removalsclassifieds.com

Mutex ve Semafor Arasındaki Fark (Tablolu)

İçindekiler:

Anonim

Paylaşılan bilgilerin bütünlüğünü yönetmek, büyük ölçüde süreç senkronizasyonuna dayanır. Kritik bölüm problemleriyle başa çıkmak için hem yazılım hem de donanım çözümleri mevcuttur. Kritik bölüm sorununa yönelik donanım çözümlerinin ise uygulanması son derece zordur. Kritik bölüm problemleriyle başa çıkmak için iki uygulama çözümü olan Mutex ve Semaphore'u inceleyip karşılaştıralım.

Mutex ve Semafor

Bir muteks ve bir Semafor arasındaki fark, bir semaforun bir sinyalleşme süreci olmasıdır; bu, süreçlerin bir kaynağı elde edip etmediklerini veya serbest bırakacaklarını belirtmek için wait() ve sinyal()'i kullandığı anlamına gelirken, bir muteks kilitlenebilir bir yöntemdir. bu, bir işlem bir kaynak elde etmek istiyorsa, önce mutex nesnesindeki kilidi alması gerektiği anlamına gelir.

Mutex, Karşılıklı Dışlama Nesnesi anlamına gelir. Paylaşılan bir kaynağa erişimi kısıtlamak için kullanılan bir tür ikili semafordur. Uzun süreli öncelikli ters çevirme endişelerini önlemek için öncelikli bir kalıtım mekanizmasına sahiptir. Mevcut yüksek öncelikli işlerin mümkün olan en kısa süre boyunca engellenmesine izin verir. Öncelikli kalıtım ise, önceliğin tersine çevrilmesini düzeltmez; daha doğrusu etkisini azaltır.

Semafor, iş parçacıkları arasında tutulan negatif olmayan bir değişkendir. Bir semafor bir sinyalleme mekanizmasıdır ve başka bir iş parçacığı, bir semafor bekleyen bir iş parçacığına işaret edebilir. İşlem senkronizasyonu için iki atomik prosedür kullanır: () bekle ve () sinyal. Nasıl kurulduğuna bağlı olarak, bir semafor kaynağa erişimi etkinleştirir veya engeller.

Mutex ve Semafor Arasındaki Karşılaştırma Tablosu

Karşılaştırma Parametreleri

muteks

Semafor

mekanizma

Kilitleme sistemidir. Bir çeşit sinyalizasyon sistemidir.
Amaç

İplik muteks ile temsil edilir. Süreçler semafor ile temsil edilir.
Doğa

Mutex genellikle atomik ve tekildir. Semafor doğada atomiktir, ancak tekil değildir.
Veri tipi

Mutex, bir yazılım parçasından başka bir şey değildir. Semafor, tamsayı değerine sahip bir değişkendir.
Türler

Mutex'in herhangi bir alt türü yoktur. Sayma ve ikili semaforlar iki tür semafordur.
değişiklik

Yalnızca bir kaynağı talep edebilen veya serbest bırakabilen süreç onu değiştirebilir. Bir semafor, bekleme ve sinyal işlevleri kullanılarak değiştirilebilir.

Mutex nedir?

Mutual Exclusion, bir durumu tanımlamak için kullanılan bir terimdir Mutex, nesnenin kısa adıdır. Karşılıklı dışlama kelimesinden, aynı anda yalnızca bir programın belirli bir kaynağa erişimi olduğu sonucunu çıkarabiliriz. Mutex nesnesi, birçok uygulama iş parçacığının aynı kaynağa aynı anda yalnızca bir tane olmak üzere erişmesine izin verir.

Bir program sistemden bir kaynak istediğinde, sistem benzersiz bir kimliğe veya kimliğe sahip bir muteks nesnesi oluşturur. Sonuç olarak, program bu kaynağı kullanmak istediğinde, nesneyi kilitler. Program daha sonra mutex nesnesini nihayet serbest bırakmadan önce kaynağı kullanır. Mutex nesnesi daha sonra aynı şekilde diğer programlar tarafından oluşturulabilir ve kullanılabilir.

Nesneyi kilitleyerek, o belirli kaynak o belirli işleme atanır ve başka hiçbir işlem onu ​​kullanamaz. Sonuç olarak, önemli alanda başka hiçbir programın sistem kaynaklarını kullanmasına izin verilmez. İşlem senkronizasyonunu bu şekilde gerçekleştirmek için bir mutex nesnesi kullanılabilir.

Bir muteks, karşılıklı dışlamaya izin verir; ya üretici ya da tüketici anahtara (mutex) sahip olabilir ve çalışmaya devam edebilir. Tüketici, üreticinin tamponu doluncaya kadar beklemelidir ve bunun tersi de geçerlidir.

Semafor nedir?

Semafor, süreç senkronizasyonu için kullanılan ve sistemdeki kaynak sayısıyla başlatılan bir tamsayı değişkeni S'dir. S'nin değerini değiştirmek için iki ana işlevi kullanır: wait() ve sinyal(). Bu işlevlerin her ikisi de bir semaforun değerini değiştirmek için kullanılır, ancak bir seferde yalnızca bir programın bunu yapmasına izin verir, bu nedenle iki yöntem aynı anda bir semaforun değerini değiştiremez. Sayma semaforları ve İkili semaforlar iki tür semafordur.

Semafor değişkeni, ilk olarak semaforları sayarken mevcut kaynakların sayısı ile başlatılır. Wait() yöntemi daha sonra bir işlem bir kaynak gerektirdiğinde yürütülür ve semafor değişkeninin değeri bir azalır. İşlem daha sonra kaynağı kullanır ve ardından semafor değişkeninin değerini bir arttıran sinyal() yöntemini çağırır. Semafor değişkeninin değeri 0'a ulaştığında, yani program tüm kaynakları tükettiğinde ve kullanılacak hiçbir şey kalmadığında, Daha sonra, başka bir işlemin kaynakları kullanması gerekiyorsa, zamanını beklemek zorunda kalacaktır. Proses senkronizasyonunu bu şekilde sağlıyoruz.

İkili Semaforlarda, semafor değişkeninin değeri 0 veya 1'dir. Bir işlem bir kaynak kullanmak istediğinde, wait() yöntemi çağrılır ve semaforun değeri 1'den 0'a ayarlanır. kaynağın kullanımı ve tamamlandıktan sonra, sinyal() yöntemi çağrılır ve semafor değişkeninin değeri 1 olarak ayarlanırsa, belirli bir zamanda semafor değişkeninin değeri 0 ise ve başka bir program aynı kaynağa erişmek için önceki programın kaynakları serbest bırakmasını beklemesi gerekir. Proses senkronizasyonu bu şekilde yapılabilir. Bir muteks ile karşılaştırılabilir, ancak hiçbir şeyi kilitlemez.

Mutex ve Semafor Arasındaki Temel Farklar

Çözüm

Mevcut bir kaynağın birkaç örneği varsa, Semafor daha iyi bir alternatiftir. Yalnızca bir paylaşılan kaynak olduğunda Mutex tercih edilen bir seçimdir. Semafor, birçok iş parçacığının önemli bölgeye erişmesini sağlar. Makineler semaforları etkilemez. Semaforlar, mikro çekirdeğin makineden bağımsız kodunda işlenir. Semaforda her zaman yoğun bir bekleyiş olduğu için hiçbir zaman ve kaynak israfı olmaz. Ayrıca kaynak yönetimi esnekliğine izin verirler, oysa Mutex'ler hayati bir alana ulaşmadan önce elde edilmesi ve ardından serbest bırakılması gereken basit kilitlerden başka bir şey değildir, ancak Mutex'te standart yöntem, CPU zamanını boşa harcayan yoğun bir bekleme durumuna neden olabilir. Ayrıca, edinildiği bağlam dışında bir bağlamdan kilitlenemez veya kilidi açılamaz.

Referanslar

Mutex ve Semafor Arasındaki Fark (Tablolu)