Chapter 5: Threads (İş Parçacıkları) Overview (Genel Bakış) Multithreading Models (Çoklu Thread Modelleri) Threading Issues (Thread Sorunları) Pthreads (Pthreadler) Solaris 2 Threads (Solaris 2 Threadleri) Windows 2000 Threads (Windows 2000 Threadleri) Linux Threads (Linux Threadleri) Java Threads (Java Threadleri) Operating System Concepts 5.1 Silberschatz, Galvin and Gagne 2002 Single and Multithreaded Processes (Tek ve Çoklu Thread Süreçleri) Operating System Concepts 5.2 Silberschatz, Galvin and Gagne 2002 Benefits (Faydaları) Responsiveness (Yanıt verme kabiliyeti) Resource Sharing (Kaynak Paylaşımı) Economy (Ekonomik) Utilization of MP Architectures (MP Mimarilerinin kullanımı) Operating System Concepts 5.3 Silberschatz, Galvin and Gagne 2002 User Threads(Kullanıcı Threadleri) Thread management done by user-level threads library (Thread yönetimi kullanıcı-seviye threadleri kütüphanesi tarafından yapılır.) Examples (Örnekler) - POSIX Pthreads (POSIX Pthreadleri) - Mach C-threads (Mach C-threadleri) - Solaris threads (Solaris threadleri) Operating System Concepts 5.4 Silberschatz, Galvin and Gagne 2002 Kernel Threads(Çekirdek Thredleri) Supported by the Kernel (Çekirdek tarafından desteklenir) Examples (Örnekler) - Windows 95/98/NT/2000 - Solaris - Tru64 UNIX - BeOS - Linux Operating System Concepts 5.5 Silberschatz, Galvin and Gagne 2002 Multithreading Models (Çoklu Thread Modelleri) Many-to-One (Çoka Bir) One-to-One (Bire Bir) Many-to-Many (Çoka Çok) Operating System Concepts 5.6 Silberschatz, Galvin and Gagne 2002 Many-to-One (Çoka Bir) Many user-level threads mapped to single kernel thread. (Çok sayıda kullanıcı-seviye threadleri tek çekirdek thread’i ile eşlenir.) Used on systems that do not support kernel threads. (Çekirdek threadlerini desteklemeyen sistemlerde kullanılır.) Operating System Concepts 5.7 Silberschatz, Galvin and Gagne 2002 Many-to-One Model (Çoka Bir Modeli) Operating System Concepts 5.8 Silberschatz, Galvin and Gagne 2002 One-to-One (Bire Bir) Each user-level thread maps to kernel thread. (Her kullanıcı-seviye thread’i çekirdek thread’i ile eşlenir.) Examples (Örnekler) - Windows 95/98/NT/2000 - OS/2 Operating System Concepts 5.9 Silberschatz, Galvin and Gagne 2002 One-to-one Model (Bire Bir Modeli) Operating System Concepts 5.10 Silberschatz, Galvin and Gagne 2002 Many-to-Many Model (Çoka Çok Modeli) Allows many user level threads to be mapped to many kernel threads. (Çok sayıda kullanıcı-seviye threadlerinin, çok sayıda çekirdek threadleri ile eşleşmesini sağlar.) Allows the operating system to create a sufficient number of kernel threads. (İşletim sisteminin yeterli sayıda çekirdek threadi oluşturmasını sağlar. ) Solaris 2 Windows NT/2000 with the ThreadFiber package (ThreadFiber paketi ile Windows NT/2000) Operating System Concepts 5.11 Silberschatz, Galvin and Gagne 2002 Many-to-Many Model (Çoka Çok Modeli) Operating System Concepts 5.12 Silberschatz, Galvin and Gagne 2002 Threading Issues (Threading Sorunları) Semantics of fork() and exec() system calls (fork() ve exec() sistem çağrılarının semantiği) Thread cancellation (Thread iptal etme) Signal handling (Sinyal işleme) Thread pools (Thread havuzları) Thread specific data (Thread özel verisi) Operating System Concepts 5.13 Silberschatz, Galvin and Gagne 2002 Pthreads a POSIX standard (IEEE 1003.1c) API for thread creation and synchronization. (Thread yaratma ve senkronizasyon için bir POSIX standartı(IEEE 1003.1c) vardır.) API specifies behavior of the thread library, implementation is up to development of the library. (API thread kütüphanesinin davranışını belirtir, uygulama kütüphanenin gelişmesine bağlıdır.) Common in UNIX operating systems. (Unix işletim sistemlerinde yaygın olarak kullanılır) Operating System Concepts 5.14 Silberschatz, Galvin and Gagne 2002 Solaris 2 Threads (Solaris 2 Threadleri) Operating System Concepts 5.15 Silberschatz, Galvin and Gagne 2002 Solaris Process (Solaris Süreci) Operating System Concepts 5.16 Silberschatz, Galvin and Gagne 2002 Windows 2000 Threads (Windows 2000 Threadleri) Implements the one-to-one mapping. (Bire Bir eşlemede uygulanır.) Each thread contains (her thread şu özellikleri içerir) - a thread id (thread id’si) - register set (belirlenen kayıt) - separate user and kernel stacks (ayrı kullanıcı ve çekirdek yığınları ) - private data storage area (özel veri depolama alanı) Operating System Concepts 5.17 Silberschatz, Galvin and Gagne 2002 Linux Threads (Linux Threadleri) Linux refers to them as tasks rather than threads. (Linux onları threadler yerine görevler olarak içerir) Thread creation is done through clone() system call. (Thread oluşturulması clone() sistem çağrısı tarafından yapılır) Clone() allows a child task to share the address space of the parent task (process) (Clone() çocuk görevin, ana görevin adres alanını paylaşmasını sağlar.) Operating System Concepts 5.18 Silberschatz, Galvin and Gagne 2002 Java Threads (Java Threadleri) Java threads may be created by: (Java threadleri aşağıdakiler tarafından oluşturulabilir:) Extending Thread class (Thread sınıfına uzanma) Implementing the Runnable interface (Çalıştırılabilir ara yüzleri yürütme) Java threads are managed by the JVM. (Java threadleri JVM tarafından yönetilir.) Operating System Concepts 5.19 Silberschatz, Galvin and Gagne 2002 Java Thread States (Java Thread Durumu) Operating System Concepts 5.20 Silberschatz, Galvin and Gagne 2002