Evet arkadaşlar, şimdi semafor ve Mutex arasındaki farkı karşılaştıralım ki bunu açıkça anlayabilesiniz.
Mutex ve Semaphore arasındaki fark nedir ve belirli bir problem ifadesi için mutex mi yoksa semaphore
mu kullanmanız gerektiğine nasıl karar verebilirsiniz?
Değil mi?
Semaforları ve muteksleri de anlarsanız, hangi problemlerde semaforları kullanmanız gerektiğine ve
hangi problemde sadece muteksleri kullanmanın faydalı olacağına net bir şekilde karar verebilir
ve semaforları kullanarak probleminizi aşırı karmaşık hale getirmezsiniz.
Bu aslında pratikle ve deneyimle gelen bir şeydir.
Slaytta da görebileceğiniz gibi, slaytı iki bölüme ayırdık.
Sol tarafta mutex kullanımı gösterilirken, slaydın sağ tarafında semafor kullanımı gösterilmektedir.
Şu anda sol tarafta bu yatay okların olduğunu görebilirsiniz.
Bu yatay oklar kritik bölümün başlangıcını ve kritik bölümün bitişini temsil etmektedir.
Değil mi?
Benzer şekilde, sağ tarafta da kritik bölüm başlangıcı ve kritik bölüm vardır.
Ve şimdi mutekslere odaklanalım.
Başka bir deyişle, aslında burada muteks kavramını gözden geçiriyoruz çünkü kısaca semaforların
işlevselliğini mutekslerle karşılaştıracaktık.
Doğru.
Muteksler söz konusu olduğunda, T1 iş parçacığı kritik bölüme girmeye çalışırsa muteksi kilitler.
Değil mi?
Ve muteks üzerindeki kilit kullanılabilir durumdaysa, T1 iş parçacığı kritik bölüme girmeyi ve yürütmeyi
başarır.
Doğru.
Yani bir bakıma muteksler sadece evet ya da hayır der.
Kritik bölüme girmenize ya izin verilir ya da verilmez.
Değil mi?
Yani burada izin numarası, izin numarası diye bir şey var.
İzin sayısı ise muteks tarafından korunan kritik bölüme girmesine izin verilen iş parçacığı veya yürütme
birimi sayısını temsil eder.
Yani muteks durumunda, izin numarası birdir, değil mi?
Bir, muteks üzerinde bir kilit yakaladıktan sonra kritik bölüm içinde en fazla bir iş parçacığının çalışabileceği anlamına gelir.
Doğru.
Dolayısıyla, birinci iş parçacığı bu kritik bölüm içinde çalışıyorsa ve t iki iş parçacığı gelip kritik
bölüme girmeye çalışırsa, t iki iş parçacığının engelleneceğini zaten biliyoruz.
Ve iş parçacığı kritik bölümden çıkana ve muteksin kilidini açana kadar engellenmiş olarak kalacaktır.
Doğru.
Yani mutex'in izin sayısı birdir, ancak semaforun hikayesi biraz farklıdır.
Bir semafor oluşturduğumuzda, negatif veya pozitif olmayan bir tamsayı belirtmemiz gerekir.
Doğru.
Bu pozitif tamsayı, söz konusu semaforun izin numarasıdır.
Bu örnekte, diyelim ki semafor tarafından korunan kritik bir bölümümüz var,
değil mi?
Ve diyelim ki izin numarası veya bu ile tanımlanmış ve değeri üçe eşit olan bir semaforumuz
var.
Yani basitçe, t bir iş parçacığı geldiğinde ve kritik bölüme girmeye çalıştığında,
semafor bu t bir iş parçacığının kritik bölüme girmesine izin verecektir.
Doğru.
Benzer şekilde, t iki iş parçacığı gelir ve kritik bölüme girmeye çalışırsa, semafor kritik bölüm
içinde t iki iş parçacığının yürütülmesine izin verecektir.
Doğru çünkü semaforun izin sayısını üç olarak varsaymıştık.
Benzer şekilde, t üç iş parçacığı gelirse, semafor yine t üç iş parçacığının kritik bölüme girmesine ve doğru
şekilde çalışmasına izin verir.
Ancak t dört iş parçacığı şimdi gelirse semafor tamamen tükenmiştir.
T dört ipliğinin kritik bölüme girmesi engellenecektir.
Semafor, t dört iş parçacığının kritik bölüme girmesine izin vermez.
Doğru.
Yani bu değer ve bir semaforun izin numarasını temsil eder.
Doğru.
Şimdi, bu açıklamada, Mutex'lerin hiçbir şey olmadığını, ancak semaforun özel bir durumu olduğunu görebilirsiniz.
Bu semaforu bir değerle, yani bire eşit izin sayısıyla başlatırsanız, işlevsellik
açısından semaforunuz muteks ile tamamen aynıdır, değil mi?
Bu nedenle muteks aynı zamanda ikili semaforlar olarak da adlandırılır ve bu bir mülakat sorusudur.
Doğru.
Semaforu bire eşit izin değeriyle başlatırsanız, semaforunuz tam olarak mutex
gibi davranır.
Dolayısıyla bu tartışmadan çıkarılacak sonuç, izin numarasının bir tamsayı değeri olduğudur.
Muteks durumunda, izin numarası sabittir, yani birdir Semaforlar durumunda, izin numarası kullanıcı
tanımlıdır ve kullanıcı tarafından negatif olmayan herhangi bir değer için belirtilebilir.
X.
Doğru.
Tanım olarak, izin sayısı kritik bölüme girmesine ve eş zamanlı olarak çalışmasına izin
verilen yürütme birimlerinin sayısıdır.
Şimdi, burada belirtmek istediğim bir nokta, burada kritik bölümde, semaforlar söz konusu olduğunda,
n sayıda yürütme biriminin eşzamanlı olarak çalışmasına izin veriyoruz.
Doğru.
Bu, bu kritik bölümün birden fazla iş parçacığı tarafından aynı anda yürütülmesi durumunda değişmezlik
sorununa neden olacağı anlamına mı gelir?
Doğru.
Veri yapısını bozar mı?
Bu sorunlara yol açar mı?
Kritik bölümde birden fazla iş parçacığının korumasız yürütülmesi hangisine yol açar?
Cevabım hayır.
Burada, semaforlar tarafından korunan kritik bölümlerin, normal senaryoda iş parçacıklarının
eşzamanlı yürütülmesiyle ilgili herhangi bir soruna yol açmadan n sayıda yürütme birimi tarafından eşzamanlı olarak
yürütülebilecekleri özel bir özelliğe sahip oldukları varsayımına sahibiz.
Yani burada bir varsayımımız var.
Dolayısıyla, semafor kullandığınızda, kritik bölümünüz, birden fazla yürütme birimi tarafından
eşzamanlı olarak yürütülmesine izin verildiğinde, programınız herhangi bir soruna yol açmayacak niteliktedir.
Örneğin, bu tür kritik bir bölümün gerçek bir örneği, diyelim ki bir bilgisayar sisteminiz
var ve on kadar kullanıcının uzaktan oturum açma kullanarak bu bilgisayar sistemine giriş yapmasını istiyorsunuz, değil
mi?
Yani bu bilgisayar sisteminde aynı anda en fazla on kullanıcının oturum açmasını istiyorsunuz.
Dolayısıyla bu bilgisayar sistemi kritik bölüm haline geliyor.
Ve birden fazla kullanıcının aynı anda bazı uzak sunucularda uzaktan oturum açabileceğini zaten biliyoruz.
Değil mi?
Bu, kaynağınızı, yani bu bilgisayar sistemini veya sunucuyu koruyacağınız ve bu bilgisayar sistemine
giriş yapabilecek kullanıcı sayısına bir üst sınır koyacağınız bir örnektir, değil mi?
Böylece on kullanıcı da bu bilgisayar sistemine uzaktan giriş yapabilir ve sorunsuz bir şekilde çalışırlar.
Bilgisayar sistemi bu şekilde tasarlandığı için bozulmayacaktır.
Aynı anda on uzaktan oturum açma işlemini gerçekleştirebilir.
Doğru.
Yani burada kritik bölüm, on kullanıcının bu sisteme giriş yapabileceği ve aynı anda çalışabileceği bir özelliğe
sahiptir.
Bu, bilgisayar sisteminizde aynı anda uzaktan oturum açabilecek kullanıcı sayısını sınırlamak için semaforlardan
yararlanabileceğiniz bir örnektir.