İşletim Sistemlerinde Thread Kavramı -4
İşletim Sistemleri Threads ( İş Parçacıkları)
-Sunucunun kendisi zaten process olarak çalışır.Bu işin üzerinde birden fazla işin yapılması gerekmektedir.
-Örnek olarak ; Web sunucusu aynı anda hepsine cevap vermek zorundandır.
-Web sunucunun altında birden fazla işlemci hizmet veriyor. Thread olayına örnektir.
-Process için bir kol olarak düşünülebilir . Thread ise parmaklar olarak tanımlanabilir. Yani bir Process’in altında birden fazla Thread bulunabilir.
-Her bağlanan kişi için process adı altında yeni bir Thread oluşturulur.
-Aynı anda birden fazla işlem oluşturulmuş olur
— Örnek vermek gerekirse; bir web sitesinde animasyonlar bulunuyor. Bu animasyonlar ayrı ayrı Threadlerden oluşur.
-Processler kendine özgü adreslerde çalışırlar. Threadler ise Processin adres space’sini paylaşırlar.
— Bir Thread değiştiğinde diğer Thread’in de değişkeni değişir. Ama Process değişmez.
Amdahl’s Law
-Bir işin ne kadarının paralel yapılabileceğini ölçmektedir.
-100 satır kod yazıldı; 50 satırını ortak çalıştıracak. Diğer 50 satırını pararlelleştirilecek.
Threadslerin Faydaları
-Cevap verilebilirlik ( Responsiveness)
-Kaynak Paylaşımı ( Resource Sharing )
-Ekonomi ( Economy)
-Ölçeklendirilebilirlik ( Scability )
Çok Çekirdekli Programlama
-Çok çekirdekli sistemler ; programcıları çok iş parçacıklı uygulamalar yazmaya zorlayan yapılardır. Bu zorluklar şu şekilde sıralanabilir;
* Aktiviteleri bölmek,
* Denge
*Bilgiler Ayırmak,
* Veri Bağımlılığı
* Test ve Hata ayıklama
Client => Server => Thread
Tek Çekirdekli Sistemde Eş Zamanlı Çalışma
-Eş zamanlı çalışma var. Paralelleşme yok o nedenle; daha yavaş çalışmaktadır
Çok Çekirdekli Sistemde Paralel Çalışma
-Iş daha hızlı çalışmaktadır.
-Tek çekirdekli 4 saniyede bir çalışıyor ise; çok çekirdekli 2 saniyede bir çalışır.
User Threads (Kullanıcı İş Parçacıkları )
-Kullanıcılar tarafından üretilen threadlerdir.
İş Parçacığı yönetimi kullanıcı seviyesinde tanımlı iş parçacığı kütüphaneleri ile sağlanır.
Üç ana iş parçacığı kütüphanesi vardır;
-POSIX Phtreads
-Win32
-Java
Kernel Threads ( Çekirdek İş parçacıkları)
-Çekirdek tarafından desteklenirler.
-İşletim sisteminin kendi ürettiği sistemlerdir.
Örnekleri : Windows XP/2000,Solaris,Linux, Mac OS X
Çoklu İş Parçacığı Modelleri
Çekirdek iplikleri ile kullanıcı iplikleri arasında nasıl bir ilişki olduğuna bakılır
-Bir kullanıcı ipliğini çekirdekte kaç ipliği karşılıyor ?
Birebirde her kullanıcı ipliği için bir çekirdek ipliği var
Diğerlerinde çekirdek ve kullanıcı iplikleri aynı ortamı paylaşıyor.
-Çoktan Teke (Many to One)
-Teke Tek (One To one)
-Çoktan Çoka ( Many to many)
Many to one model ( Çoktan –Bire Modeli)
-Çok sayıda kullanıcı thread’i bir kernel thread’i ile eşleştirilir.
-Thread yönetimi kullanıcı alanında yapılır.
-Aynı anda sadece bir kullanıcı thread’I kernel thread’e erişebilir
-Aynı anda kernel katmanında sadece bir thread bulunabildiği için işlemci üzerinde sadece bir thread çalışabilir
-Eş zamanlı çalışma yapılamaz.
-Solaris
One To One Model ( Birebir Modeli)
-One to one modelinde bir kullanıcı thread’i, bir kernel thread’i ile eşleştirilir.
-Bu nedenle işlemci üzerinde birden fazla thread eş zamanlı olarak koşturulabilir.
-Her user thread için bir kernel thread oluşturulması gerekir.
-Many to one modeline göre daha fazla eş zamanlılık taşır.
-Çünkü daha kısa aralıklarla geçiş gerçekleşir.
-Windows,Linux
Many to Many
-Many to many modelinde çok sayıda kullanıcı thread’I ile aynı sayıdaki veya daha az sayıdaki kernel thread’I eşleştirilir.
-Uyulama gerektiğince user thread’I oluşturabilir
-Kernel threadler multicore sistemler üzerinde paralel çalışır.
-Solaris’in versiyon 9’a kadar olanları
Kaynakça
Operating System Concepts with Java — 8th Edition
Şadi Evren Şeker -Youtube İşletim Sistemleri Playlist
Ders : İşletim Sistemleri( Doç. Dr. Ali Gökhan Yavuz )
Yıldız Teknik Ünviersitesi Bilgisayar Mühendisliği Bilgi Teknolojileri Programı