Bölüm 4: Threads (İş Parçaları)

Benzer belgeler
Bölüm 4: İş Parçacıkları. Operating System Concepts with Java 8 th Edition

Bölüm 4: İş Parçacıkları. Operating System Concepts with Java 8 th Edition

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

YZM 3102 İşletim Sistemleri

İşletim Sistemleri (Operating Systems)

PROCESS YARATIMI (TEKRAR):

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

ÇOK ÇEKİRDEKLİ İŞLEMCİLER VE PARALEL YAZILIM GELİŞTİRME OLANAKLARI HAKKINDA BİR İNCELEME

İşletim Sistemlerine Giriş

Küme Bilgisayarlarda PBS Kuyruk Sistemi

YRD. DOÇ. DR. AGÂH TUĞRUL KORUCU Kernel çeşitleri

Bilgisayar İşletim Sistemleri BLG 312

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

REALTIME LINUX. 3. Linux ve Özgür Yazılım Şenliği Murat Demirten, 16 Mayıs 2004, Ankara

BİLGİ İŞLEM DERS 1. Yrd Doç Dr. Ferhat ÖZOK MSGSU FİZİK BÖLÜMÜ MSGSU FİZİK BÖLÜMÜ

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar) Öğr.Gör. Dr. Dr. Şirin KARADENİZ

Yazılım Mühendisliğine Giriş 2018 GÜZ

Bölüm 13: Giriş-Çıkış (I/O) Sistemleri

BİT in Temel Bileşenleri (Yazılım-1)

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

Multicore/Multithread Programlama

Bölüm 5: İşlemci Zamanlaması. Operating System Concepts with Java 8 th Edition

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

Problem - Unix / Windows PROCESS-Süreçleri "ağır" dır. Hafta 07: Threads (İş Parçacıkları) Örnek - 1. Proses=Bir iş parçacığı (single thread)

Öğr.Gör. Gökhan TURAN Gölhisar Meslek Yüksekokulu

İşletim Sistemleri. Discovering Computers Living in a Digital World

YZM 3102 İşletim Sistemleri

Kemalettin YıldY KADIR HAS UNIVERSITY. UNIX SYSTEM ADMINISTRATOR

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Android e Giriş. Öğr.Gör. Utku SOBUTAY

İŞLETİM SİSTEMLERİ. (Operating Systems)

İşletim Sistemleri; İÇERİK. Yazılım BİLGİ TEKNOLOJİLERİ VE UYGULAMALARI Yazılım Türleri

Java Temel Özellikleri

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

Bilgisayar İşletim Sistemleri BLG 312

Giriş. geleneksel işletim sistemlerinde her prosesin. aynı adres uzayında birden fazla akış kontrolü gerekebilir

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

Bölüm 2 İşletim Sistemi Yapıları

Veritabanı. Ders 2 VERİTABANI

İşletim Sistemleri (Operating Systems)

Bölüm 3: İşlemler Operating System Concepts with Java 8th Edition 3.1 Silberschatz, Galvin and Gagne 2009

Bölüm 3: İşlemler Operating System Concepts with Java 8th Edition 3.1 Silberschatz, Galvin and Gagne 2009

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

Windows'da çalışırken pek çok durumda bir işe başlamadan önce işletim sisteminin o işe ilişkin bilgileri depolayacağı bir alan yaratması gerekir.

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama

Küme Bilgisayarlar. Enabling Grids for E-sciencE. Onur Temizsoylu. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi ODTÜ, Ankara

EYLÜL 2012 İŞLETİM SİSTEMLERİ. Enformatik Bölümü

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

Paralel Programlama Ortamları

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Sistem Programlama. (*)Dersimizin amaçları Kullanılan programlama dili: C. Giriş/Cıkış( I/O) Sürücülerinin programlaması

İşletim Sistemlerinde Çok Prosesli Çalışma

Binnur Kurt İstanbul Teknik Üniversitesi Bilgisayar MühendisliM

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Background (Arka Plan)

İŞLETİM SİSTEMLERİ. Enformatik Bölümü

BM-311 Bilgisayar Mimarisi

Yazılım Mühendisliği 1

Java ve Linux. Bora Güngören Portakal Teknoloji Akademik Bilişim

Bilgisayar İşletim Sistemleri BLG 312

Proses. Prosesler 2. İşletim Sistemleri

PROSESLER. Proses. Proses

Süreç 1 Kavramı ve Oluşturma Yöntemleri

Linux ve Windows Üzerinde C ve C++ Kullanımı

Bölüm 8: Ana Bellek. Operating System Concepts with Java 8 th Edition

İşletim Sistemlerine Giriş 2. Kaynakların Paylaşımı. Öğr.Gör. Dr. Şirin KARADENİZ

Yazılım Mühendisliğine Giriş 4. Hafta 2016 GÜZ

İleri Düzey Bilgisayar Ağları

Temel Bilgisayar (Basic Computer) Yazılım (Software)

Yazılım Mühendisliğine Giriş 5. Hafta 2016 GÜZ

İŞ SIRALAMA. İş Sıralamanın Amaçları. İş Sıralama Türleri - 1. İş Sıralama. İş Sıralama Türleri - 2

C# nedir,.net Framework nedir?

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Çekirdek Nedir? Ne yapar?

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Bölüm 8: Ana Bellek. Operating System Concepts 9 th Edition. Mehmet Demirci tarafından çevrilmiştir.

Kursad MANGALOGLU Sales Specialist Power Systems Systems & Technology Group IBM Turkey

& WIN 32 DEN BAKIŞ AÇISI İSMAİL YALÇIN

Bölüm 3: İşlemler Operating System Concepts with Java 8th Edition 3.1 Silberschatz, Galvin and Gagne 2009

İşletim Sistemlerine Genel Bakış

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

Bilgi güvenliği konusunda farkındalık yaratmak. Mobil cihazlardaki riskleri anlatmak. Mobil uygulamaların bilgi güvenliği açısından incelemek 2

İşletim Sistemi Nedir?

-Bilgisayarı oluşturan iki temel unsurdan diğeri ise YAZILIM dır.

Giriş. İplik Modeli. geleneksel işletim sistemlerinde her prosesin özel adres uzayı ve tek akış kontrolü var.

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

İŞLETİM SİSTEMİ İşletim sistemi kullanıcıyla bilgisayar donanımı arasında iletişim sağlayan programdır.

Açık Kaynak Kodlu Yazılım

Elbistan Meslek Yüksek Okulu Güz Yarıyılı

PROGRAMLAMA TEMELLERİ

Programlama Dilleri II. Bilgisayar ve Öğretim Teknolojileri Öğretmenliği

Doğu Akdeniz Üniversitesi Bilgisayar ve Teknoloji Yüksek Okulu Bilgi teknolojileri ve Programcılığı Bölümü DERS 1 - BİLGİSAYAR VE ÇEVRE ÜNİTELERİ

İşletim Sistemlerine Giriş

YZM 3102 İşletim Sistemleri

Zeyilname. Zeyilname No:1

Linux Dosya ve Dizin Yapısı

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

Transkript:

Bölüm 4: Threads (İş Parçaları) Mehmet Demirci tarafından çevrilmiştir. Silberschatz, Galvin and Gagne 2013

Bölüm 4: Threads (İş Parçaları) Genel bakış Çok çekirdekli programlama Çok iş parçalı modeller İş parçası kütüphaneleri Örtük iş parçalama İş parçalama sorunları OS örnekleri 4.2 Silberschatz, Galvin and Gagne 2013

Hedefler İş parçası kavramına giriş Pthreads, Windows ve Java thread kütüphaneleri için API lere bakış Örtük iş parçalama stratejilerini incelemek Çok iş parçalı programlama ile ilgili sorunları incelemek Windows ve Linux ta iş parçaları için var olan OS desteğini öğrenmek 4.3 Silberschatz, Galvin and Gagne 2013

Motivasyon Modern uygulamaların çoğu çok iş parçalıdır. İş parçaları uygulama içinde çalışır. Uygulamadaki birden fazla görev ayrı iş parçaları ile gerçekleştirilebilir. Görüntü yenileme Veri getirme Yazım denetimi Ağ isteğine yanıt verme Süreç oluşturma ağır, thread oluşturma hafif bir iş. Bu yolla kod basitleşir, verim artar. Çekirdekler (kernels) genellikle çok iş parçalıdır. 4.4 Silberschatz, Galvin and Gagne 2013

Çok İş Parçalı Sunucu Mimarisi 4.5 Silberschatz, Galvin and Gagne 2013

Faydalar Yanıt verebilirlik sürecin bir parçası engellense bile yürütme devam edebilir, özellikle UI için önemlidir Kaynak paylaşımı iş parçaları sürecin kaynaklarını paylaşır, bellek paylaşımı veya mesajlaşmadan daha kolay Maliyet süreç oluşturmadan daha ucuz, iş parçası değiştirme bağlam değiştirmeden daha az masraflı Ölçeklenebilirlik süreç çok işlemcili sistemlerden faydalanabilir 4.6 Silberschatz, Galvin and Gagne 2013

Çok Çekirdekli Programlama Çok çekirdekli (multicore) veya çok işlemcili (multiprocessor) sistemlerde programlama zorluğu çoktur: Etkinlikleri bölme Denge Veriyi bölme Veri bağımlılıkları Sınama ve hata ayıklama Parallellik sistemin aynı anda birden fazla iş yapabileceğini belirtir. Eşzamanlılık birden fazla işin ilerlemesini destekler. Tek işlemci/çekirdek, planlayıcı eşzamanlılık sağlar. 4.7 Silberschatz, Galvin and Gagne 2013

Çok Çekirdekli Programlama Paralellik türleri Veri parallelliği verinin alt kümelerini birden çok çekirdeğe dağıtır, hepsine aynı işlemi uygular. Görev parallelliği iş parçalarını çekirdeklere dağıtır, her iş parçası farklı işlem yapar. Thread sayısı arttıkça iş parçalama için mimari desteği de artar. CPU larda çekirdekler ve donanım threadleri bulunur. Oracle SPARC T4 8 çekirdeklidir, her çekirdekte 8 hardware thread vardır. 4.8 Silberschatz, Galvin and Gagne 2013

Eşzamanlılık vs. Parallellik Tek çekirdekli sistemde eşzamanlı yürütme: Çok çekirdekli sistemde paralellik: 4.9 Silberschatz, Galvin and Gagne 2013

Tek ve Çok İş Parçalı Süreçler 4.10 Silberschatz, Galvin and Gagne 2013

Amdahl Yasası Seri ve paralel bileşenlere sahip bir uygulama için ek çekirdeklerden kaynaklanan performans kazanımlarını ifade eder. S seri kısım N işlemci çekirdeği Yani, uygulama %75 paralel / %25 seri ise, 1 çekirdekten 2 ye geçiş hızı 1,6 katına çıkarır. N sonsuza giderken, hızlanma 1 / S e yaklaşır. Uygulamanın seri kısmı ek çekirdeklerle gelen performans kazanımını orantısız biçimde etkiler. 4.11 Silberschatz, Galvin and Gagne 2013

Kullanıcı Threadleri ve Çekirdek Threadleri Kullanıcı threadleri yönetim kullanıcı seviyesindeki thread kütüphanesi tarafından yapılır. Üç ana thread kütüphanesi: POSIX Pthreads Windows threads Java threads Çekirdek threadleri Çekirdek destekli Örnekler neredeyse bütün genel amaçlı OS ler: Windows Solaris Linux Tru64 UNIX Mac OS X 4.12 Silberschatz, Galvin and Gagne 2013

Çok İş Parçalı Modeller Many-to-One (Çoktan bire) One-to-One (Bire bir) Many-to-Many (Çoktan çoğa) 4.13 Silberschatz, Galvin and Gagne 2013

Many-to-One (Çoktan Bire) Birçok kullanıcı seviyeli thread tek çekirdek thread ine eşlenir. Bir thread in engellenmesi hepsinin engellenmesine yol açar. Birden çok thread çok çekirdekli sistemde paralel çalışamaz çünkü her an yalnızca biri kernel da olabilir. Bu modeli kullanan az sistem vardır. Örnekler: Solaris Green Threads GNU Portable Threads 4.14 Silberschatz, Galvin and Gagne 2013

One-to-One (Bire Bir) Her kullanıcı seviyeli thread bir çekirdek thread ine eşlenir. Kullanıcı seviyeli thread oluşturulunca çekirdek threadi de oluşur. Çoktan bire modelinden daha fazla eşzamanlılık vardır. Süreç başına thread sayısı bazen kısıtlanır (masraftan). Örnekler Windows Linux Solaris 9 ve sonrası 4.15 Silberschatz, Galvin and Gagne 2013

Many-to-Many (Çoktan Çoğa) Birçok kullanıcı seviyeli thread yine birçok çekirdek thread ine eşlenir. OS in yeterli sayıda çekirdek threadi oluşturmasına imkan verir. Solaris versiyon 9 öncesi Windows ThreadFiber package 4.16 Silberschatz, Galvin and Gagne 2013

İki Seviyeli Model Çoktan çoğa benzeri, ama kullanıcı thread inin çekirdek thread ine bağlanmasına izin verir. Örnekler IRIX HP-UX Tru64 UNIX Solaris 8 ve öncesi 4.17 Silberschatz, Galvin and Gagne 2013

Thread Kütüphaneleri Thread kütüphanesi programcıya thread oluşturma ve yönetme için API sunar. İki ana yolla gerçekleştirilir: Tamamen kullanıcı alanındaki kütüphane Çekirdek seviyeli kütüphane OS desteklidir. 4.18 Silberschatz, Galvin and Gagne 2013

Pthreads Kullanıcı veya çekirdek seviyesinde olabilirler. İş parçası oluşturma ve senkronlama için POSIX standardı (IEEE 1003.1c) API Şartname (gerçekleştirim değil) API thread kütüphanesinin davranışını belirler, gerçekleştirim kütüphanenin geliştirilmesine bırakılır. UNIX tabanlı işletim sistemlerinde yaygındır (Solaris, Linux, Mac OS X) 4.19 Silberschatz, Galvin and Gagne 2013

Pthreads Örneği 4.20 Silberschatz, Galvin and Gagne 2013

Pthreads Örneği Pthreads Example (Cont.) 4.21 Silberschatz, Galvin and Gagne 2013

10 Thread Birleştiren Pthreads Kodu perating System Concepts 9 th Edition 4.21 Silberschatz, Galvin and Gagne 2013 4.22 Silberschatz, Galvin and Gagne 2013

Windows ta Çok İş Parçalı C Programı 4.23 Silberschatz, Galvin and Gagne 2013

Windows ta Çok İş Parçalı C Programı 4.24 Silberschatz, Galvin and Gagne 2013

Java Threads Java thread leri JVM tarafından yönetilir. Alttaki OS tarafından sunulan iş parçası modeli kullanılarak gerçekleştirilir. Java thread leri şöyle oluşturulabilir: Thread sınıfını genişleterek (Extend) Runnable arayüzünü gerçekleştirerek (Implement) 4.25 Silberschatz, Galvin and Gagne 2013

Java da Çok İş Parçalı Program 4.26 Silberschatz, Galvin and Gagne 2013

Java da Çok İş Parçalı Program 4.27 Silberschatz, Galvin and Gagne 2013

Örtük İş Parçalama Yaygınlaşan bir yöntem çünkü iş parçası sayısı arttıkça açık iş parçaları ile program doğruluğunu sağlamak zorlaşır. İş parçalarının oluşturulup yönetilmesi programcıya değil derleyicilere ve çalışma zamanı kütüphanelerine bırakılır. Üç yöntem İş parçası havuzları OpenMP Merkezi sevkiyat Diğer yöntemler: Microsoft Threading Building Blocks (TBB), java.util.concurrent package 4.28 Silberschatz, Galvin and Gagne 2013

İş Parçası Havuzları İş parçalarını oluşturup havuza at, iş beklesinler. Avantajları: Hazır thread ile isteğe hizmet vermek yenisini oluşturmaktan biraz daha hızlıdır. Uygulamalardaki thread sayısı havuz boyutuyla sınırlıdır. Yapılacak görev ile görev oluşturma mekanizmasını ayırır, böylece görev çalıştırma için farklı stratejilere izin verir. Yani görevler periyodik olarak çalışacak şekilde planlanabilir. Windows API iş parçası havuzlarını destekler: 4.29 Silberschatz, Galvin and Gagne 2013

OpenMP C, C++, FORTRAN için derleyici talimatları ve API Paylaşılan bellekli ortamlarda paralel programlama desteği sağlar. Paralel bölgeleri belirler - paralel çalışabilen kod blokları #pragma omp parallel Çekirdek sayısı kadar thread oluştur #pragma omp parallel for for(i=0;i<n;i++) { } c[i] = a[i] + b[i]; For döngüsünü paralel çalıştır 4.30 Silberschatz, Galvin and Gagne 2013

Merkezi Sevkiyat Mac OS X and ios için geliştirilen Apple teknolojisi C, C++ dillerine eklentiler, API, ve çalışma zamanı kütüphanesi Paralel bölümlerin belirlenmesine imkan verir. İş parçalama ayrıntılarını yönetir. Blok ^{ } içinde - ˆ{ printf("i am a block"); } Bloklar sevkiyat kuyruğuna koyulur. Kuyruktan çıkarılınca iş parçası havuzundaki uygun iş parçasına atanır. 4.31 Silberschatz, Galvin and Gagne 2013

Merkezi Sevkiyat İki tür sevkiyat kuyruğu: seri bloklar FIFO sırasıyla çıkarılır, her süreç için bir kuyruk, adı ana kuyruk Programmers can create additional serial queues within program eşzamanlı FIFO sırasıyla çıkarılır ama tek seferde birkaç tane çıkabilir. Üç tane sistem kuyruğu düşük, varsayılan, yüksek öncelikli 4.32 Silberschatz, Galvin and Gagne 2013

İş Parçalama Sorunları fork() ve exec() sistem çağrılarının anlamları Sinyal yönetimi Eşzamanlı ve eşzamansız Thread iptali Eşzamansız veya ertelenen Thread-yerel depolama Planlayıcı etkinleştirme 4.33 Silberschatz, Galvin and Gagne 2013

fork() ve exec() anlamı fork()sadece çağıran thread i mi yoksa hepsini mi kopyalar? Bazı UNIX versiyonlarında iki çeşit fork vardır. exec() genellikle çalışan süreci bütün thread lerle birlikte değiştirir. 4.34 Silberschatz, Galvin and Gagne 2013

Sinyal Yönetimi Sinyaller UNIX sistemlerinde süreci belirli bir olay olduğunda haberdar eder. Sinyal yönetici sinyalleri işlemekle görevlidir. 1. Belirli bir olay sinyal üretir. 2. Sinyal bir sürece yollanır. 3. Sinyal iki sinyal yöneticiden biri tarafından işlenir: 1. Varsayılan 2. Kullanıcı tanımlı Her sinyal için bir varsayılan yönetici bulunur, çekirdek tarafından çalıştırılır. Kullanıcı tanımlı sinyal yönetici varsayılanın yerine geçebilir. Tek thread varsa sinyal sürece verilir. 4.35 Silberschatz, Galvin and Gagne 2013

Sinyal Yönetimi Birden fazla thread varsa sinyal hangisine verilmeli? Sinyalle ilgili thread e ver. Süreçteki her thread e ver. Süreçteki belli thread lere ver. Bir thread i sürece gelen bütün sinyalleri almakla görevlendir. 4.36 Silberschatz, Galvin and Gagne 2013

Thread İptali Thread bitmeden sonlandırmak İptal edilecek thread hedef thread İki yaklaşım: Eşzamansız iptal hedef thread i hemen sonlandırır. Ertelenen iptal hedef thread in periyodik olarak iptal edilip edilmeyeceğini kontrol etmesine izin verir. Pthread koduyla thread oluşturup iptal etme: 4.37 Silberschatz, Galvin and Gagne 2013

Thread İptali Thread iptalini başlatmak iptal isteği oluşturur ama iptalin gerçekleşmesi thread durumuna bağlıdır. Thread iptali kapalıysa, thread açana kadar iptal beklemede kalır. Varsayılan iptal türü ertelenendir. Thread iptal noktasına ulaşınca iptal gerçekleşir. pthread_testcancel() Sonra temizleme yöneticisi çağrılır. Linux sistemlerinde thread iptali sinyallerle yönetilir. 4.38 Silberschatz, Galvin and Gagne 2013

Thread-Yerel Depolama Thread-local storage (TLS) her thread in verinin bir kopyasına sahip olmasına izin verir. Thread oluşturma üzerinde kontrol yoksa faydalıdır. (thread havuzu kullanılıyorsa) Yerel değişkenlerden farklıdır Yerel değişkenler ancak tek fonksiyon çağrısı sırasında görülebilir. TLS farklı fonksiyon çağrıları arasında görülebilir. static veriye benzer TLS her thread için eşsizdir. 4.39 Silberschatz, Galvin and Gagne 2013

Planlayıcı Etkinleştirme Çoktan çoğa ve iki seviyeli modellerde uygulamaya ayrılan çekirdek thread lerinin sayısını uygun tutmak için iletişime ihtiyaç duyulur. Kullanıcı ve çekidek thread leri arasında ara veri yapısı kullanılır lightweight process (hafif süreç) (LWP) sürecin üzerinden kullanıcı thread inin çalışmasını planlayabildiği sanal işlemci Her LWP çekirdek thread ine bağlıdır. Kaç LWP gerekir? Planlayıcı etkinleştirme upcalls (yukarıya çağrı) sunar çekirdekten thread kütüphanesindeki yukarıya çağrı yöneticisine iletişim mekanizması Bu iletişim uygulamanın doğru sayıda çekirdek thread i tutmasını sağlar. 4.40 Silberschatz, Galvin and Gagne 2013

İşletim Sistemi Örnekleri Windows Threads Linux Threads 4.41 Silberschatz, Galvin and Gagne 2013

Windows Threads Windows API Win 98, Win NT, Win 2000, Win XP, and Win 7 için ana API Bire bir eşlemeyi çekirdek seviyesinde gerçekleştirir. Her thread içinde Thread id İşlemci durumunu temsil eden register kümesi Ayrı kullanıcı ve çekirdek stack leri thread kullanıcı ve çekirdek modunda çalışırken kullanılır. Özel veri depolama alanı çalışma zamanı kütüphaneleri ve dinamik bağlama kütüphaneleri (DLL) tarafından kullanılır. Register kümesi, stack ler, ve özel depo alanı iş parçasının bağlamı (context) 4.42 Silberschatz, Galvin and Gagne 2013

Windows Threads İş parçasının ana veri yapıları: ETHREAD (Yönetici iş parçası bloğu) iş parçasının ait olduğu sürece ve KTHREAD e pointer içerir, çekirdek alanındadır. KTHREAD (Çekirdek iş parçası bloğu) planlama ve senkronizasyon bilgisi, çekirdek modu stack, TEB e pointer, çekirdek alanındadır. TEB (İş parçası ortam bloğu) thread id, kullanıcı modu stack, thread-yerel depo, kullanıcı alanındadır. 4.43 Silberschatz, Galvin and Gagne 2013

Windows Threads Veri Yapıları 4.44 Silberschatz, Galvin and Gagne 2013

Linux Threads Linux iş parçalarına görev (task) der. Thread oluşturma clone() sistem çağrısı ile yapılır. clone() çocuk görevin ebeveyn görevin (süreç) adres alanını paylaşmasına imkan verir. Bayraklar davranışı kontrol eder. struct task_struct süreç veri yapılarına işaret eder (paylaşılan veya eşsiz) 4.45 Silberschatz, Galvin and Gagne 2013

Bölüm 4 Sonu Silberschatz, Galvin and Gagne 2013