WEBVTT

00:07.020 --> 00:12.720
Arkadaşlar, bir önceki ders videosunda iş parçacığı eşzamanlı olarak çalıştığında, kendi

00:12.720 --> 00:18.090
işlerini tamamlamak için maksimum süreyi alma eğiliminde olduklarını gördük.

00:18.300 --> 00:22.520
Asıl soru şu ki, neden hala eşzamanlılığımız var?

00:22.530 --> 00:29.010
Eşzamanlılık performans açısından bu kadar zayıfken, modern bilgisayar sistemleri neden hala eşzamanlılığa

00:29.010 --> 00:30.130
devam ediyor?

00:30.150 --> 00:33.410
Bu noktayı anlamak için bir senaryo ele alalım.

00:33.420 --> 00:39.180
Herhangi bir zamanda sisteminizde 100 iş parçacığının çalıştığını varsayalım, değil mi?

00:39.210 --> 00:43.440
Bu 100 iş parçacığı sizin kullanıcı iş parçacıklarınız ve bazı sistem iş parçacıkları olabilir.

00:43.440 --> 00:50.130
Kullanıcı iş parçacıkları kullanıcı alanında çalışan herhangi bir uygulama iken, sistem iş parçacıkları işletim sisteminin

00:50.130 --> 00:53.070
bir parçası olarak çalışan herhangi bir hizmettir.

00:53.070 --> 00:59.850
Örneğin, işletim sistemi zamanlayıcınız, bellek yöneticiniz ve çeşitli aygıt sürücüleriniz vb.

00:59.850 --> 01:00.660
Doğru.

01:00.660 --> 01:06.760
Ama her neyse, günün sonunda bunlar iş parçacıklarıdır ve diyelim ki sistemde çalışan 100 iş parçacığı

01:06.760 --> 01:07.630
var.

01:08.730 --> 01:16.110
Şimdi, sistemden en iyi performansı almak için, bu 100 iş parçacığının hepsini paralel olarak çalıştırmanız

01:16.110 --> 01:17.700
gerekir, değil mi?

01:17.700 --> 01:23.280
Ve tüm bu 100 iş parçacığını paralel olarak yürütmek için 100 CPU'ya ihtiyacınız olacaktır.

01:23.310 --> 01:24.060
Değil mi?

01:24.060 --> 01:27.180
Bu da mümkün olmayan bir şey, değil mi?

01:27.210 --> 01:31.080
Teknik olarak uygulanabilir, ancak ekonomik olarak uygulanabilir değil.

01:31.110 --> 01:33.900
CPU pahalı bir donanım parçasıdır.

01:33.900 --> 01:34.590
Doğru.

01:35.160 --> 01:42.180
Dizüstü bilgisayarınız veya bilgisayarınız olan tipik bir bilgisayar sistemi, bugünlerde tipik olarak sekiz CPU ila 16 CPU'ya

01:42.180 --> 01:42.840
sahiptir.

01:42.840 --> 01:43.650
Doğru.

01:43.830 --> 01:47.100
Sistemin 16'dan fazla CPU'ya sahip olduğunu nadiren gördüm.

01:47.130 --> 01:52.500
Aslında, genel amaçlı bilgisayar sistemleri 16'dan fazla CPU'ya sahip değildir.

01:52.920 --> 01:59.130
Yani tüm canlı iş parçacıkları, canlı iş parçacıkları, sistemde canlı olan 100 iş parçacığının tamamının yürütülmeleri için CPU'ları

01:59.130 --> 02:01.200
paylaşmaları gerektiği anlamına gelir.

02:01.200 --> 02:01.920
Doğru.

02:02.280 --> 02:06.240
Diyelim ki bir bilgisayar sisteminde 16 CPU var.

02:06.270 --> 02:14.070
Bu, 100 iş parçacığının tamamının herhangi bir zamanda bu 16 CPU'yu paylaşması gerektiği anlamına gelir.

02:14.080 --> 02:20.010
Bu 100 iş parçacığından 16'sı bu 16 CPU üzerinde paralel çalışıyor, değil mi?

02:20.020 --> 02:24.550
Yani 16 CPU'da kullanılabilir bir paralellik var, değil mi?

02:24.730 --> 02:28.930
Ancak kalan 84 iş parçacığı aslında boşta durmuyor.

02:28.960 --> 02:32.110
Bu 84 iş parçacığı da tahsis edilmiştir.

02:32.110 --> 02:37.060
Bu 16 CPU arasından CPU'lardan biri eşzamanlı bir şekilde.

02:37.060 --> 02:37.810
Değil mi?

02:37.810 --> 02:43.960
Yani basitçe, tipik bir bilgisayar sisteminde paralellik ve eşzamanlılığın bir arada var olduğu anlamına gelir.

02:44.170 --> 02:49.570
Bu diyagramda görebileceğiniz gibi, sistemde 30 iş parçacığı olduğunu varsayalım ve bu 30 iş parçacığını

02:49.570 --> 02:53.110
her biri on iş parçacığından oluşan bir kovaya bölelim.

02:53.110 --> 02:56.320
Yani g1, G2 ve G3 olmak üzere üç kova vardır.

02:56.350 --> 02:57.070
Doğru.

02:57.490 --> 03:03.910
Aynı kovadaki tüm iş parçacıkları aynı CPU'yu paylaşır ve belirli bir CPU üzerinde çalışırlar

03:03.910 --> 03:08.740
ve CPU'larında eşzamanlı bir şekilde çalışırlar.

03:08.740 --> 03:09.460
Değil mi?

03:09.460 --> 03:15.730
Yani tüm bu on iş parçacığı doğası gereği eşzamanlıdır çünkü CPU olan aynı donanım kaynağı üzerinde

03:15.730 --> 03:17.800
çalışmak zorundadırlar.

03:18.100 --> 03:23.530
Aynı şey G2 kovasındaki tüm iş parçacıkları için de geçerlidir ve aynı şey kovadaki tüm iş parçacıkları

03:23.530 --> 03:25.090
için de geçerlidir.

03:25.090 --> 03:26.440
G3 Sağ.

03:27.080 --> 03:32.570
Aynı gruba ait iş parçacıkları eşzamanlı olarak çalışırken, farklı gruplara ait iş parçacıkları paralel

03:32.570 --> 03:33.850
olarak çalışır.

03:33.860 --> 03:39.830
Dolayısıyla, G1 grubuna ait bir T1 iş parçacığı varsa, CPU bir üzerinde yürütülür.

03:40.040 --> 03:40.850
Değil mi?

03:40.850 --> 03:48.620
Ve eğer G2 grubuna ait T11 gibi bir iş parçacığı varsa, bu iş parçacığı CPU iki üzerinde çalışacaktır.

03:48.800 --> 03:49.520
Doğru.

03:49.520 --> 03:53.720
Böylece t1 ve t11 iş parçacığı paralel olarak çalışır.

03:55.130 --> 04:01.790
Ancak T1 tehdidi CPU'yu T2 ve T3 tehditleriyle paylaşmak zorundadır ve bu nedenle T1, T2 ve T3 iş parçacıkları

04:01.790 --> 04:09.260
arasında bir bağlam geçişi vardır çünkü aynı gruba ait tüm bu iş parçacıkları aynı CPU'yu paylaşmak zorundadır.

04:09.770 --> 04:14.210
Yani bilgisayar sistemimiz eşzamanlılık ve paralelliğin bir karışımıdır.

04:16.100 --> 04:22.310
Sadece paralellik uygulasaydık ve eşzamanlılık olmasaydı çok kötü bir fikir olurdu.

04:22.340 --> 04:29.900
Eğer sadece paralellik söz konusu olsaydı, bu 30 iş parçacığından üç iş parçacığı

04:29.900 --> 04:36.050
üç farklı CPU'da çalışırken diğer 27 iş parçacığı boşta kalırdı.

04:36.050 --> 04:36.830
Doğru.

04:36.860 --> 04:43.520
İş parçacığı CPU üzerindeki işini tamamlayana ve CPU'yu serbest bırakana kadar beklemeleri gerekecektir.

04:43.550 --> 04:44.270
Doğru.

04:45.210 --> 04:47.880
Yani tek başına paralelliğe sahip olmak kötü bir fikirdir.

04:47.880 --> 04:51.170
Eşzamanlılığın tek başına olması da kötü bir fikirdir.

04:51.180 --> 04:58.680
Bugün modern bilgisayarlarda tipik bir bilgisayar sisteminde eşzamanlılık ve paralelliğin bir karışımına sahip

04:58.680 --> 05:04.710
olmak mükemmel bir fikirdir, bu bize Multithreading'den en iyi performansı verir.
