WEBVTT

00:03.770 --> 00:10.700
Evet arkadaşlar, şimdi bu bölümdeki son konu bir semaforun güçlü bir semafor mu yoksa zayıf bir semafor mu olduğunu

00:10.700 --> 00:12.110
sınıflandırmaktır.

00:12.140 --> 00:17.540
Dolayısıyla, verilen bir semafor, ister adlandırılmış bir semafor ister adlandırılmamış bir semafor olsun, fark etmez.

00:17.570 --> 00:22.580
Belirli bir semafor her zaman güçlü semafor veya zayıf semafor olarak sınıflandırılabilir.

00:22.610 --> 00:28.250
Peki semaforu neye dayanarak güçlü semafor ya da zayıf semafor olarak sınıflandıracağız?

00:28.280 --> 00:35.890
Semaforun, üzerinde bloklanan iş parçacıklarının kritik bölüme girmesine nasıl izin verdiğine bağlıdır.

00:35.900 --> 00:36.680
Doğru.

00:38.180 --> 00:44.750
Yani her şey semaforun engellenen iş parçacığının kritik bölüme girmesine izin verme şekli ya

00:44.750 --> 00:46.580
da düzeniyle ilgilidir.

00:46.580 --> 00:47.300
Doğru.

00:49.260 --> 00:51.600
O halde önce bu tanımın üzerinden geçelim.

00:51.780 --> 00:59.190
Teorik olarak, çözümünüzde bir muteks veya semafor üzerinde engellenen bir iş parçacığının yürütmeye devam etme şansının

00:59.220 --> 01:02.190
asla olmayabileceğini gösterebilirsiniz.

01:02.190 --> 01:05.160
Ve bu durum açlık olarak adlandırılır.

01:05.190 --> 01:09.510
O zaman bu çözümün sınırlı bekleme özelliğinden yoksun olduğunu söyleriz.

01:09.510 --> 01:15.830
Şimdi bu teknik bir terim olan sınırlı bekleme ve böyle bir semafor zayıf semafor olarak adlandırılır.

01:15.870 --> 01:16.660
Doğru.

01:16.740 --> 01:19.800
Yani bu tanımda çok fazla anahtar kelime var.

01:19.800 --> 01:22.350
Örneğin, teorik olarak, değil mi?

01:22.350 --> 01:29.160
Teorik olarak, sizin çözümünüzde bazı özel durumlarda asla CPU alamayan belirli

01:29.160 --> 01:33.990
iş parçacıklarının olabileceği iddia edilebilir.

01:33.990 --> 01:40.200
O zaman çözümünüzün sınırlı bekleme özelliğinden yoksun olduğunu söyleriz ve eğer çözümünüzde

01:40.200 --> 01:45.360
semafor kullanılıyorsa, böyle bir semafor zayıf semafor olarak adlandırılır.

01:45.480 --> 01:47.970
Şimdi bu noktayı detaylandırmama izin verin.

01:47.970 --> 01:49.870
Bu diyagram yardımıyla.

01:50.700 --> 01:58.380
Diyelim ki bir noktada kritik bölüme girmeye çalışan T1 iş parçacığı, T2 ve T3 iş parçacığı

01:58.380 --> 02:05.120
var, ancak aynı bekleme çağrısında bir semafor tarafından engelleniyorlar.

02:05.130 --> 02:05.880
Doğru.

02:06.740 --> 02:12.920
Şimdi sistemdeki başka bir iş parçacığının semafora sinyal gönderdiğini varsayalım.

02:13.490 --> 02:14.300
Doğru.

02:14.300 --> 02:15.490
Peki ne olacak?

02:15.500 --> 02:22.130
İşletim sistemi bu semafor üzerinde bloke olan iş parçacıklarından birini seçecek ve bu iş parçacığının

02:22.130 --> 02:24.880
kritik bölüme girmesine izin verecektir.

02:24.890 --> 02:30.680
Örneğin, bu şanslı ipliğin bir sağdaki iplik olduğunu seçelim.

02:30.680 --> 02:36.500
Böylece t bir iş parçacığı bu sinyali tüketecek ve t bir iş parçacığı kritik bölüme girecek, T2 ve

02:36.500 --> 02:40.910
T3 iş parçacıkları ise semafor üzerinde bloklamaya devam edecektir.

02:42.780 --> 02:49.850
Şimdi başka bir iş parçacığının geldiğini ve yine semafor üzerinde bloke olduğunu varsayalım.

02:49.860 --> 02:50.730
Değil mi?

02:50.820 --> 02:52.590
Sistemdeki başka bir iplik.

02:52.590 --> 02:54.630
Tekrar, başka bir sinyal oluşturun.

02:54.930 --> 03:01.410
Ve işletim sisteminin ikinci sinyali tüketmek için t dört iş parçacığını seçtiğini ve kritik bölüme

03:01.410 --> 03:04.200
girmesine izin verdiğini varsayalım.

03:04.930 --> 03:05.620
Doğru.

03:07.000 --> 03:13.960
Dolayısıyla, bu kalıbı sonsuza kadar tekrarlayabilirsem, örneğin, T5 iş parçacığı gelir

03:13.990 --> 03:20.950
ve sistemdeki başka bir iş parçacığı için tekrar engellenir ve işletim sistemi t5 iş parçacığını

03:20.950 --> 03:26.430
seçer ve t5 iş parçacığının kritik bölüme girmesine izin verir.

03:26.440 --> 03:27.220
Doğru.

03:27.220 --> 03:31.570
Böylece bu modeli tekrar, tekrar, tekrar ve tekrar tekrarlayabilirim.

03:31.600 --> 03:41.890
Teorik olarak öyle ki, T2 ve T3 iş parçacığının asla CPU alamayacağını ve açlıktan öleceklerini söyleyebilirim.

03:41.920 --> 03:42.670
Doğru.

03:42.670 --> 03:44.170
Peki neden açlıktan ölüyorlar?

03:44.170 --> 03:52.000
Çünkü kritik bölüme girmesine izin vermek için bu sandviç çağrısında engellenen yeni gelen

03:52.000 --> 03:59.560
bir ipliği seçiyorum ve zaten engellenmiş olan T2 ve T3 ipliğine kritik bölüme girme fırsatı

03:59.560 --> 04:01.090
vermiyorum.

04:01.090 --> 04:01.810
Doğru.

04:03.670 --> 04:11.500
Dolayısıyla, üzerinde bloke olan tüm iş parçacıklarının eninde sonunda kritik bölüme gireceğini garanti etmeyen

04:11.500 --> 04:13.420
böyle bir semafor.

04:13.420 --> 04:16.540
Böyle bir semafora zayıf semafor denir.

04:16.720 --> 04:17.610
Doğru.

04:17.620 --> 04:20.050
Peki zayıf semaforun temel nedeni nedir?

04:20.080 --> 04:28.450
Zayıf semaforun temel nedeni, kritik bölüme girmesine izin vermek için semafor üzerinde engellenen

04:28.450 --> 04:33.790
bir iş parçacığını seçerken kullandığımız rastgeleliktir.

04:34.000 --> 04:34.780
Doğru.

04:38.140 --> 04:46.030
Yiyecek bir şeyler almak için bir dükkana gittiğinizde dükkanda çok sayıda insan varsa ve dükkan sahibi

04:46.030 --> 04:53.560
tüm bu müşterileri rastgele bir şekilde eğlendiriyorsa, dükkan sahibi tarafından eğlendirilme

04:53.560 --> 04:56.540
şansınız asla olmayabilir.

04:56.560 --> 04:58.960
Yani, teorik olarak bu mümkün, değil mi?

05:00.840 --> 05:05.880
Böylece T2 ve T3 iş parçacığı açlığa maruz kalır.

05:05.880 --> 05:07.770
İşlemci için açlıktan ölüyorlar.

05:08.040 --> 05:08.790
Doğru.

05:09.750 --> 05:16.230
Semafor üzerinde bloke olan tüm iş parçacıklarının eninde sonunda bir CPU almasını bir şekilde sağlayabilirsek,

05:16.230 --> 05:21.180
böyle bir semafor güçlü bir semafor olarak adlandırılır.

05:21.180 --> 05:21.930
Doğru.

05:22.570 --> 05:30.120
Yani, blok iş parçacıklarının blokajının sinyal başına doğru bir şekilde Fifo tarzında kaldırılacağı bir yol kullanabilirsek,

05:30.130 --> 05:34.780
böyle bir semaforun güçlü bir semafor olduğu söylenir.

05:35.590 --> 05:39.220
Şimdi bu sorun örneğini tekrar gözden geçirelim.

05:42.090 --> 05:49.290
T1 ve T2 iş parçacığı ile üçüncü iş parçacığının semafor üzerinde bloke olduğunu ve sistemdeki başka bir iş parçacığının bir

05:49.290 --> 05:51.300
sinyal ürettiğini varsayalım.

05:51.300 --> 05:52.080
Doğru.

05:52.110 --> 06:00.480
Şimdi burada T1, T2 ve T3 iş parçacığının Fifo bir şekilde semafor üzerinde engellenmesini sağlıyoruz.

06:00.750 --> 06:07.650
Yani şimdi dördüncü iş parçacığı gelirse semaforda engellenecek, ancak en sonda Fifo kuyruğuna

06:07.650 --> 06:08.880
eklenecektir.

06:09.060 --> 06:15.600
Ve sistemdeki başka bir iş parçacığı tarafından üretilen herhangi bir sinyal, yalnızca bu Fifo kuyruğunun önündeki

06:15.600 --> 06:18.240
iş parçacığı tarafından tüketilecektir.

06:18.270 --> 06:19.020
Doğru.

06:19.020 --> 06:25.650
Dolayısıyla, sinyali tüketecek ve kritik bölüme girmesine izin verecek olanın T1 iş parçacığı olmasını

06:25.650 --> 06:27.300
sağlayabilirsek.

06:27.300 --> 06:28.170
Doğru.

06:29.920 --> 06:35.860
Yine, sistemdeki başka bir iş parçacığı ikinci bir sinyal üretirse, t iki iş parçacığını alabilir

06:35.860 --> 06:39.160
ve kritik bölüme girmesine izin verebiliriz.

06:39.430 --> 06:40.270
Doğru.

06:42.140 --> 06:44.450
Ve ve sistemde.

06:44.450 --> 06:49.180
Yeni bir iş parçacığı gelirse, bu iş parçacığını kuyruğun sonuna sıralayacağız.

06:49.190 --> 06:56.510
Bu beşinci iş parçacığıdır, böylece ilk gelen iş parçacığı sinyal üretildikten sonra kritik

06:56.510 --> 06:59.260
bölüme girme şansına sahip olur.

06:59.270 --> 07:00.020
Doğru.

07:04.630 --> 07:11.470
Şimdi bir Fifo düzenini koruyarak, yeterli sayıda sinyal üretildiği sürece sonunda tüm

07:11.470 --> 07:16.640
iş parçacıklarının kritik bölüme gireceğini garanti ettik.

07:16.660 --> 07:17.410
Doğru.

07:17.410 --> 07:24.030
Dolayısıyla böyle bir semafora güçlü semafor denir ve zayıf bir semafor güçlü semafora dönüştürülebilir.

07:24.040 --> 07:30.460
Eğer engellenen iş parçacıklarına bazı önceliklere göre kritik bölüme girmeleri için sinyal gönderebileceğimiz

07:30.460 --> 07:35.950
bir mekanizma kurabilirsek, bu durumda Fifo kuyruğunu kullandık.

07:36.100 --> 07:36.850
Doğru.

07:38.990 --> 07:44.840
Dolayısıyla, iş parçacığı senkronizasyon veri yapınız eninde sonunda tüm blok iş parçacıklarının kritik

07:44.840 --> 07:50.510
bölüme gireceğini gösteren bir özelliğe sahip olduğunda, iş parçacığı senkronizasyon veri yapınızın

07:50.510 --> 07:53.880
sınırlı bekleme özelliğine sahip olduğunu söyleriz.

07:53.900 --> 07:58.980
Dolayısıyla sınırlı bekleme, herhangi bir senkronizasyon çözümünün sahip olması gereken arzu edilen bir özelliktir.

07:59.000 --> 07:59.720
Doğru.

07:59.750 --> 08:07.310
Sınırlı bekleme, bir semafor üzerinde engellenen belirli bir iş parçacığının sonlu miktarda bekleme süresine sahip olacağı

08:07.310 --> 08:08.810
anlamına gelir.

08:12.140 --> 08:17.900
Gelecekte bir noktada semafor üzerinde bloke edilen iş parçacıklarının eninde sonunda

08:17.900 --> 08:21.920
bir CPU alacağı ve kritik bölüme gireceği garanti edilir.

08:22.100 --> 08:22.820
Doğru.

08:22.820 --> 08:25.580
Dolayısıyla bu özelliğe sınırlı bekleme denir.

08:26.930 --> 08:33.890
Dolayısıyla zayıf semaforlar, blok iş parçacığı seçim politikasını biraz rastgele biraz deterministik olarak

08:33.890 --> 08:37.360
değiştirerek güçlü semaforlara dönüştürülebilir.

08:37.370 --> 08:44.540
Bu durumda Fifo kuyruğu şu anda zayıf bir semaforu güçlü bir semafora dönüştürmek için bazı arka plan çalışmaları

08:44.540 --> 08:46.610
yapmamızı gerektiriyor.

08:47.720 --> 08:54.500
Yani, semaforumuzu akıllı hale getirmemiz gerekir, böylece Fifo kuyruğundan bir iş parçacığı seçebilir

08:54.500 --> 09:01.670
ve bir sinyal tüketildiğinde yalnızca bu iş parçacığının kritik bölüme girmesine izin verilmelidir.

09:01.670 --> 09:02.360
Doğru.

09:04.820 --> 09:08.380
Bu yüzden bu kursun devamında bu alıştırmayı yapacağız.

09:08.390 --> 09:15.020
Bu derste şemamızı akıllı hale getireceğiz ve zayıf şema for'dan güçlü şema for'a dönüştüreceğiz.

09:15.020 --> 09:21.860
Uyguladığımız dahili veya özel şema kuvveti ne olursa olsun, kullandığımız çabalar zayıf şema

09:21.860 --> 09:22.920
kuvvetiydi.

09:24.200 --> 09:33.140
Aslında sadece semaforlar değil, muteksler de zayıf mutekslerdir çünkü muteks üzerinde bloke olan t1, T2 ve T3 iş parçacıkları

09:33.140 --> 09:39.740
işletim sistemi tarafından rastgele seçilir ve iş parçacıklarından sadece biri kritik

09:39.740 --> 09:41.750
bölüme girer.

09:41.750 --> 09:47.420
Dolayısıyla burada uyguladığımız mantık muteks için de geçerlidir.

09:49.440 --> 09:56.250
Ve bir semaforun zayıf bir semafor olmasının arkasındaki açıklamanın doğası gereği teorik olduğunu unutmayın.

09:56.280 --> 09:57.150
Değil mi?

09:57.300 --> 10:01.620
Zayıf semaforları dağıtırken bunu zaten görmüştünüz.

10:01.620 --> 10:08.580
İşletim sistemi, semafor üzerindeki blok iş parçacıkları arasından iş parçacıklarını bir miktar rastgelelikle seçtiği

10:08.580 --> 10:14.550
için, bloke iş parçacıklarımızdan herhangi birinin asla CPU alamayacağı bir duruma düşmeyiz.

10:14.730 --> 10:21.540
Böylece sonunda tüm iş parçacıkları CPU'yu alma ve kritik bölüme girme şansına sahip olur.

10:21.630 --> 10:22.410
Doğru.

10:23.510 --> 10:30.980
Ancak teorik olarak birisi size iş parçacığı senkronizasyon veri yapınızın sınırlı bekleme özelliğinden yoksun olduğunu

10:30.980 --> 10:36.800
iddia ederse, bu kullandığınız semaforun veya çözümün zayıf olduğu anlamına gelir.

10:37.190 --> 10:37.880
Değil mi?

10:38.430 --> 10:43.950
Semafor üzerinde bloke olan bir iş parçacığının açlık sorununa maruz kalabileceği

10:43.980 --> 10:49.140
bir iş parçacığı senkronizasyon programı yazmanız zordur.

10:49.260 --> 10:49.950
Değil mi?

10:49.950 --> 10:55.860
Böyle bir program yazmak zordur çünkü işletim sisteminiz blok iş parçacıklarını bir miktar rastgelelikle

10:55.860 --> 11:01.770
seçer ve sonunda semafordaki tüm bloklanmış iş parçacıkları bir CPU alacaktır.

11:02.670 --> 11:08.370
Yani semaforunuzun zayıf bir semafor olduğunun kanıtı doğası gereği teoriktir, değil mi?

11:09.550 --> 11:10.930
Bunu gösteremezsin.

11:10.930 --> 11:16.270
Bunu gösteremezsiniz, kanıtlayamazsınız, ancak teorik olarak tartışabilirsiniz.
