WEBVTT

00:05.330 --> 00:12.080
Evet arkadaşlar, şimdi semafor ve Mutex arasındaki farkı karşılaştıralım ki bunu açıkça anlayabilesiniz.

00:12.080 --> 00:17.450
Mutex ve Semaphore arasındaki fark nedir ve belirli bir problem ifadesi için mutex mi yoksa semaphore

00:17.450 --> 00:20.990
mu kullanmanız gerektiğine nasıl karar verebilirsiniz?

00:21.020 --> 00:21.800
Değil mi?

00:21.830 --> 00:28.010
Semaforları ve muteksleri de anlarsanız, hangi problemlerde semaforları kullanmanız gerektiğine ve

00:28.010 --> 00:33.590
hangi problemde sadece muteksleri kullanmanın faydalı olacağına net bir şekilde karar verebilir

00:33.590 --> 00:38.630
ve semaforları kullanarak probleminizi aşırı karmaşık hale getirmezsiniz.

00:39.620 --> 00:43.730
Bu aslında pratikle ve deneyimle gelen bir şeydir.

00:43.910 --> 00:48.440
Slaytta da görebileceğiniz gibi, slaytı iki bölüme ayırdık.

00:48.440 --> 00:55.400
Sol tarafta mutex kullanımı gösterilirken, slaydın sağ tarafında semafor kullanımı gösterilmektedir.

00:55.430 --> 01:01.700
Şu anda sol tarafta bu yatay okların olduğunu görebilirsiniz.

01:01.730 --> 01:08.150
Bu yatay oklar kritik bölümün başlangıcını ve kritik bölümün bitişini temsil etmektedir.

01:08.150 --> 01:08.870
Değil mi?

01:08.900 --> 01:13.820
Benzer şekilde, sağ tarafta da kritik bölüm başlangıcı ve kritik bölüm vardır.

01:13.820 --> 01:17.690
Ve şimdi mutekslere odaklanalım.

01:17.720 --> 01:24.140
Başka bir deyişle, aslında burada muteks kavramını gözden geçiriyoruz çünkü kısaca semaforların

01:24.140 --> 01:27.620
işlevselliğini mutekslerle karşılaştıracaktık.

01:27.620 --> 01:28.430
Doğru.

01:28.460 --> 01:35.720
Muteksler söz konusu olduğunda, T1 iş parçacığı kritik bölüme girmeye çalışırsa muteksi kilitler.

01:35.720 --> 01:36.290
Değil mi?

01:36.290 --> 01:43.230
Ve muteks üzerindeki kilit kullanılabilir durumdaysa, T1 iş parçacığı kritik bölüme girmeyi ve yürütmeyi

01:43.230 --> 01:44.370
başarır.

01:44.370 --> 01:45.150
Doğru.

01:45.960 --> 01:49.460
Yani bir bakıma muteksler sadece evet ya da hayır der.

01:49.470 --> 01:52.890
Kritik bölüme girmenize ya izin verilir ya da verilmez.

01:52.890 --> 01:53.640
Değil mi?

01:54.790 --> 01:58.870
Yani burada izin numarası, izin numarası diye bir şey var.

01:58.870 --> 02:06.490
İzin sayısı ise muteks tarafından korunan kritik bölüme girmesine izin verilen iş parçacığı veya yürütme

02:06.490 --> 02:09.420
birimi sayısını temsil eder.

02:09.430 --> 02:13.780
Yani muteks durumunda, izin numarası birdir, değil mi?

02:14.140 --> 02:21.040
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.

02:21.040 --> 02:21.700
Doğru.

02:21.700 --> 02:28.930
Dolayısıyla, birinci iş parçacığı bu kritik bölüm içinde çalışıyorsa ve t iki iş parçacığı gelip kritik

02:28.930 --> 02:35.050
bölüme girmeye çalışırsa, t iki iş parçacığının engelleneceğini zaten biliyoruz.

02:35.050 --> 02:43.420
Ve iş parçacığı kritik bölümden çıkana ve muteksin kilidini açana kadar engellenmiş olarak kalacaktır.

02:43.420 --> 02:44.230
Doğru.

02:44.230 --> 02:52.060
Yani mutex'in izin sayısı birdir, ancak semaforun hikayesi biraz farklıdır.

02:52.090 --> 02:58.910
Bir semafor oluşturduğumuzda, negatif veya pozitif olmayan bir tamsayı belirtmemiz gerekir.

02:58.940 --> 02:59.780
Doğru.

03:00.650 --> 03:04.670
Bu pozitif tamsayı, söz konusu semaforun izin numarasıdır.

03:04.670 --> 03:10.730
Bu örnekte, diyelim ki semafor tarafından korunan kritik bir bölümümüz var,

03:10.730 --> 03:11.510
değil mi?

03:11.840 --> 03:17.780
Ve diyelim ki izin numarası veya bu ile tanımlanmış ve değeri üçe eşit olan bir semaforumuz

03:17.780 --> 03:18.530
var.

03:18.830 --> 03:24.890
Yani basitçe, t bir iş parçacığı geldiğinde ve kritik bölüme girmeye çalıştığında,

03:24.920 --> 03:31.100
semafor bu t bir iş parçacığının kritik bölüme girmesine izin verecektir.

03:31.100 --> 03:31.880
Doğru.

03:31.910 --> 03:38.000
Benzer şekilde, t iki iş parçacığı gelir ve kritik bölüme girmeye çalışırsa, semafor kritik bölüm

03:38.000 --> 03:41.930
içinde t iki iş parçacığının yürütülmesine izin verecektir.

03:42.170 --> 03:47.840
Doğru çünkü semaforun izin sayısını üç olarak varsaymıştık.

03:47.870 --> 03:55.220
Benzer şekilde, t üç iş parçacığı gelirse, semafor yine t üç iş parçacığının kritik bölüme girmesine ve doğru

03:55.220 --> 03:57.860
şekilde çalışmasına izin verir.

03:57.860 --> 04:04.670
Ancak t dört iş parçacığı şimdi gelirse semafor tamamen tükenmiştir.

04:04.670 --> 04:09.560
T dört ipliğinin kritik bölüme girmesi engellenecektir.

04:09.590 --> 04:14.540
Semafor, t dört iş parçacığının kritik bölüme girmesine izin vermez.

04:14.540 --> 04:15.230
Doğru.

04:15.230 --> 04:19.820
Yani bu değer ve bir semaforun izin numarasını temsil eder.

04:20.030 --> 04:20.810
Doğru.

04:21.930 --> 04:27.930
Şimdi, bu açıklamada, Mutex'lerin hiçbir şey olmadığını, ancak semaforun özel bir durumu olduğunu görebilirsiniz.

04:28.050 --> 04:34.290
Bu semaforu bir değerle, yani bire eşit izin sayısıyla başlatırsanız, işlevsellik

04:34.290 --> 04:39.150
açısından semaforunuz muteks ile tamamen aynıdır, değil mi?

04:39.570 --> 04:45.510
Bu nedenle muteks aynı zamanda ikili semaforlar olarak da adlandırılır ve bu bir mülakat sorusudur.

04:45.510 --> 04:46.320
Doğru.

04:48.130 --> 04:54.370
Semaforu bire eşit izin değeriyle başlatırsanız, semaforunuz tam olarak mutex

04:54.370 --> 04:55.740
gibi davranır.

04:55.750 --> 05:01.390
Dolayısıyla bu tartışmadan çıkarılacak sonuç, izin numarasının bir tamsayı değeri olduğudur.

05:01.390 --> 05:07.360
Muteks durumunda, izin numarası sabittir, yani birdir Semaforlar durumunda, izin numarası kullanıcı

05:07.540 --> 05:13.390
tanımlıdır ve kullanıcı tarafından negatif olmayan herhangi bir değer için belirtilebilir.

05:13.390 --> 05:14.110
X.

05:14.140 --> 05:14.860
Doğru.

05:16.090 --> 05:21.460
Tanım olarak, izin sayısı kritik bölüme girmesine ve eş zamanlı olarak çalışmasına izin

05:21.460 --> 05:24.130
verilen yürütme birimlerinin sayısıdır.

05:24.160 --> 05:32.710
Şimdi, burada belirtmek istediğim bir nokta, burada kritik bölümde, semaforlar söz konusu olduğunda,

05:32.710 --> 05:39.780
n sayıda yürütme biriminin eşzamanlı olarak çalışmasına izin veriyoruz.

05:39.790 --> 05:40.510
Doğru.

05:40.540 --> 05:47.380
Bu, bu kritik bölümün birden fazla iş parçacığı tarafından aynı anda yürütülmesi durumunda değişmezlik

05:47.380 --> 05:50.380
sorununa neden olacağı anlamına mı gelir?

05:51.670 --> 05:52.300
Doğru.

05:52.330 --> 05:54.010
Veri yapısını bozar mı?

05:54.160 --> 05:56.110
Bu sorunlara yol açar mı?

05:56.110 --> 06:01.150
Kritik bölümde birden fazla iş parçacığının korumasız yürütülmesi hangisine yol açar?

06:01.180 --> 06:02.830
Cevabım hayır.

06:02.860 --> 06:09.910
Burada, semaforlar tarafından korunan kritik bölümlerin, normal senaryoda iş parçacıklarının

06:09.910 --> 06:18.230
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

06:18.230 --> 06:24.500
yürütülebilecekleri özel bir özelliğe sahip oldukları varsayımına sahibiz.

06:24.530 --> 06:26.750
Yani burada bir varsayımımız var.

06:26.870 --> 06:33.500
Dolayısıyla, semafor kullandığınızda, kritik bölümünüz, birden fazla yürütme birimi tarafından

06:33.500 --> 06:41.630
eşzamanlı olarak yürütülmesine izin verildiğinde, programınız herhangi bir soruna yol açmayacak niteliktedir.

06:41.750 --> 06:47.810
Örneğin, bu tür kritik bir bölümün gerçek bir örneği, diyelim ki bir bilgisayar sisteminiz

06:47.810 --> 06:57.110
var ve on kadar kullanıcının uzaktan oturum açma kullanarak bu bilgisayar sistemine giriş yapmasını istiyorsunuz, değil

06:57.110 --> 06:58.220
mi?

06:58.220 --> 07:04.190
Yani bu bilgisayar sisteminde aynı anda en fazla on kullanıcının oturum açmasını istiyorsunuz.

07:04.190 --> 07:07.370
Dolayısıyla bu bilgisayar sistemi kritik bölüm haline geliyor.

07:07.370 --> 07:13.400
Ve birden fazla kullanıcının aynı anda bazı uzak sunucularda uzaktan oturum açabileceğini zaten biliyoruz.

07:13.400 --> 07:14.060
Değil mi?

07:14.060 --> 07:21.110
Bu, kaynağınızı, yani bu bilgisayar sistemini veya sunucuyu koruyacağınız ve bu bilgisayar sistemine

07:21.110 --> 07:27.710
giriş yapabilecek kullanıcı sayısına bir üst sınır koyacağınız bir örnektir, değil mi?

07:27.920 --> 07:34.580
Böylece on kullanıcı da bu bilgisayar sistemine uzaktan giriş yapabilir ve sorunsuz bir şekilde çalışırlar.

07:34.580 --> 07:38.030
Bilgisayar sistemi bu şekilde tasarlandığı için bozulmayacaktır.

07:38.060 --> 07:41.330
Aynı anda on uzaktan oturum açma işlemini gerçekleştirebilir.

07:41.330 --> 07:41.930
Doğru.

07:41.930 --> 07:48.410
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

07:48.410 --> 07:49.190
sahiptir.

07:49.190 --> 07:55.010
Bu, bilgisayar sisteminizde aynı anda uzaktan oturum açabilecek kullanıcı sayısını sınırlamak için semaforlardan

07:55.010 --> 07:57.980
yararlanabileceğiniz bir örnektir.
