Nedir? Semaphore? Sayma, Örnekle İkili Tipler
⚡ Akıllı Özet
Semaphore İşletim sisteminde, bekleme ve sinyal verme olmak üzere iki atomik işlem aracılığıyla paylaşılan kaynaklara erişimi koordine eden ve işlem senkronizasyonu sırasında yarış koşullarını önleyen, iş parçacıkları arasında paylaşılan negatif olmayan bir tamsayı değişkenidir.

Nedir? Semaphore?
Semaphore 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) Bekle ve 2) Signal süreç senkronizasyonu için.
Bir semafor, nasıl kurulduğuna bağlı olarak kaynağa erişime izin verir veya vermez.
Özellikleri Semaphore
İşte bir semaforun özellikleri:
- Görevlerin senkronizasyonunu sağlamak için kullanılabilecek bir mekanizmadır.
- Düşük seviyeli bir senkronizasyon mekanizmasıdır.
- Semaphore her zaman negatif olmayan bir tamsayı değeri tutacaktır.
- Semaphore dosya tanımlayıcıları kullanılarak yürütülmesi gereken test işlemleri ve kesmeler kullanılarak uygulanabilir.
Tipleri Semaphores
İki yaygın semafor türü şunlardır:
- Semaforları sayma
- İkili semaforlar
Sayma Semaphores
Bu Çeşidi Semaphore Bir görevin birden çok kez alınmasına veya bırakılmasına yardımcı olan bir sayaç kullanır. Başlangıç sayacı 0 ise, sayma semaforu kullanılamaz durumda oluşturulmalıdır.
Ancak sayı > 0 ise semafor mevcut durumda oluşturulur ve sahip olduğu belirteçlerin sayısı onun sayısına eşittir.
İkili Semaphores
İkili semaforlar, sayma semaforlarına oldukça benzerdir, ancak değerleri 0 ve 1 ile sınırlıdır. Bu tip semaforlarda, bekleme işlemi yalnızca semafor = 1 olduğunda çalışır ve sinyal işlemi semafor = 0 olduğunda başarılı olur. Sayma semaforlarına göre uygulanması daha kolaydır.
Örnek Semaphore
Aşağıda verilen program, bir semaforun kullanımını ve tanımlanmasını içeren adım adım bir uygulamadır.
Shared var mutex: semaphore = 1;
Process i
begin
.
.
P(mutex);
execute CS;
V(mutex);
.
.
End;
Bekle ve Signal Operaiçindekiler Semaphores
Bu işlemlerin her ikisi de uygulamak için kullanılır süreç senkronizasyonu. Bu semafor operasyonunun amacı karşılıklı dışlamayı sağlamaktır.
Bekle Operayon
Bu tür semafor işlemi, bir görevin kritik bölüme girişini kontrol etmenize yardımcı olur. Ancak beklemenin değeri pozitifse bekleme argümanı X'in değeri azaltılır. Negatif veya sıfır değer olması durumunda herhangi bir işlem yapılmaz. Buna P(S) işlemi de denir.
Negatif olan semafor değeri azaltıldıktan sonra komut, gerekli koşullar sağlanana kadar bekletilir.
P(S)
{
while (S<=0);
S--;
}
Signal operasyon
Bu Çeşidi Semaphore işlem, kritik bir bölümden bir görevin çıkışını kontrol etmek için kullanılır. V(S) olarak gösterilen argümanın değerini 1 artırmaya yardımcı olur.
P(S)
{
while (S>=0);
S++;
}
Sayma Semaphore vs. İkili Semaphore
Sayma ve ikili semafor arasındaki bazı önemli farklar şunlardır:
| Sayma Semaphore | İkili Semaphore |
| Karşılıklı dışlama yok | Karşılıklı dışlama |
| Herhangi bir tam sayı değeri | Yalnızca 0 ve 1 değeri |
| Birden fazla slot | sadece bir yuva |
| Bir dizi Süreç sağlayın | Karşılıklı dışlama mekanizması vardır. |
Arasındaki fark Semaphore Mutex'e karşı
Aşağıdaki tablo bir karşılaştırmayı sunmaktadır. mutex içeren bir semafor çeşitli parametreler üzerinden:
| 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. |
Avantajları Semaphores
Burada, kullanmanın artıları/yararları verilmiştir Semaphore:
- Bu, birden fazla iş parçacığının kritik bölüme erişmesine olanak tanır.
- 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 bekleme olduğu için işlem zamanı ve kaynak israfı asla 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, işaret dilinin dezavantajları/eksiklikleri:
- Bir semaforun en büyük sınırlamalarından biri önceliklerin ters çevrilmesidir.
- İşletim sisteminin bunu sürdürmesi gerekiyor. tracBekleme ve sinyal verme semaforuna yapılan tüm çağrıların k'sı.
- 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 olduğundan, karşılıklı dışlamayı başaramama olasılığı 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.


