İşletim Sistemleri · İşletim Sistemleri
#05 İş parçacıkları, eşzamanlılık ve hız sınırı
Yürütme hattını ayır · paylaşımı tanı · hız sınırını hesapla
Soru

Bir çizim uygulamasında dosya dışa aktarılırken kullanıcı ekrandaki çizgiyi sürüklemek istiyor. Modelimizde bir yürütme hattı arayüzü, biri dışa aktarımı, biri kayıt işini yönetsin. Bütün işleri tek bir hatta uzun süre durmadan yaparsak arayüz isteği sıra bekleyebilir. İşleri uygun yürütme hatlarına ayırmak, uzun bir iş sürerken arayüzün cevap vermesine yardım edebilir. Bir atölyedeki ustalar gibi düşünün. Aynı çalışma alanını kullanırlar ama her ustanın elindeki iş ve kaldığı adım ayrıdır. Daha çok usta, tek olan ölçüm aletini çoğaltmaz. İlk içgüdü daha çok iş parçacığının otomatik olarak daha çok hız olduğu yönünde olabilir. Bugün bu tahmini seri kalan iş üzerinden sınayacağız.
Yazılı çözüm ve anlatım dökümü(çözümün tamamını gösterir)
Aşağıda defterde yazılan bütün satırlar ve bunlara eşlik eden sesli anlatımın tam metni bulunur.
1. Aynı sürecin içinde farklı yürütme hatları

Kaynak dersin bu bölümündeki son görünüm. Geçen ders: süreçler arası iletişimBugün: paylaşım, paralellik ve hız sınırıSesli anlatım metni
Geçen derste ayrı süreçlerin bellek ya da mesajlarla iletişim kurduğunu gördük. Bugün aynı sürecin içindeki yürütme hatlarına, iş parçacıklarına bakıyoruz. Daha fazla iş parçacığı, her zaman aynı oranda daha fazla hız mı verir? Paylaşılan kaynakları ve seri kalan işi hesaba katmadan bu soruyu yanıtlayamayız.
2. Arayüz neden uzun iş boyunca donmasın?

Kaynak dersin bu bölümündeki son görünüm. Arayüz · dışa aktarım · kayıtUzun işi ayırmak yanıt verebilirliği artırabilir.Ortak atölye, ayrı iş ve kaldığın yer“Daha çok hat = aynı oranda hız” varsayımıSesli anlatım metni
Bir çizim uygulamasında dosya dışa aktarılırken kullanıcı ekrandaki çizgiyi sürüklemek istiyor. Modelimizde bir yürütme hattı arayüzü, biri dışa aktarımı, biri kayıt işini yönetsin. Bütün işleri tek bir hatta uzun süre durmadan yaparsak arayüz isteği sıra bekleyebilir. İşleri uygun yürütme hatlarına ayırmak, uzun bir iş sürerken arayüzün cevap vermesine yardım edebilir. Bir atölyedeki ustalar gibi düşünün. Aynı çalışma alanını kullanırlar ama her ustanın elindeki iş ve kaldığı adım ayrıdır. Daha çok usta, tek olan ölçüm aletini çoğaltmaz. İlk içgüdü daha çok iş parçacığının otomatik olarak daha çok hız olduğu yönünde olabilir. Bugün bu tahmini seri kalan iş üzerinden sınayacağız.
3. Paylaşılan ile özel olanı ayır

Kaynak dersin bu bölümündeki son görünüm. Özel: program sayacı · yazmaçlar · yığınOrtak: kod · veri · süreç kaynaklarıPaylaşım kolaylığı, yalıtımın yerine geçmez.Hangi durum özel? Hangi kaynak ortak?Sesli anlatım metni
İş parçacığı bir yürütme birimidir. Kendi program sayacı, yazmaç durumu ve yığını vardır. Yani hangi komutta olduğu ve fonksiyon çağrısının geçici bilgisi o yürütme hattına aittir. Aynı sürecin iş parçacıkları kodu, ortak veriyi ve açık dosyalar gibi bazı kaynakları paylaşır. Bu paylaşım iletişimi kolaylaştırabilir; fakat aynı veriyi güncellerken düzen kurulmalıdır. Süreçler çoğu zaman daha güçlü bir adres alanı ayrımı sağlar. İş parçacıkları ise aynı adres alanında iş birliğini kolaylaştırır. Birindeki hatalı bellek erişiminin sürecin öteki işlerini etkilemesi mümkündür. Bu yüzden iş parçacığı küçük bir süreç demekle bütün farkları açıklamayız. Sorduğumuz temel soru şu: yürütme durumu hangi hatta özel, hangi kaynaklar gerçekten ortak?
4. Kullanıcı hatları çekirdeğe nasıl eşlenir?

Kaynak dersin bu bölümündeki son görünüm. Kullanıcı hatları ve çekirdek hatlarıÇoktan bire: tek çekirdek yürütme hattıBire bir: ayrı çekirdek hatlarıÇoktan çoğa: hat kümesine dağıtımEşleme modeli ≠ fiziksel çekirdek sayısıSesli anlatım metni
Kullanıcı düzeyindeki iş parçacıklarını bir çalışma zamanı veya kütüphane yönetebilir. İşletim sistemi çekirdeğinin zamanladığı yürütme hatlarıyla bunların eşlenmesini ayrıca düşünürüz. Çoktan bire modelde birçok kullanıcı hattı tek çekirdek hattına bağlanır. Bu tek hat üzerinden gerçek çok çekirdekli paralellik sağlayamazsınız. Bloklayan bir çağrı bütün bu eşlemeyi de bekletebilir. Bire bir modelde her kullanıcı hattının karşılığında çekirdeğin zamanladığı bir hat vardır. Uygun donanım ve hazır işler varsa paralel yürütme mümkün olur. Çok sayıda hat oluşturmanın kaynak maliyeti yine vardır. Çoktan çoğa model, birçok kullanıcı hattını bir çekirdek hatları kümesine dağıtır. Eşleme ile fiziksel çekirdek sayısı aynı kavram değildir. Daha çok yazılım hattı, daha çok fiziksel işlemci çekirdeği yaratmaz. Şemalar tasarım modelleridir. Bu derste bir işletim sisteminin güncel sürümüne özel eşleme iddiası yapmıyoruz. İşlemcideki donanım iş parçacığı ayrıntısını da bu basit hesapta kullanmıyoruz. Bu ayrımı sonraki hesap boyunca koruyun.
5. Eşzamanlılık, paralellik ve görev bölme

Kaynak dersin bu bölümündeki son görünüm. Eşzamanlı: sırayla ilerleme · paralel: aynı andaVeri paralelliği ve görev paralelliğiBağımlılık ve yük dengesi sınır koyar.Sonraki hesap: ideal ve dengeli bölmeSesli anlatım metni
Tek yürütme çekirdeğinde hazır iş parçacıkları sırayla ilerleyebilir. Aynı dönemde ilerleme eşzamanlılıktır. Tam aynı anda yürütme ise burada farklı çekirdeklere dağıtılmış bağımsız işlerle mümkündür. Veri paralelliğinde aynı işlem farklı veri parçalarına uygulanır. Örneğin bağımsız çizim parçalarını aynı dönüşümden geçirebilirsiniz. Görev paralelliğinde farklı görevler ayrılır; biri görüntüyü işlerken diğeri dışa aktarım verisini hazırlayabilir. İşleri bölerken bağımlılığı kontrol edin. İkinci adım ilk adımın sonucunu istiyorsa, onları yalnız farklı hatlara koymak bağımlılığı ortadan kaldırmaz. Dengesiz iş miktarı da bir çekirdeği bekletebilir. Bizim sonraki hesapta işler eşit bölünebilir ve çekişme yok varsayılacak. Gerçek programda veri aktarımı, kilitler ve önbellek davranışı bu ideal sonucu değiştirebilir.
6. Seri kalan iş, hızlanmayı sınırlar

Kaynak dersin bu bölümündeki son görünüm. Seri bölüm: 20 × 0.2 = 4 msBölünebilir iş: 20 × 0.8 = 16 msDört çekirdekte: 4 + 16 / 4 = 8 msHızlanma: 20 / 8 = 2.5 katSabit işte seri bölüm hız sınırı koyar.Sesli anlatım metni
Özgün hesabımızda tek çekirdekte toplam yirmi milisaniye süren bir iş var. İşin yüzde yirmisi seri kalıyor. Yirmi çarpı sıfır nokta iki, dört milisaniye seri bölüm eder. Geriye kalan yüzde seksen ideal biçimde bölünebilir olsun. Yirmi çarpı sıfır nokta sekiz, on altı milisaniye paralel iş yükü verir. Dört çekirdeğe eşit bölersek, paralel kısmın süresi on altı bölü dört, dört milisaniyedir. Seri bölüm yine dört sürer. Dört artı dört, sekiz milisaniyelik toplam süre elde ederiz. Hızlanma, eski süre bölü yeni süredir. Yirmi bölü sekiz, iki nokta beş kat. Dört çekirdek kullandık ama dört kat hızlanmadık; seri bölüm aynı kaldı. Bu, Amdahl düşüncesidir: sabit büyüklükteki işin seri bölümü, ideal hızın sınırını belirler. Ek iletişim ve yönetim maliyetlerini sıfır saydık; gerçek sonuç bu ideal hesabın altında da kalabilir.
7. Çekirdek sayısını değiştir, aynı işi koru

Kaynak dersin bu bölümündeki son görünüm. 2 çekirdek: 4 + 16 / 2 = 12 ms8 çekirdek: 4 + 16 / 8 = 6 msİdeal sınır: 20 / 4 = 5 katKarşılaştırma: aynı iş ve aynı seri bölümSesli anlatım metni
Aynı seri bölüm ve aynı toplam iş kalsın. İki çekirdekte paralel kısmın süresi on altı bölü iki, sekiz milisaniye. Dörde eklersek toplam on iki milisaniye olur. Dört çekirdek için bulduğumuz toplam sekiz milisaniyeydi. Sekiz çekirdekte paralel süre on altı bölü sekiz, iki milisaniye; dört artı iki, altı milisaniyelik toplam. Çekirdek sayısını çok büyütsek de dört milisaniyelik seri iş kaybolmaz. İdeal hızlanma üst sınırı yirmi bölü dört, beş kattır. Sonsuz çekirdek diye gerçek bir donanım önermiyoruz; matematiksel sınırı okuyoruz. Makullük kontrolü: daha çok çekirdek bu ideal modelde süreyi artırmaz, ama kazanç giderek küçülür. Aynı işi ve aynı seri bölümü tutmadan satırları karşılaştıramayız.
8. Hat oluşturmak ve ortak veriyi korumak

Kaynak dersin bu bölümündeki son görünüm. İş parçacığı havuzu: görev kuyruğu + çalışan hatlarHat sayısı, işin davranışına bağlıdır.Ayrı yığınlar, ortak veri yarışını önlemez.Başlama kadar tamamlanma da protokoldür.Sesli anlatım metni
Her yeni istekte sınırsız sayıda iş parçacığı açmak yerine, bir iş parçacığı havuzu kullanılabilir. Hazır çalışan hatlar görev kuyruğundan iş alır. Bu, kaynak kullanımını sınırlamaya ve oluşturma maliyetini yönetmeye yardım eder. Havuzdaki hat sayısı, yararlı paralellik ihtiyacına göre seçilir. Bekleyen girdi çıktı işi ile işlemciyi sürekli kullanan iş aynı ihtiyacı doğurmaz. Burada bütün programlar için tek bir doğru sayı vermiyoruz. Ortak sayaç ya da kayıt listesi varsa hatların erişimi düzenlenmelidir. Ayrı yığın kullanmaları ortak veri yarışını engellemez. Sonraki senkronizasyon derslerinde bu sorunu somut olarak çözeceğiz. Bir hat tamamlanırken öteki onu bekliyorsa tamamlanma protokolü de açık olmalıdır. Beklemek, iptal etmek ve sonuç toplamak yalnız hat sayısını artırmakla çözülmez.
9. Dört çekirdekte dört kat hız neden yok?

Kaynak dersin bu bölümündeki son görünüm. Soru: çekirdek sayısı niye hızlanmaya eşit değil?Yanıt: seri bölüm bölünmedi.Özel yığın · ortak süreç kaynaklarıFırsat: paralellik · gereklilik: eşgüdümSesli anlatım metni
Kontrol sorumuz şu: dört çekirdeğe böldüğümüz örnekte niye dört kat hız çıkmadı? Bir an seri ve paralel bölümlere bakın. Çünkü seri bölüm bölünmedi. Paralel kısmı kısalttık ama seri kısmı aynı süre yürüttük. Bu nedenle toplam sürede hâlâ bir taban var. Bir diğer kontrol: aynı sürecin iş parçacıkları aynı yığını mı kullanır? Hayır; her hattın kendi çağrı yığını vardır. Ortak olan kod ve veri gibi süreç kaynaklarıdır. Bu iki ayrımı yapabiliyorsanız daha çok hat oluşturmanın niye hem fırsat hem yönetim ihtiyacı getirdiğini okuyabilirsiniz.
10. Üç yanlış içgüdü

Kaynak dersin bu bölümündeki son görünüm. Yazılım hattı ≠ yeni fiziksel çekirdekPC · yazmaç · yığın özeldir.Seri bölüm, ideal hız sınırı koyar.Böl · koru · seri kısmı unutmaSesli anlatım metni
Birinci hata: daha çok iş parçacığı fiziksel çekirdek yaratır. Hayır; yazılımın yürütme hatları donanım kapasitesini çoğaltmaz. İkinci hata: aynı sürecin hatları bütün yürütme durumunu paylaşır. Hayır; program sayacı, yazmaç durumu ve yığın her hatta özeldir. Üçüncü hata: paralel bölüm varsa hızlanma sınırsızdır. Hayır; özgün hesabımızdaki seri bölüm, sabit iş için sonlu bir ideal sınır koydu. Akılda kalan kural: hatları böl, ortak veriyi koru, seri kısmı hesapta tut.
11. Paylaşımın kazancı ve sınırı

Kaynak dersin bu bölümündeki son görünüm. Ayrı yürütme durumu, ortak süreç kaynaklarıPaylaşım · eşleme · seri iş sınırıSonraki ders: FCFS, SJF ve Round RobinSesli anlatım metni
Bilgisayar modeline dönelim. İş parçacıkları bir sürecin içinde ayrı yürütme durumları taşırken ortak kaynaklara erişir. Çekirdek onları uygun yürütme kaynaklarına zamanlar. Eşzamanlılık ile paralelliği, kullanıcı hatlarıyla çekirdek hatlarının eşlenmesini ve seri işin hız sınırını ayırdık. Daha çok hat, iyi bölünmüş işe yardım eder; her işi otomatik hızlandırmaz. Bir sonraki derste hazır işler arasında işlemci sırasını nasıl seçtiğimizi inceleyeceğiz. Önce gelen, kısa iş ve zaman dilimli dönüş: hepsini aynı özgün örneğin zaman çizelgesinde karşılaştıracağız. Görüşmek üzere.
Kaynak video: İş parçacıkları, eşzamanlılık ve hız sınırı (8:10)