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



Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir