İşlem Senkronizasyonu: İşletim Sisteminde Kritik Bölüm Sorunu

İçindekiler:

Anonim

Süreç Senkronizasyonu nedir?

Süreç Senkronizasyonu , iki işlemin aynı paylaşılan verilere ve kaynaklara erişemeyeceği şekilde süreçlerin yürütülmesini koordine etme görevidir.

Çok işlemli bir sistemde, birden çok işlem birlikte çalışırken ve birden fazla işlem aynı anda aynı paylaşılan kaynağa veya verilere erişim sağlamaya çalıştığında özellikle gereklidir.

Bu, paylaşılan verilerin tutarsızlığına yol açabilir. Dolayısıyla, bir işlem tarafından yapılan değişiklik, diğer işlemler aynı paylaşılan verilere eriştiğinde mutlaka yansıtılmaz. Bu tür veri tutarsızlığını önlemek için, işlemlerin birbiriyle senkronize edilmesi gerekir.

Bu işletim sistemi eğitiminde şunları öğreneceksiniz:

  • Süreç Senkronizasyonu nedir?
  • Süreç Senkronizasyonu Nasıl Çalışır?
  • Bir Programın Bölümleri
  • Kritik Bölüm Problemi nedir?
  • Kritik Bölüm Kuralları
  • Kritik Bölüme Çözümler

Süreç Senkronizasyonu Nasıl Çalışır?

Örneğin, A işlemi bir bellek konumundaki veriyi değiştirirken, başka bir B işlemi aynı bellek konumundan verileri okumaya çalışırken . İkinci işlem tarafından okunan verilerin hatalı olma olasılığı yüksektir.

Bir Programın Bölümleri

İşte kritik bölümün dört temel unsuru:

  • Giriş Bölümü: Belirli bir sürecin girişine karar veren sürecin parçasıdır.
  • Kritik Bölüm: Bu bölüm, bir işlemin paylaşılan değişkeni girmesine ve değiştirmesine izin verir.
  • Çıkış Bölümü: Çıkış bölümü, Giriş Bölümünde bekleyen diğer işlemlerin Kritik Bölümlere girmesine izin verir. Ayrıca, yürütülmesini tamamlayan bir sürecin bu Bölüm aracılığıyla kaldırılması gerekip gerekmediğini de kontrol eder.
  • Kalan Bölüm: Kodun Kritik, Giriş ve Çıkış Bölümünde olmayan diğer tüm bölümleri Kalan Bölüm olarak bilinir.

Kritik Bölüm Problemi nedir?

Kritik bölüm, belirli bir zaman noktasında bir sinyal işlemiyle erişilebilen bir kod bölümüdür. Bölüm, diğer işlemler tarafından erişilmesi gereken paylaşılan veri kaynaklarından oluşur.

  • Kritik bölüme giriş wait () işlevi tarafından işlenir ve P () olarak temsil edilir.
  • Kritik bir bölümden çıkış, V () olarak gösterilen signal () işlevi tarafından kontrol edilir.

Kritik bölümde yalnızca tek bir işlem yürütülebilir. Kritik bölümlerini yürütmeyi bekleyen diğer işlemlerin, mevcut işlemin yürütülmesini tamamlamasını beklemesi gerekir.

Kritik Bölüm Kuralları

Kritik bölüm, üç kuralı da uygulamalıdır:

  • Karşılıklı Dışlama: Karşılıklı Dışlama, 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. Bir seferde kritik bölümünde birden fazla işlem yürütülemez.
  • İlerleme: Kritik bölümde kimse olmadığında ve birisi içeri girmek istemediğinde bu çözüm kullanılır. O zaman hatırlatma bölümünde olmayan bu süreçler, sınırlı bir süre içinde kimin girmesi gerektiğine karar vermelidir.
  • Bağlı Bekleme: Bir süreç kritik bölüme girmek için talepte bulunduğunda, kritik bölümlerine girebilecek işlem sayısı konusunda belirli bir sınır vardır. Bu nedenle, sınıra ulaşıldığında, sistem , işlem talebinin kritik bölümüne girmesine izin vermelidir.

Kritik Bölüme Çözümler

Proses Senkronizasyonunda, sorunun çözülmesi için kritik bölüm ana rolü oynar.

Kritik bölüm problemini çözmek için yaygın olarak kullanılan bazı yöntemler.

Peterson Çözümü

Peterson'un çözümü, kritik bölüm problemlerinde yaygın olarak kullanılan bir çözümdür. Bu algoritma, bir bilgisayar bilimcisi Peterson tarafından geliştirilmiştir, bu nedenle bir Peterson çözümü olarak adlandırılmıştır.

Bu çözümde, bir işlem kritik bir durumda yürütülürken, diğer işlem yalnızca kodun geri kalanını çalıştırır ve bunun tersi olabilir. Bu yöntem aynı zamanda kritik bölümde belirli bir zamanda yalnızca tek bir işlemin çalıştığından emin olmaya yardımcı olur.

Misal

PROCESS PiFLAG[i] = truewhile( (turn != i) AND (CS is !free) ){ wait;}CRITICAL SECTION FLAG[i] = falseturn = j; //choose another process to go to CS
  • N işlem (P1, P2,… PN) olduğunu ve herhangi bir zamanda her işlemin Kritik Bölüme girmeyi gerektirdiğini varsayalım.
  • N boyutunda bir BAYRAK [] dizisi korunur ve varsayılan olarak yanlıştır. Bu nedenle, bir süreç kritik bölüme girmeyi gerektirdiğinde, bayrağını doğru olarak ayarlamalıdır. Örneğin, Pi girmek isterse, BAYRAK [i] = DOĞRU olarak ayarlanacaktır.
  • TURN adı verilen başka bir değişken, şu anda CS'ye girmek isteyen işlem numarasını gösterir.
  • Çıkış yapılırken kritik bölüme giren işlem, TURN'u hazır işlemler listesinden başka bir numaraya değiştirecektir.
  • Örnek: dönüş 2'dir sonra P2 Kritik bölüme girer ve dönüş = 3'ten çıkılırken P3 bekleme döngüsünden çıkar.

Senkronizasyon Donanımı

Bazen Kritik Bölümün sorunları da donanımla çözülür. Bazı işletim sistemleri, bir İşlemin Kritik bölüme girerken bir kilit aldığı ve kilit çıktıktan sonra serbest bıraktığı bir kilit işlevi sunar.

Yani başka bir işlem kritik bölüme girmeye çalışırken kilitli olduğu için giremeyecektir. Bunu ancak serbestse kilidin kendisini alarak yapabilir.

Mutex Kilitler

Senkronizasyon donanımı herkes için uygulamak için basit bir yöntem değildir, bu nedenle Mutex Kilitleri olarak bilinen katı yazılım yöntemi de tanıtıldı.

Bu yaklaşımda kodun giriş bölümünde kritik bölüm içerisinde kullanılan kritik kaynaklar üzerinden KİLİT elde edilir. Çıkış bölümünde kilit serbest bırakılır.

Semafor Çözümü

Semafor, negatif olmayan ve iş parçacıkları arasında paylaşılan bir değişkendir. Kritik bölüm problemine başka bir algoritma veya çözümdür. Bu bir sinyal mekanizması ve bir semafor üzerinde bekleyen ve başka bir iş parçacığı tarafından sinyallenebilen bir iş parçacığıdır.

İki atomik işlem kullanır, 1) bekleme ve 2) işlem senkronizasyonu için sinyal.

Misal

WAIT ( S ):while ( S <= 0 );S = S - 1;SIGNAL ( S ):S = S + 1;

Özet:

  • İşlem senkronizasyonu, iki işlemin aynı paylaşılan verilere ve kaynaklara erişemeyeceği şekilde işlemlerin yürütülmesini koordine etme görevidir.
  • Kritik bölümün dört unsuru şunlardır: 1) Giriş bölümü 2) Kritik bölüm 3) Çıkış bölümü 4) Hatırlatma bölümü
  • Kritik bölüm, belirli bir zaman noktasında bir sinyal işlemiyle erişilebilen bir kod bölümüdür.
  • Kritik bölüm tarafından uygulanması gereken üç zorunlu kural şunlardır: 1) Karşılıklı Dışlama 2) Süreç çözümü 3) Bağlı bekleme
  • Karşılıklı Dışlama, paylaşılan kaynağa erişimi kontrol etmek için kullanılan özel bir ikili semafor türüdür.
  • Kritik bölümde kimse olmadığında ve birisi girmek istediğinde proses çözümü kullanılır.
  • Bağlı bekleme çözümünde, bir süreç kritik bölümüne girmek için bir talepte bulunduktan sonra, diğer işlemlerin kaçının kritik bölümlerine girebileceği konusunda bir sınır vardır.
  • Peterson'un çözümü, kritik bölüm problemlerinde yaygın olarak kullanılan bir çözümdür.
  • Kritik Bölümün sorunları da donanımın senkronizasyonu ile çözülür.
  • Senkronizasyon donanımı herkes için uygulamak için basit bir yöntem değildir, bu nedenle Mutex Locks olarak bilinen katı yazılım yöntemi de tanıtıldı.
  • Semafor, kritik bölüm problemine başka bir algoritma veya çözümdür.