Semafor nedir? İkili, Örnekli Sayma Türleri

İçindekiler:

Anonim

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 İşletim Sistemi (OS) eğitiminde şunları öğreneceksiniz:

  • Semaforun Karakteristiği
  • Semafor nedir?
  • Semafor Türleri
  • Semafor Örneği
  • Semaforlarda Bekleme ve Sinyal İşlemleri
  • Semafor ve İkili Semafor Sayma
  • Semafor ile Mutex arasındaki fark
  • Semaforların Avantajları
  • Semaforların dezavantajı

Semaforun Karakteristiği

İşte bir semaforun karakteristiği:

  • Görevlerin senkronizasyonunu sağlamak için kullanılabilen bir mekanizmadır.
  • Düşük seviyeli bir senkronizasyon mekanizmasıdır.
  • Semafor her zaman negatif olmayan bir tamsayı değeri tutacaktır.
  • Semafor, dosya tanımlayıcıları kullanılarak yürütülmesi gereken test işlemleri ve kesmeler kullanılarak uygulanabilir.

Semafor Türleri

İki yaygın semafor türü:

  • Semaforları saymak
  • İkili semaforlar.

Semaforları Sayma

Bu tür Semafor, görevin birçok kez edinilmesine veya serbest bırakılmasına yardımcı olan bir sayı kullanır. İlk sayı = 0 ise, sayma semaforu kullanılamaz durumda oluşturulmalıdır.

Bununla birlikte, sayı> 0 ise, semafor kullanılabilir durumda oluşturulur ve sahip olduğu simge sayısı, sayısına eşittir.

İkili Semaforlar

İkili semaforlar semaforları saymaya oldukça benzer, ancak değerleri 0 ve 1 ile sınırlıdır. Bu semafor türünde bekleme işlemi yalnızca semafor = 1 ise çalışır ve semafor = 0 olduğunda sinyal işlemi başarılı olur. semaforları saymaktan çok uygulama.

Semafor Örneği

Aşağıda verilen program, semaforun kullanımını ve bildirimini içeren adım adım bir uygulamadır.

Shared var mutex: semaphore = 1;Process ibegin… P(mutex);execute CS;V(mutex);… End;

Semaforlarda Bekleme ve Sinyal İşlemleri

Bu işlemlerin her ikisi de işlem senkronizasyonunu uygulamak için kullanılır. Bu semafor işleminin amacı karşılıklı dışlama elde etmektir.

İşlemi Bekleyin

Bu tür semafor işlemi, bir görevin kritik bölüme girişini kontrol etmenize yardımcı olur. Bununla birlikte, bekleme değeri pozitifse, bekleme bağımsız değişkeni X'in değeri azaltılır. Negatif veya sıfır değer olması durumunda hiçbir işlem yapılmaz. Aynı zamanda P (S) işlemi olarak da adlandırılır.

Negatif hale gelen semafor değeri düştükten sonra, komut gerekli koşullar sağlanana kadar bekletilir.

Copy CodeP(S){while (S<=0);S--;}

Sinyal işlemi

Bu tür Semafor işlemi, bir görevin kritik bir bölümden çıkışını kontrol etmek için kullanılır. Argümanın değerini V (S) olarak gösterilen 1 artırmaya yardımcı olur.

Copy CodeP(S){while (S>=0);S++;}

Semafor ve İkili Semafor Sayma

Sayma ve ikili semafor arasındaki bazı önemli farklar şunlardır:

Semafor Sayma İkili Semafor
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 yuva Sadece bir yuva
Bir dizi İşlem sağlayın Karşılıklı bir dışlama mekanizmasına sahiptir.

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 semaforu sayar ve 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.

Semaforların 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.

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 iştir, 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.

Özet:

  • Semafor, negatif olmayan ve iş parçacıkları arasında paylaşılan bir değişken olarak tanımlanır.
  • Görevlerin senkronizasyonunu sağlamak için kullanılabilen bir mekanizmadır.
  • Semafor sayma, görevin birçok kez alınmasına veya serbest bırakılmasına yardımcı olan bir sayı kullanır.
  • İkili semaforlar semaforları saymaya oldukça benzer, ancak değerleri 0 ve 1 ile sınırlıdır.
  • Bekleme işlemi, bir görevin kritik bölüme girişini kontrol etmenize yardımcı olur
  • Sinyal semafor işlemi, bir görevin kritik bir bölümden çıkışını kontrol etmek için kullanılır.
  • Semaforu saymanın karşılıklı bir dışlaması yoktur, İkili Semafor ise Karşılıklı dışlamaya sahiptir.
  • Semafor bir sinyal mekanizması anlamına gelirken Mutex bir kilitleme mekanizmasıdır
  • Semafor, birden fazla iş parçacığının kritik bölüme erişmesine izin verir
  • Bir semaforun en büyük sınırlamalarından biri öncelikli ters çevirmedir.