İşletim Sistemi - Multi-Threading
Thread nedir?
Bir iş parçacığı, bir sonraki hangi komutun yürütüleceğini takip eden kendi program sayacı, mevcut çalışma değişkenlerini tutan sistem kayıtları ve yürütme geçmişini içeren bir yığın ile işlem kodu boyunca bir yürütme akışıdır.
Bir iş parçacığı, eş iş parçacıklarıyla kod bölümü, veri bölümü ve açık dosyalar gibi birkaç bilgiyi paylaşır. Bir iş parçacığı bir kod bölümü bellek öğesini değiştirdiğinde, diğer tüm iş parçacıkları bunu görür.
Bir iş parçacığı aynı zamanda a lightweight process. İş parçacıkları, paralellik yoluyla uygulama performansını iyileştirmenin bir yolunu sağlar. İş parçacıkları, klasik bir sürece eşdeğer olan genel gider iş parçacığını azaltarak işletim sisteminin performansını artırmaya yönelik bir yazılım yaklaşımını temsil eder.
Her iş parçacığı tam olarak bir işleme aittir ve bir sürecin dışında hiçbir iş parçacığı olamaz. Her iş parçacığı, ayrı bir kontrol akışını temsil eder. İş parçacıkları, ağ sunucularının ve web sunucusunun uygulanmasında başarıyla kullanılmıştır. Ayrıca, paylaşılan bellek çok işlemcilerindeki uygulamaların paralel yürütülmesi için uygun bir temel sağlarlar. Aşağıdaki şekil, tek iş parçacıklı ve çok iş parçacıklı bir işlemin çalışmasını göstermektedir.
Süreç ve İş Parçacığı Arasındaki Fark
SN | İşlem | Konu |
---|---|---|
1 | Süreç ağırdır veya kaynak yoğundur. | İplik hafiftir ve bir işlemden daha az kaynak alır. |
2 | İşlem değiştirme, işletim sistemiyle etkileşim gerektirir. | İş parçacığı değiştirmenin işletim sistemiyle etkileşime girmesine gerek yoktur. |
3 | Birden çok işlem ortamında, her işlem aynı kodu yürütür ancak kendi belleğine ve dosya kaynaklarına sahiptir. | Tüm iş parçacıkları aynı açık dosya kümesini, alt işlemleri paylaşabilir. |
4 | Bir işlem engellenirse, ilk işlem engeli kaldırılana kadar başka hiçbir işlem yürütülemez. | Bir iş parçacığı engellenip beklerken, aynı görevdeki ikinci bir iş parçacığı çalıştırılabilir. |
5 | İş parçacığı kullanmadan birden çok işlem daha fazla kaynak kullanır. | Çoklu iş parçacıklı süreçler daha az kaynak kullanır. |
6 | Çoklu süreçlerde her süreç diğerlerinden bağımsız olarak çalışır. | Bir iş parçacığı başka bir iş parçacığının verilerini okuyabilir, yazabilir veya değiştirebilir. |
İpliğin Avantajları
- İleti dizileri, bağlam değiştirme süresini en aza indirir.
- İş parçacığı kullanımı, bir süreç içinde eşzamanlılık sağlar.
- Etkili iletişim.
- Konu değiştirmek ve bağlam değiştirmek daha ekonomiktir.
- İş parçacıkları, çok işlemcili mimarilerin daha büyük ölçekte ve verimlilikte kullanılmasına izin verir.
İplik Türleri
Dişler aşağıdaki iki şekilde uygulanır -
User Level Threads - Kullanıcı tarafından yönetilen konular.
Kernel Level Threads - İşletim Sistemi tarafından yönetilen bir işletim sistemi çekirdeği olan çekirdek üzerinde hareket eden iş parçacıkları.
Kullanıcı Seviyesi Konuları
Bu durumda, iş parçacığı yönetimi çekirdeği evrelerin varlığından haberdar değildir. İş parçacığı kitaplığı, evreler arasında ileti ve verileri iletmek, iş parçacığı yürütmeyi programlamak ve iş parçacığı bağlamlarını kaydetmek ve geri yüklemek için evrelerin oluşturulması ve yok edilmesi için kod içerir. Uygulama tek bir iş parçacığı ile başlar.
Avantajlar
- İş parçacığı değiştirme, Kernel modu ayrıcalıkları gerektirmez.
- Kullanıcı seviyesi iş parçacığı herhangi bir işletim sisteminde çalışabilir.
- Çizelgeleme, kullanıcı seviyesi iş parçacığında uygulamaya özel olabilir.
- Kullanıcı seviyesi konuları oluşturmak ve yönetmek için hızlıdır.
Dezavantajları
- Tipik bir işletim sisteminde, çoğu sistem çağrısı engelliyor.
- Çok iş parçacıklı uygulama, çoklu işlemden yararlanamaz.
Çekirdek Seviyesi Konuları
Bu durumda, iş parçacığı yönetimi Kernel tarafından yapılır. Uygulama alanında iş parçacığı yönetim kodu yoktur. Çekirdek iş parçacıkları doğrudan işletim sistemi tarafından desteklenir. Herhangi bir uygulama, çok iş parçacıklı olacak şekilde programlanabilir. Bir uygulama içindeki tüm iş parçacıkları tek bir işlem içinde desteklenir.
Çekirdek, bir bütün olarak sürecin bağlam bilgisini ve süreç içindeki bireyler için konuları saklar. Kernel tarafından çizelgeleme iş parçacığı temelinde yapılır. Kernel, Kernel alanında iş parçacığı oluşturma, planlama ve yönetim gerçekleştirir. Çekirdek iş parçacıklarının oluşturulması ve yönetilmesi genellikle kullanıcı iş parçacıklarından daha yavaştır.
Avantajlar
- Çekirdek aynı anda birden çok işlemde aynı işlemden birden çok iş parçacığı planlayabilir.
- Bir süreçteki bir iş parçacığı engellenirse, Çekirdek aynı işlemin başka bir iş parçacığını zamanlayabilir.
- Çekirdek rutinleri çok iş parçacıklı olabilir.
Dezavantajları
- Çekirdek iş parçacıklarının oluşturulması ve yönetilmesi genellikle kullanıcı iş parçacıklarından daha yavaştır.
- Aynı süreç içinde bir iş parçacığından diğerine kontrol aktarımı, Çekirdeğe bir mod anahtarı gerektirir.
Çok iş parçacıklı modeller
Bazı işletim sistemleri, birleşik bir kullanıcı düzeyi iş parçacığı ve Çekirdek düzeyi iş parçacığı olanağı sağlar. Solaris, bu birleşik yaklaşımın güzel bir örneğidir. Birleştirilmiş bir sistemde, aynı uygulama içindeki birden çok iş parçacığı, birden çok işlemcide paralel olarak çalışabilir ve engelleyici bir sistem çağrısının tüm süreci engellemesi gerekmez. Çok iş parçacıklı modeller üç türdür
- Çoktan çoğa ilişki.
- Çoktan bire ilişki.
- Bire bir ilişki.
Çoktan Çoka Model
Çoktan çoğa modeli, herhangi bir sayıda kullanıcı iş parçacığını eşit veya daha az sayıda çekirdek iş parçacığı üzerinde çoğullar.
Aşağıdaki diyagram, 6 kullanıcı seviyesi iş parçacığının 6 çekirdek düzeyi iş parçacığı ile çoğulladığı çoktan çoğa iş parçacığı modelini göstermektedir. Bu modelde, geliştiriciler gerektiği kadar çok sayıda kullanıcı iş parçacığı oluşturabilir ve ilgili Çekirdek iş parçacıkları çok işlemcili bir makinede paralel olarak çalışabilir. Bu model, eşzamanlılıkta en iyi doğruluğu sağlar ve bir iş parçacığı bir engelleme sistem çağrısı gerçekleştirdiğinde, çekirdek yürütme için başka bir iş parçacığı zamanlayabilir.
Çoktan Bire Model
Çoktan bire model, birçok kullanıcı düzeyindeki iş parçacığını tek bir Çekirdek düzeyi iş parçacığına eşler. İş parçacığı yönetimi, iş parçacığı kitaplığı tarafından kullanıcı alanında yapılır. İş parçacığı, engelleyen bir sistem çağrısı yaptığında, tüm süreç engellenecektir. Aynı anda yalnızca bir iş parçacığı Çekirdeğe erişebilir, bu nedenle birden çok iş parçacığı, birden çok işlemcide paralel olarak çalışamaz.
Kullanıcı düzeyindeki iş parçacığı kitaplıkları, işletim sisteminde sistem bunları desteklemeyecek şekilde uygulanırsa, Çekirdek iş parçacıkları çoktan bire ilişki modlarını kullanır.
Bire Bir Model
Kullanıcı düzeyinde iş parçacığı ile çekirdek düzeyindeki iş parçacığı arasında bire bir ilişki vardır. Bu model, çoka bir modelden daha fazla eşzamanlılık sağlar. Ayrıca, bir iş parçacığı engelleyici bir sistem çağrısı yaptığında başka bir iş parçacığının çalışmasına izin verir. Mikroişlemcilerde paralel olarak yürütmek için birden çok iş parçacığını destekler.
Bu modelin dezavantajı, kullanıcı iş parçacığı oluşturmanın ilgili Kernel iş parçacığını gerektirmesidir. OS / 2, Windows NT ve Windows 2000 bire bir ilişki modeli kullanır.
Kullanıcı Seviyesi ve Kernel Seviyesi İş Parçacığı arasındaki fark
SN | Kullanıcı Düzeyinde Konular | Çekirdek Düzeyinde İş Parçacığı |
---|---|---|
1 | Kullanıcı düzeyinde ileti dizileri oluşturmak ve yönetmek daha hızlıdır. | Çekirdek düzeyinde iş parçacıkları oluşturmak ve yönetmek daha yavaştır. |
2 | Uygulama, kullanıcı seviyesindeki bir iş parçacığı kitaplığı ile yapılır. | İşletim sistemi, Çekirdek iş parçacığı oluşturmayı destekler. |
3 | Kullanıcı düzeyinde iş parçacığı geneldir ve herhangi bir işletim sisteminde çalışabilir. | Çekirdek düzeyinde iş parçacığı, işletim sistemine özgüdür. |
4 | Çok iş parçacıklı uygulamalar, çoklu işlemden yararlanamaz. | Çekirdek rutinleri çok iş parçacıklı olabilir. |