WEBVTT

00:06.550 --> 00:08.810
Evet çocuklar, şimdi ileriye doğru gidiyoruz.

00:08.830 --> 00:15.130
Sonuç olarak eşzamanlılığa ihtiyacımız var çünkü paralelliği uygulamak için gerçekten çok sayıda

00:15.130 --> 00:17.110
CPU'ya sahip olamayız.

00:17.140 --> 00:19.870
CPU'ların paylaşılması gerekiyor, değil mi?

00:19.870 --> 00:25.150
Çünkü sisteminizde çalışan yüzlerce işlem olabilir, ancak yüzlerce CPU'ya sahip

00:25.150 --> 00:32.170
olamazsınız, böylece bu işlemlerin her birini farklı bir CPU'da çalıştırabilir ve aynı zamanda ilerlemeyi

00:32.170 --> 00:34.290
sağlamanız gerekir, değil mi?

00:34.300 --> 00:40.620
İşte bunlar bizi bilgisayar sistemimizde eşzamanlılığa zorlayan iki nedendir.

00:40.630 --> 00:48.490
İşini veya hedefini gerçekleştirmek için birden fazla iş parçacığına ihtiyaç duyan tipik bir

00:48.490 --> 00:50.140
süreci ele alalım.

00:50.140 --> 00:50.890
Doğru.

00:50.920 --> 00:53.560
Şimdi böyle bir örneği ele alalım.

00:53.950 --> 01:01.390
Bu nedenle, bir girdi çıktısını beklemeye ihtiyaç duyulduğunda çok iş parçacıklı bir süreç olarak bir sürece ihtiyaç

01:01.420 --> 01:08.360
duyarız ve aynı zamanda sürecin aynı anda işi tamamlamak için çalışmaya devam etmesi gerekir.

01:08.360 --> 01:09.050
Değil mi?

01:09.050 --> 01:15.230
Yani, sürecin bazı girdi çıktılarını beklemesi ve aynı zamanda sürecin aynı anda bir

01:15.230 --> 01:18.980
miktar tahsis edilmiş işi yürütmesi gerekir.

01:18.980 --> 01:23.810
Yani açıkça sürecinizin çok iş parçacıklı olması gerektiği anlamına geliyor, değil mi?

01:23.810 --> 01:26.750
Şimdi bunu bir örnek yardımıyla tartışalım.

01:26.750 --> 01:33.020
Bir iş parçacığında ağ paketlerini bekleyen bir süreciniz olduğunu varsayalım, değil mi?

01:33.230 --> 01:39.470
Sadece bir ağ uygulamasını temsil eden bir işleminiz var ve tipik bir ağ uygulamasının çok

01:39.470 --> 01:45.500
temel bir gereksinimi, ağ uygulamasının bir ağ paketinin gelmesini beklemesi gerektiğidir,

01:45.500 --> 01:46.940
değil mi?

01:47.210 --> 01:49.760
Bir ağ paketi herhangi bir zamanda gelebilir.

01:50.570 --> 01:56.990
Diyelim ki bir iş parçacığında bir ağ paketini bekleyen bir sürecimiz var,

01:56.990 --> 02:04.790
aynı süreç diğer iş parçacığında sürekli olarak bazı periyodik ağ paketleri gönderiyor.

02:04.790 --> 02:05.600
Doğru.

02:05.990 --> 02:11.900
Üçüncü gereklilik ise aynı sürecin kullanıcı girdisini beklemesi gerektiğidir, değil mi?

02:11.900 --> 02:18.500
Böylece bir numaralı iplik, iki numaralı iplik ve üç numaralı ipliğe ihtiyaç olduğunu görebilirsiniz.

02:18.500 --> 02:23.930
Ve tüm bu konuların kendi görevlerini aynı anda yerine getirmesi gerekir.

02:24.110 --> 02:30.260
Süreç bir numaralı iş parçacığında bir ağ paketi için beklerken, bir uygulamanın kullanıcı

02:30.290 --> 02:34.370
girdisini kabul edememesi söz konusu olmamalıdır.

02:34.370 --> 02:35.030
Doğru.

02:35.030 --> 02:41.570
Ve uygulama kullanıcı girdisini alırken, uygulamanın veya sürecin gelen ağ paketini

02:41.570 --> 02:44.810
kabul edememesi söz konusu olmamalıdır.

02:44.810 --> 02:45.470
Değil mi?

02:45.470 --> 02:50.780
Dolayısıyla, bu üç görevin de bu tipik süreç tarafından aynı anda yapılması gerekir.

02:50.780 --> 02:54.410
Bu da basitçe bu sürecin çok iş parçacıklı olması gerektiği anlamına gelir.

02:54.710 --> 02:58.430
Şimdi bu süreci bir diyagram yardımıyla görselleştirmeye çalışalım.

02:58.430 --> 03:01.850
Bunun bir ana iş parçacığı olduğunu varsayalım, değil mi?

03:01.850 --> 03:10.250
Ve bu P süreci bir T üç iş parçacığı başlatır ve bunun F çatal noktası olduğunu söyleyelim, F bir diyelim.

03:10.250 --> 03:11.000
Değil mi?

03:11.360 --> 03:17.060
Yani bu, ağ paketlerinin gelmesini ve ağ paketinin gelmesini bekleyen T üç iş

03:17.060 --> 03:18.290
parçacığıdır.

03:19.220 --> 03:23.030
İş parçacığı içinde ağ paketini işleyen süreç.

03:23.210 --> 03:24.410
Üç sağ.

03:24.410 --> 03:27.950
Ve sonra tekrar bir sonraki ağ paketini bekler.

03:28.310 --> 03:33.830
Benzer şekilde, bu sürecin ikinci gereksinimi de periyodik paketlerin gönderilmesiydi.

03:33.830 --> 03:39.500
Şu anda periyodik paket göndermek sürekli bir süreçtir.

03:39.500 --> 03:44.290
Bunun için sürecimiz başka bir konu başlattı.

03:44.330 --> 03:45.770
İki sağ.

03:45.920 --> 03:51.530
Ve T iki iş parçacığının amacı sadece bazı ağ paketlerini hazırlamak ve ağda periyodik olarak

03:51.530 --> 03:52.520
göndermektir.

03:52.520 --> 03:53.240
Değil mi?

03:53.240 --> 03:56.660
Yani süreç kendi iş parçacığında başka bir iş yapıyor.

03:56.690 --> 03:57.380
T 2.

03:59.690 --> 04:01.740
Diyelim ki burası çatal noktası.

04:01.760 --> 04:02.480
F2.

04:03.980 --> 04:10.730
Ve şimdi sürecin üçüncü gereksinimi, kullanıcı girdi sağladığında kullanıcı girdisini de kabul

04:10.730 --> 04:13.210
etmesi gerektiğidir, değil mi?

04:13.220 --> 04:17.300
Bunun için sürecimizin başka bir şehir iş parçacığı başlatması gerekir.

04:17.300 --> 04:17.990
Değil mi?

04:17.990 --> 04:22.250
Ve bunun dördüncü nokta F üç olduğunu varsayalım, değil mi?

04:22.520 --> 04:27.500
Yani T iş parçacığının amacı sadece kullanıcı girdisini beklemektir, değil mi?

04:27.500 --> 04:32.930
Ve kullanıcı girdisi alınır alınmaz, t bir iş parçacığı bu girdiyi işleyecektir.

04:35.170 --> 04:41.860
Gördüğünüz gibi bu, sürecimizin çoklu iş parçacıklı bir süreç olmasının gerekli olduğu örneklerden

04:41.860 --> 04:42.760
biridir.

04:43.150 --> 04:51.010
Uygulamanın işlem yapabilmesi için paketin gelmesini beklemek herhangi bir tipik ağ uygulamasının çok temel

04:51.010 --> 04:57.190
bir gereksinimidir ve ağ uygulamasının da periyodik paketler göndermek gibi tipik bir

04:57.190 --> 04:58.420
rolü vardır.

04:58.450 --> 04:59.260
Doğru.

05:00.040 --> 05:06.850
Yani tipik bir ağ uygulamasında T3 ve T2 iş parçacıklarını, en azından T3 ve T2 iş parçacıklarını

05:06.850 --> 05:08.920
göreceksiniz, değil mi?
