İş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

Arayüz neden uzun iş boyunca donmasın?
Başlangıç örneği: kaynak dersin özgün görseli.

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. 1. Aynı sürecin içinde farklı yürütme hatları

    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şim
    Bugü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. 2. Arayüz neden uzun iş boyunca donmasın?

    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ıt
    Uzun 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. 3. Paylaşılan ile özel olanı ayır

    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ığın
    Ortak: 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. 4. Kullanıcı hatları çekirdeğe nasıl eşlenir?

    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ım
    Eş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. 5. Eşzamanlılık, paralellik ve görev bölme

    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ı anda
    Veri paralelliği ve görev paralelliği
    Bağımlılık ve yük dengesi sınır koyar.
    Sonraki hesap: ideal ve dengeli bölme

    Sesli 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. 6. Seri kalan iş, hızlanmayı sınırlar

    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 ms
    Bölünebilir iş: 20 × 0.8 = 16 ms
    Dört çekirdekte: 4 + 16 / 4 = 8 ms
    Hızlanma: 20 / 8 = 2.5 kat
    Sabit 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. 7. Çekirdek sayısını değiştir, aynı işi koru

    Ç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 ms
    8 çekirdek: 4 + 16 / 8 = 6 ms
    İdeal sınır: 20 / 4 = 5 kat
    Karşılaştırma: aynı iş ve aynı seri bölüm

    Sesli 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. 8. Hat oluşturmak ve ortak veriyi korumak

    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 hatlar
    Hat 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. 9. Dört çekirdekte dört kat hız neden yok?

    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üm

    Sesli 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. 10. Üç yanlış içgüdü

    Üç yanlış içgüdü
    Kaynak dersin bu bölümündeki son görünüm.
    Yazılım hattı ≠ yeni fiziksel çekirdek
    PC · yazmaç · yığın özeldir.
    Seri bölüm, ideal hız sınırı koyar.
    Böl · koru · seri kısmı unutma

    Sesli 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. 11. Paylaşımın kazancı ve sınırı

    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 Robin

    Sesli 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)