WEBVTT

00:07.020 --> 00:09.570
Evet, çocuklar, bu derse tekrar hoş geldiniz.

00:09.570 --> 00:14.400
VİDEO Kurşun sağ kilitler için kendi uygulamamızı hayata geçireceğiz.

00:15.120 --> 00:21.240
APO six kütüphanesi tarafından sağlanan kamış sağ kilitleri nasıl kullanacağımızı zaten öğrendik ve şimdi

00:21.240 --> 00:25.380
daha ileri gidip kendi sağ kilit versiyonumuzu uygulayacağız.

00:25.710 --> 00:27.660
Şimdi de bu alıştırmayı neden yaptığımıza gelelim.

00:27.660 --> 00:35.250
Bunu bir alıştırma olarak yapıyoruz, böylece kendi özel parça senkronizasyonumuzu uygulamak için daha fazla pratik

00:35.520 --> 00:36.600
yapabiliriz.

00:36.600 --> 00:42.810
Veri yapıları yeniden yazma kilitleri, senkronizasyon, veri yapıları ile oldukça ünlüdür ve bu nedenle,

00:42.810 --> 00:49.440
kendi okuma kilitlerinizi uygulamak istiyorsanız, nasıl bir tane uygulayacağınızı uyguluyoruz?

00:51.060 --> 00:56.910
Daha da ileri giderek, yeniden yazma kilitlerini uygulayacaktık ve bizim uygulamamız POSIX

00:56.910 --> 01:04.710
kütüphanesinin yeniden yazma kilidi uygulamasının sahip olduğu özelliklere yakın özelliklere sahip olmalıydı.

01:05.790 --> 01:06.540
Yani mülk.

01:06.540 --> 01:13.080
Kimse gerçek tehdit kritik bölümde yürütülürken, sistemdeki diğer gerçek tehditlerin hala kritik

01:13.080 --> 01:16.830
bölüme girmesine izin verildiğini söylemiyor.

01:17.160 --> 01:23.670
Bu basitçe, birden fazla iş parçacığının okuma hakkı kilidini elde etmesine izin verildiği anlamına gelir.

01:24.360 --> 01:31.650
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

01:31.650 --> 01:36.930
kaynağın durumunu değiştirmelerine izin verilmediği anlamına geldiğini unutmayın.

01:37.440 --> 01:43.080
Daha sonra, sağ dış kritik bölümde yürütülürken, ister bir okuyucu üçlüsü ister sağ o parça olsun,

01:43.080 --> 01:47.250
başka hiçbir iş parçacığının kritik bölüme girmesine izin verilmez.

01:48.030 --> 01:50.580
Bu da mülkün numarasıdır.

01:50.580 --> 01:55.440
Üç numara, kilidin özyinelemesizlik özelliğini de desteklemesine izin verin diyor.

01:56.040 --> 01:58.080
Şimdi hepimiz bunun ne anlama geldiğini biliyoruz?

01:59.190 --> 02:05.430
Burada tekrarlanabilirlik basitçe, aynı iş parçacığına kilide erişim izni verilmişse, aynı kartın

02:05.970 --> 02:09.420
kilidi birden çok kez alabileceği anlamına gelir.

02:10.140 --> 02:10.560
Tamam.

02:11.340 --> 02:15.750
Dolayısıyla, uygulamamız özyinelemeli olma özelliğini de desteklemelidir.

02:17.510 --> 02:25.100
Ve kilit serbest bırakıldığında, yani kilit, kilidi bekleyen bir yetişkin üçlüsüne erişim için uygun hale

02:25.100 --> 02:31.850
geldiğinde, işletim sistemi zamanlama politikası, bekleyen üçlüden hangisinin bir sonraki

02:32.450 --> 02:36.860
kritik bölüme girmesine izin verileceğine karar versin.

02:37.610 --> 02:38.030
Tamam.

02:38.480 --> 02:45.440
Örneğin, basit bir sessiz erişim durumunda, sessiz erişim elde etmek için bekleyen birden

02:45.440 --> 02:47.900
fazla tehdit olabilir.

02:48.500 --> 02:48.890
Tamam.

02:49.190 --> 02:52.520
Ancak muteks başka bir üçlüye veriliyor.

02:52.540 --> 02:58.550
Bu nedenle, Murdoch'ları bekleyen bir grup test olabilir ve bu muteks kullanılabilir

02:58.550 --> 03:05.750
hale gelir gelmez, bekleyen tüm iş parçacıkları arasında, işletim sistemleri kritik bölüme

03:05.750 --> 03:10.990
en fazla hangi üçlünün girmesini istediğine karar verir.

03:11.750 --> 03:18.350
Kilit serbest bırakıldığında burada izleyeceğimiz aynı özellik işletim sistemini yönetir.

03:18.350 --> 03:24.320
Çizelgeleme politikası, bekleyen üçlüler arasından hangi üçlünün kritik bölüme gireceğine

03:24.320 --> 03:25.250
karar verir.

03:25.850 --> 03:31.640
Ve eğer kritik bölüme girmeyi bekleyen birden fazla yazılı parça varsa, işletim sistemi bunların

03:31.640 --> 03:35.240
hepsinin kritik bölüme girmesine izin vermelidir.

03:36.860 --> 03:45.020
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

03:45.020 --> 03:46.700
gerektiğini söylüyor.

03:47.150 --> 03:51.740
Üzgünüm, uygulayacağımız sağ okuma kilidini zaten açmıştık.

03:52.280 --> 03:52.670
Tamam.

03:52.970 --> 03:59.930
Dolayısıyla, sistemdeki herhangi bir tehdit zaten kilitli olmayan veya mevcut olan kilidi açmaya çalışırsa

03:59.940 --> 04:07.490
veya tehdit sistemdeki başka bir üçlü tarafından zaten kilitli olan kilidi açmaya çalışırsa, bu durumda programınız

04:07.490 --> 04:08.960
çökmelidir.

04:09.650 --> 04:16.040
Uygulamamız, sistemdeki hiçbir tehdidin, tehdidin bile sahip olmadığı kilidi açmaya çalışmamasına

04:16.040 --> 04:17.510
dikkat etmelidir.

04:18.500 --> 04:25.850
Bu nedenle, uygulamamızda mümkün olduğunca çok saldırı ekleyeceğiz çünkü her durakta kilidin durumunu,

04:25.850 --> 04:29.840
tutarlı olup olmadığını kontrol edeceğiz.

04:30.290 --> 04:37.550
Ve programın herhangi bir noktasında, kilidin durumu tutarsız bulunursa, programımız bunu

04:37.550 --> 04:44.420
yaptığımızı iddia etmelidir, böylece atomu meydana gelir gelmez yakalayabiliriz.

04:45.650 --> 04:46.030
Tamam.

04:46.040 --> 04:50.630
Ve bir test programı yazarak uygulamayı test edeceğiz.

04:51.350 --> 04:58.070
Dolayısıyla, uygulamamız aşağıdaki dizinde yardımcı olacaktır RW lock start at Slashdot ceive,

04:58.070 --> 05:04.370
uygulamamızı gerçekleştireceğimiz kaynak dosya olacaktır, böylece ekranda RW Lock

05:04.370 --> 05:11.510
Start Attach dosyasında olduğumu görebiliriz ve bu, sağ okuma kilidimizi temsil edecek olan bu yapıyı

05:11.510 --> 05:14.240
tanımladığım dosyadır.

05:14.840 --> 05:18.080
Ve bunlar uygulayacağımız bir grup API'dir.

05:18.710 --> 05:19.130
Tamam.

05:19.760 --> 05:20.090
Yapacağız.

05:20.090 --> 05:23.180
API yazmaya gitmek standart olanlara benzer.

05:24.200 --> 05:30.440
Bu nedenle, bir sonraki dersten itibaren, yeniden yazma kilitlerimizin uygulamasına başlayacağız ve uygulamamız

05:30.440 --> 05:36.020
için yalnızca koşul değişkeni ve normal indeksler kullanacağımızı ve başka hiçbir şey kullanmayacağımızı

05:36.020 --> 05:37.010
unutmayın.

05:37.520 --> 05:39.330
Koşullu giyilebilirler muteks üzerinde değildir.

05:39.330 --> 05:46.610
Bunlar, herhangi bir karmaşık veya kompleks iş parçacığı senkronizasyon veri yapısı oluşturmak için temel yapı taşlarıdır.
