Süreç Synchronizasyon: İşletim Sisteminde Kritik Bölüm Sorunu
Süreç Nedir? Synckronizasyon?
Süreç Synckronizasyon süreçlerin yürütülmesini, hiçbir iki sürecin aynı paylaşılan verilere ve kaynaklara erişemeyeceği şekilde koordine etme görevidir.
Birden çok işlemin birlikte çalıştığı ve birden fazla işlemin aynı anda aynı paylaşılan kaynağa veya verilere erişmeye çalıştığı çok işlemli bir sistemde özellikle gereklidir.
Bu, paylaşılan verilerin tutarsızlığına yol açabilir. Bu nedenle, 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 birbirleriyle senkronize edilmesi gerekir.
Nasıl Süreç SyncHronizasyon Çalışıyor mu?
Örneğin, A süreci bir bellek konumundaki veriyi değiştirirken başka bir B süreci bellekten veri okumaya çalışıyor. aynı bellek konumu. İ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 bir 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 olanak tanır.
- Çıkış Bölümü: Çıkış bölümü, Giriş Bölümünde bekleyen diğer işlemlerin Kritik Bölümlere girmesini sağlar. Ayrıca, yürütülmesini tamamlayan bir işlemin bu Bölüm aracılığıyla kaldırılması gerektiğini de kontrol eder.
- Kalan Bölüm: Kodun Kritik, Giriş ve Çıkış Bölümü dışında kalan tüm bölümlerine Kalan Bölüm adı verilmektedir.
Kritik Kesit Problemi Nedir?
Kritik bölüm, belirli bir zamanda bir sinyal işlemiyle erişilebilen bir kod bölümüdür. Bu bölüm, diğer süreçlerin erişmesi gereken paylaşılan veri kaynaklarından oluşur.
- Kritik bölüme giriş wait() fonksiyonu tarafından gerçekleştirilir ve P() olarak temsil edilir.
- Kritik bir bölümden çıkış, V() olarak temsil edilen signal() fonksiyonu 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 süreçlerin, mevcut sürecin yürütülmesini tamamlamasını beklemesi gerekir.
Kritik Bölüm Kuralları
Kritik bölümün üç kuralı da uygulaması gerekir:
- 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ş öncelik ters çevirme sorunlarını önlemek için bir öncelik devralma mekanizması içerir. Kritik bölümünde aynı anda birden fazla işlem yürütülemez.
- İlerleme: Bu çözüm, kritik bölgede kimse olmadığında ve birisinin içeri girmek istediğinde kullanılır. Daha sonra, hatırlatma bölümünde olmayan bu süreçler, sınırlı bir süre içinde kimin gireceğine karar vermelidir.
- Bağlı Bekleme: Bir süreç kritik bölüme girme talebinde bulunduğunda, kritik bölüme girebilecek süreç sayısı konusunda belirli bir sınır vardır. Yani limite ulaşıldığında sistem, prosesin kritik bölümüne girmesine izin vermelidir.
Kritik Bölgeye Çözümler
İşlemde SyncHronizasyon, kritik bölüm ana rolü oynuyor, bu yüzden sorunun çözülmesi gerekiyor.
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 bilgisayar bilimcisi Peterson tarafından geliştirildi, bu yüzden Peterson çözümü olarak adlandırılıyor.
Bu çözümde, bir süreç kritik durumda yürütülürken diğer süreç yalnızca kodun geri kalanını yürütür ve bunun tersi de gerçekleşebilir. Bu yöntem aynı zamanda kritik bölümde belirli bir zamanda yalnızca tek bir işlemin çalıştığından emin olmanıza da yardımcı olur.
Örnek E-posta
PROCESS Pi FLAG[i] = true while( (turn != i) AND (CS is !free) ){ wait; } CRITICAL SECTION FLAG[i] = false turn = j; //choose another process to go to CS
- N sayıda süreç (P1, P2,… PN) olduğunu ve her sürecin belirli bir zamanda Kritik Bölüme girmeyi gerektirdiğini varsayalım.
- Varsayılan olarak false olan N boyutunda bir FLAG[] dizisi korunur. Yani bir süreç kritik bölüme girmek istediğinde bayrağını true olarak ayarlamak zorundadır. Örneğin, Pi girmek isterse FLAG[i]=TRUE değerini ayarlayacaktır.
- TURN adı verilen diğer bir değişken ise o anda CS'ye girilmek istenen işlem numarasını belirtir.
- Çıkış yaparken kritik bölüme giren proses, TURN'u hazır işlemler listesinden başka bir numaraya değiştirecektir.
- Örnek: dönüş 2 ise P2 Kritik bölüme girer ve dönüş=3'ten çıkarken P3 bekleme döngüsünden çıkar.
Synchronizasyon Donanımı
Kritik Bölümün sorunları bazen donanımsal olarak da çözülmektedir. Bazı işletim sistemleri, bir İşlemin Kritik bölüme girerken kilit aldığı ve oradan ayrıldıktan sonra kilidi serbest bıraktığı bir kilit işlevi sunar.
Yani başka bir proses kritik bölüme girmeye çalıştığında kilitli olduğu için giremeyecektir. Bunu ancak kilidin kendisini alarak özgür olması durumunda yapabilir.
Mutex Kilitleri
SyncDonanımı hronizasyon herkes için uygulanması kolay bir yöntem olmadığından 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 bir LOCK elde edilir. Çıkış bölümünde bu kilit açılır.
Semaphore Çözüm
Semaphore basitçe 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. Bir sinyalleşme mekanizması ve bir semafor üzerinde bekleyen, 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.
Örnek E-posta
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ülmesinin koordine edilmesi 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 zamanda 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.
- Proses çözümü, kritik bölgede kimsenin olmadığı ve birinin içeri girmek istediği durumlarda kullanılır.
- Sınırlı bekleme çözümünde, bir süreç kendi kritik bölümüne girme talebinde bulunduktan sonra, kendi kritik bölümüne kaç tane sürecin 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 sorunları da donanım senkronizasyonuyla çözülüyor
- SyncDonanımı hronizasyon, herkesin uygulayabileceği basit bir yöntem olmadığından Mutex Kilitleri olarak bilinen katı yazılım yöntemi de tanıtıldı.
- Semaphore kritik bölüm problemine başka bir algoritma veya çözümdür.