Arkadaşlar, bir önceki ders videosunda iş parçacığı eşzamanlı olarak çalıştığında, kendi
işlerini tamamlamak için maksimum süreyi alma eğiliminde olduklarını gördük.
Asıl soru şu ki, neden hala eşzamanlılığımız var?
Eşzamanlılık performans açısından bu kadar zayıfken, modern bilgisayar sistemleri neden hala eşzamanlılığa
devam ediyor?
Bu noktayı anlamak için bir senaryo ele alalım.
Herhangi bir zamanda sisteminizde 100 iş parçacığının çalıştığını varsayalım, değil mi?
Bu 100 iş parçacığı sizin kullanıcı iş parçacıklarınız ve bazı sistem iş parçacıkları olabilir.
Kullanıcı iş parçacıkları kullanıcı alanında çalışan herhangi bir uygulama iken, sistem iş parçacıkları işletim sisteminin
bir parçası olarak çalışan herhangi bir hizmettir.
Örneğin, işletim sistemi zamanlayıcınız, bellek yöneticiniz ve çeşitli aygıt sürücüleriniz vb.
Doğru.
Ama her neyse, günün sonunda bunlar iş parçacıklarıdır ve diyelim ki sistemde çalışan 100 iş parçacığı
var.
Şimdi, sistemden en iyi performansı almak için, bu 100 iş parçacığının hepsini paralel olarak çalıştırmanız
gerekir, değil mi?
Ve tüm bu 100 iş parçacığını paralel olarak yürütmek için 100 CPU'ya ihtiyacınız olacaktır.
Değil mi?
Bu da mümkün olmayan bir şey, değil mi?
Teknik olarak uygulanabilir, ancak ekonomik olarak uygulanabilir değil.
CPU pahalı bir donanım parçasıdır.
Doğru.
Dizüstü bilgisayarınız veya bilgisayarınız olan tipik bir bilgisayar sistemi, bugünlerde tipik olarak sekiz CPU ila 16 CPU'ya
sahiptir.
Doğru.
Sistemin 16'dan fazla CPU'ya sahip olduğunu nadiren gördüm.
Aslında, genel amaçlı bilgisayar sistemleri 16'dan fazla CPU'ya sahip değildir.
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ı
paylaşmaları gerektiği anlamına gelir.
Doğru.
Diyelim ki bir bilgisayar sisteminde 16 CPU var.
Bu, 100 iş parçacığının tamamının herhangi bir zamanda bu 16 CPU'yu paylaşması gerektiği anlamına gelir.
Bu 100 iş parçacığından 16'sı bu 16 CPU üzerinde paralel çalışıyor, değil mi?
Yani 16 CPU'da kullanılabilir bir paralellik var, değil mi?
Ancak kalan 84 iş parçacığı aslında boşta durmuyor.
Bu 84 iş parçacığı da tahsis edilmiştir.
Bu 16 CPU arasından CPU'lardan biri eşzamanlı bir şekilde.
Değil mi?
Yani basitçe, tipik bir bilgisayar sisteminde paralellik ve eşzamanlılığın bir arada var olduğu anlamına gelir.
Bu diyagramda görebileceğiniz gibi, sistemde 30 iş parçacığı olduğunu varsayalım ve bu 30 iş parçacığını
her biri on iş parçacığından oluşan bir kovaya bölelim.
Yani g1, G2 ve G3 olmak üzere üç kova vardır.
Doğru.
Aynı kovadaki tüm iş parçacıkları aynı CPU'yu paylaşır ve belirli bir CPU üzerinde çalışırlar
ve CPU'larında eşzamanlı bir şekilde çalışırlar.
Değil mi?
Yani tüm bu on iş parçacığı doğası gereği eşzamanlıdır çünkü CPU olan aynı donanım kaynağı üzerinde
çalışmak zorundadırlar.
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ı
için de geçerlidir.
G3 Sağ.
Aynı gruba ait iş parçacıkları eşzamanlı olarak çalışırken, farklı gruplara ait iş parçacıkları paralel
olarak çalışır.
Dolayısıyla, G1 grubuna ait bir T1 iş parçacığı varsa, CPU bir üzerinde yürütülür.
Değil mi?
Ve eğer G2 grubuna ait T11 gibi bir iş parçacığı varsa, bu iş parçacığı CPU iki üzerinde çalışacaktır.
Doğru.
Böylece t1 ve t11 iş parçacığı paralel olarak çalışır.
Ancak T1 tehdidi CPU'yu T2 ve T3 tehditleriyle paylaşmak zorundadır ve bu nedenle T1, T2 ve T3 iş parçacıkları
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.
Yani bilgisayar sistemimiz eşzamanlılık ve paralelliğin bir karışımıdır.
Sadece paralellik uygulasaydık ve eşzamanlılık olmasaydı çok kötü bir fikir olurdu.
Eğer sadece paralellik söz konusu olsaydı, bu 30 iş parçacığından üç iş parçacığı
üç farklı CPU'da çalışırken diğer 27 iş parçacığı boşta kalırdı.
Doğru.
İş parçacığı CPU üzerindeki işini tamamlayana ve CPU'yu serbest bırakana kadar beklemeleri gerekecektir.
Doğru.
Yani tek başına paralelliğe sahip olmak kötü bir fikirdir.
Eşzamanlılığın tek başına olması da kötü bir fikirdir.
Bugün modern bilgisayarlarda tipik bir bilgisayar sisteminde eşzamanlılık ve paralelliğin bir karışımına sahip
olmak mükemmel bir fikirdir, bu bize Multithreading'den en iyi performansı verir.