Evet, çocuklar, bu derse tekrar hoş geldiniz.
VİDEO Kurşun sağ kilitler için kendi uygulamamızı hayata geçireceğiz.
APO six kütüphanesi tarafından sağlanan kamış sağ kilitleri nasıl kullanacağımızı zaten öğrendik ve şimdi
daha ileri gidip kendi sağ kilit versiyonumuzu uygulayacağız.
Şimdi de bu alıştırmayı neden yaptığımıza gelelim.
Bunu bir alıştırma olarak yapıyoruz, böylece kendi özel parça senkronizasyonumuzu uygulamak için daha fazla pratik
yapabiliriz.
Veri yapıları yeniden yazma kilitleri, senkronizasyon, veri yapıları ile oldukça ünlüdür ve bu nedenle,
kendi okuma kilitlerinizi uygulamak istiyorsanız, nasıl bir tane uygulayacağınızı uyguluyoruz?
Daha da ileri giderek, yeniden yazma kilitlerini uygulayacaktık ve bizim uygulamamız POSIX
kütüphanesinin yeniden yazma kilidi uygulamasının sahip olduğu özelliklere yakın özelliklere sahip olmalıydı.
Yani mülk.
Kimse gerçek tehdit kritik bölümde yürütülürken, sistemdeki diğer gerçek tehditlerin hala kritik
bölüme girmesine izin verildiğini söylemiyor.
Bu basitçe, birden fazla iş parçacığının okuma hakkı kilidini elde etmesine izin verildiği anlamına gelir.
Okuyucu parçaları dediğimde, bunun basitçe ortak bir kaynak üzerinde yalnızca okuma işlemleri gerçekleştiren iş parçacıklarının
kaynağın durumunu değiştirmelerine izin verilmediği anlamına geldiğini unutmayın.
Daha sonra, sağ dış kritik bölümde yürütülürken, ister bir okuyucu üçlüsü ister sağ o parça olsun,
başka hiçbir iş parçacığının kritik bölüme girmesine izin verilmez.
Bu da mülkün numarasıdır.
Üç numara, kilidin özyinelemesizlik özelliğini de desteklemesine izin verin diyor.
Şimdi hepimiz bunun ne anlama geldiğini biliyoruz?
Burada tekrarlanabilirlik basitçe, aynı iş parçacığına kilide erişim izni verilmişse, aynı kartın
kilidi birden çok kez alabileceği anlamına gelir.
Tamam.
Dolayısıyla, uygulamamız özyinelemeli olma özelliğini de desteklemelidir.
Ve kilit serbest bırakıldığında, yani kilit, kilidi bekleyen bir yetişkin üçlüsüne erişim için uygun hale
geldiğinde, işletim sistemi zamanlama politikası, bekleyen üçlüden hangisinin bir sonraki
kritik bölüme girmesine izin verileceğine karar versin.
Tamam.
Örneğin, basit bir sessiz erişim durumunda, sessiz erişim elde etmek için bekleyen birden
fazla tehdit olabilir.
Tamam.
Ancak muteks başka bir üçlüye veriliyor.
Bu nedenle, Murdoch'ları bekleyen bir grup test olabilir ve bu muteks kullanılabilir
hale gelir gelmez, bekleyen tüm iş parçacıkları arasında, işletim sistemleri kritik bölüme
en fazla hangi üçlünün girmesini istediğine karar verir.
Kilit serbest bırakıldığında burada izleyeceğimiz aynı özellik işletim sistemini yönetir.
Çizelgeleme politikası, bekleyen üçlüler arasından hangi üçlünün kritik bölüme gireceğine
karar verir.
Ve eğer kritik bölüme girmeyi bekleyen birden fazla yazılı parça varsa, işletim sistemi bunların
hepsinin kritik bölüme girmesine izin vermelidir.
Muhtemelen beş numara, triad zaten kilidi açılmış Maddox'un kilidini açmaya çalışırsa programınızın bir çökme olduğunu iddia etmesi
gerektiğini söylüyor.
Üzgünüm, uygulayacağımız sağ okuma kilidini zaten açmıştık.
Tamam.
Dolayısıyla, sistemdeki herhangi bir tehdit zaten kilitli olmayan veya mevcut olan kilidi açmaya çalışırsa
veya tehdit sistemdeki başka bir üçlü tarafından zaten kilitli olan kilidi açmaya çalışırsa, bu durumda programınız
çökmelidir.
Uygulamamız, sistemdeki hiçbir tehdidin, tehdidin bile sahip olmadığı kilidi açmaya çalışmamasına
dikkat etmelidir.
Bu nedenle, uygulamamızda mümkün olduğunca çok saldırı ekleyeceğiz çünkü her durakta kilidin durumunu,
tutarlı olup olmadığını kontrol edeceğiz.
Ve programın herhangi bir noktasında, kilidin durumu tutarsız bulunursa, programımız bunu
yaptığımızı iddia etmelidir, böylece atomu meydana gelir gelmez yakalayabiliriz.
Tamam.
Ve bir test programı yazarak uygulamayı test edeceğiz.
Dolayısıyla, uygulamamız aşağıdaki dizinde yardımcı olacaktır RW lock start at Slashdot ceive,
uygulamamızı gerçekleştireceğimiz kaynak dosya olacaktır, böylece ekranda RW Lock
Start Attach dosyasında olduğumu görebiliriz ve bu, sağ okuma kilidimizi temsil edecek olan bu yapıyı
tanımladığım dosyadır.
Ve bunlar uygulayacağımız bir grup API'dir.
Tamam.
Yapacağız.
API yazmaya gitmek standart olanlara benzer.
Bu nedenle, bir sonraki dersten itibaren, yeniden yazma kilitlerimizin uygulamasına başlayacağız ve uygulamamız
için yalnızca koşul değişkeni ve normal indeksler kullanacağımızı ve başka hiçbir şey kullanmayacağımızı
unutmayın.
Koşullu giyilebilirler muteks üzerinde değildir.
Bunlar, herhangi bir karmaşık veya kompleks iş parçacığı senkronizasyon veri yapısı oluşturmak için temel yapı taşlarıdır.