İşletim Sistemleri (Operating Systems)

Slides:



Advertisements
Benzer bir sunumlar
Erkan BALABAN Yazılım Uzmanı NTV
Advertisements

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar)
İşletim Sistemlerine Giriş – 2 Kaynakların Paylaşımı
İş (Job): Proses ve/veya thread
Bölüm 1: Introductions (Tanıtım,Tanım)
Thread (İş parçacığı/iplik)
CLUSTER COMPUTİNG (KÜME HESAPLAMA )
BTP 108 BİLGİSAYAR AĞ SİSTEMLERİ AĞ KAVRAMI Birden çok bilgisayarın birbirine bağlı olarak kullanılmasıyla oluşturulan çalışma biçimine bilgisayar ağı.
Fork and Join Framework
CPU (Merkezi İşlem Ünitesi)
HR-WEB Web Tabanlı İnsan Kaynakları Uygulamaları
İŞLETİM SİSTEMLERİ Ders İçeriği
Bilgisayar Donanımı Öğr. Gör. Tolga HAYIT
Bilgi Teknolojileri Hafta 01. Bilgi Nedir???  Fikir  İlim  Malumat.
BİLGİSAYAR AĞLARI.
İş Parçacıkları Thread(s)
İŞLETİM SİSTEMLERİ.
İnternet Teknolojisi Temel Kavramlar
İŞLETİM SİSTEMLERİ Öğr. Gör. S.Serkan TAN.
AĞ İŞLETİM SİSTEMLERİ Öğr. Gör. Mustafa SARIÖZ
Ümran Onay.
JAVA’DA DİZİLER Dr.Galip AYDIN.
DERS 5 THREAD (İŞ PARÇACIKLARI)
İŞLETİM SİSTEMLERİ DERS 4 PROSES.
Sistem Çağrıları Proses Kontrol Çağrıları Bellek Yönetim Çağrıları
1 Öğr. B.Aliyeva Öğr. B.Aliyeva Bilgisayar Yazılımı.
BİLGİSAYAR YAZILIMI.
İnternet Teknolojisi Temel Kavramlar
BTÖ 306 Bilgisayar Ağlarına Giriş Dr. Şirin Karadeniz Çelebi Uluyol.
Bölüm 4: İş Parçacığı (Thread)
İşletim Sistemleri Operation Systems Fon müziği.
Ağlar ve Veri İletişimi
ÇOK KATMANLI MİMARİLER. Katman: Ortak işi yapan kodların bir yerde toplanması Örneğin hemen hemen her projemizde veri tabanı kullanırız, bunun için veritabanı.
Bölüm 13: I/O Sistemleri Giriş/Çıkış Donanımı
BİL İŞLETİM SİSTEMLERİ
Bilgisayar Sistemlerine Giriş
Chapter 5: Threads (İş Parçacıkları)
Veritabanı Yönetim Sistemleri - I
THREADS (İŞ PARÇACIKLARI)
İnsan Kaynakları Bilgi Sistemleri
BİLGİSAYAR MİMARİLERİ 12.Hafta: Çok İşlemcili Sistemler
Kurumsal Ağlarda Uzak ve Merkezi İşlem Birimlerinin Sanallaştırılması: Bir Uygulama Emrah ÇOLAK, SGK Aydın ÇETİN, Gazi Üniversitesi ŞUBAT 2016.
1. HAFTA Giriş, Tarihçe ve Kavramlar
JAVA 1. GİRİŞ & TARİHÇE Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmıştır. Açık kodlu. Nesneye yönelik. Düzlemden.
SUNUM KONU BAŞLIKLARI->
SUNUCU İŞLETİM SİSTEMLERİ
BÖLÜM 5 THREADS. İçerik Giriş Multithreading User/Kernel Thread Windows Threads Linux Threads.
SANALLAŞTIRMA ÇEŞİTLERİ VE YAZILIMLARI
BİLGİSAYAR NEDİR?.
İnönü Üniversitesi Bilgisayar Mühendisliği Bölümü
Neden Linux? Nerelerde Kullanılır?
Hafta_3 Process (İşlem-Süreç)
MALTEPE ÜNİVERSİTESİ Paralel Hesaplama MATLAB ve Paralel Hesaplama
SERVER ÇEŞİTLERİ VE ARASINDAKİ FARKLAR
Sanallaştırma Çeşitleri ve Yazılımları
Kaynakların Paylaşımı
Bir bilgisayar sisteminin 4 bileşeni vardır;
Bir İşletim Sisteminin Mantıksal Yapısı
Hafta_3 Process (İşlem-Süreç)
İşletim Sistemleri (Operating Systems)
İşletim Sistemleri (Operating Systems) Hafta_4 İplik-İşlemcik (Thread)
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
İşletim Sistemleri (Operating Systems)
Amazon Web Servisleri ve Javascript Dilinin Birlikte Kullanımı
Bilgisayar Mühendisliğine Giriş
Bilgisayar Mühendisliğine Giriş
İşletim Sistemleri (Operating Systems)
FIRAT ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ
Sunum transkripti:

İşletim Sistemleri (Operating Systems) Yrd. Doç. Dr. Hüseyin POLAT

Thread (İşlemcik)

Thread (İşlemcik) Nedir? Thread (işlemcik-iplik): İcra edilmekte olan bir process’in, aynı kodunu ve adres boşluğunu kullanarak işlemlerini gerçekleştiren birbirinden bağımsız hafif ağırlıklı (light-weight) process’lere " thread" adı verilir, Bir process tek bir thread veya birden fazla thread’e sahip olabilir,

Thread (İşlemcik) Nedir? Single and Multithreaded Processes Multithreading kullanımında User Address Space tektir, process’in sahip olduğu tüm thread’ler bu process için ayrılan aynı adres alanını paylaşırlar.

Thread (İşlemcik) Nedir? Single Threading Multi-Threading

Thread (İşlemcik) Nedir?

Thread (İşlemcik) Nedir? Her thread kendine ait stack, PC ve registers’lara sahiptir.

Time expired/ interrupted Life Cycle of Thread new ready start() running dead stop() dispatch completion wait() waiting sleeping blocked notify() sleep() Block on I/O I/O completed Time expired/ interrupted suspend() resume()

Thread (İşlemcik) Nedir? Belli bir process’e bağlıdır. Bağlı bulundukları process’in adres boşluğunu kullanırlar, Kendi program sayacına sahiptirler, Gerçekleştirilen prosedürler için kendi adres ve yerel değişkenlere sahiptirler, İşletim sistemi kaynaklarını paylaşırlar.

Thread Kullanımı: Chat programı Örnek olarak; bir chat programı oluşturulmak istensin. Bir chat programı ancak thread mantığı ile yapılabilir. İki tane thread metodu oluşturulmalıdır, bir tanesi soketi dinleyen metod, diğeri ise kullanıcıdan giriş bekleyen metod olacaktır. Daha sonra da iki tane thread oluşturulur. Thread’i oluşturma sırasında thread’lardan birine klavyeden giriş alan metodu çalıştırması istenir, diğerinin de soket metodunu çalıştırması sağlanır.

Thread Kullanımı: Kelime İşlemci Örneğin, bir kelime işlemci programında, yazma işlemi gerçekleştirilirken, klavyeden bilginin alınması, ekrana basılması ayrı ayrı gerçekleşen iki thread’dır. Bunun yanında bir diğer thread yazım hatalarını kontrol ediyor olabilir. Bu yüzden Thread kullanışlıdır, çünkü bir kelime işlemcide farklı mantıksal olarak paralel bir şekilde çalıştırılan görevler bulunur.

Thread Kullanımı: Kelime İşlemci Bir kelime işlemi uygulaması, bir thread ile klavyeden giriş alabilir, bir thread ile spell check yapabilir ve başka bir thread ile ekran görüntüsünü düzenleyebilir. Her thread, paylaşmadan kullandığı kendisine ait bileşenlere sahiptir.

Thread Kullanımı: Web Server Bir web server, her client (istemci) ile ayrı ayrı ilgilenmelidir. Bir Web browser, bir thread ile veri aktarımı yapabilir, başka thread ile verileri ekranda görüntüleyebilir. Bir Web sunucu process’i multithreaded çalışırsa, her gelen istek için ayrı bir thread oluşturulur ve process portu dinlemeye devam eder.

Thread (İşlemcik) Modern ve karmaşık yazılımlar tek bir process yerine birlikte çalışabilen process’lerden oluşur. Bu process’ler arasında context switching sorununun yaşanmaması için, bazı process’ler için gerekli olan alt process’ler gruplandırılarak o process’in bir parçası haline getirilmiştir. Bu tür process’lere thread (işlemcik) denir. Thread’ler process’lerin içinde yer alır, onları oluştururlar. Klasik process’ler tek thread’e sahiptirler.

Thread (İşlemcik) Bir thread, program counter, bir grup register ve bir stack yapısını içerir. Thread’ler, program kodunu, data kısmını, dosyalar gibi işletim sistemi kaynaklarını ortak kullanır. Eğer bir process, birden fazla thread’e sahipse birden fazla görevi eşzamanlı yapabilir. Günümüzdeki modern bilgisayarlarda çalışan yazılım uygulamalarının çoğu multithread çalışırlar. Uygulamalar, çok sayıda thread’e sahip tek process şeklinde geliştirilirler.

Thread (İşlemcik) Thread’ler de process’ler gibi durum değiştirebilirler. Hazır, Bloke, Çalışıyor durumlarda olabilirler. Tüm thread’ların belirli öncelikleri (priority) vardır. İşletim sistemleri, uygulamalar içinde çalışan thread’ları önceliklerine göre sıralayarak çalıştırırlar, ancak bazı yöntemlerle belirli bir dereceye kadar akışları değiştirilerek de kullanılabilirler.

Thread Modeli: Context Switch Process oluşturmak işletim sistemi için ‘bellek tahsisi, durum değiştirme veya context switching işlemleri’ gibi sebeplerden dolayı çok maliyetli bir iştir. Aynı processe ait threadler arasında context switching pahalı değildir. Kod, veri, dosya vs. için kaydetme veya geri yükleme şartı yoktur. Aynı process içindeki thread’ler arasında gerçekleşen context switching zamanı, process’ler arasında gerçekleşen context switching zamanından oldukça küçüktür.

Thread Modeli: Context Switch Thread context switching şunları yine de gerektirir. Register set switch, PC değişimi, stack değişimi vs. Ama bellek yönetimi ile ilgili bir iş yok! Kısmen Verimli Farklı processlere ait threadler arasında context switching pahalıdır.

Thread (İşlemcik) kullanımının avantajları Thread’lerin sağladığı faydalar 4 kategori halinde ifade edilebilir: 1. Responsiveness: Kullanıcı etkileşimli uygulamalarda, bir kısım bloklanmış, kilitlenmiş veya uzun süren işlem yürütüyorsa, kullanıcı ile etkileşim yapan başka bir kısım çalışmasını sürdürür. Sistemin cevap verebilirlik özelliği artmış olur. 2. Resource sharing: Process’ler kaynaklarını shared memory veya message passing teknikleri aracılığıyla paylaşabilirler. Thread’ler ait oldukları process’in sahip olduğu hafıza alanını ve diğer kaynakları paylaşabilirler.

Thread (İşlemcik) kullanımının avantajları 3. Economy: Bir process oluştururken hafıza ve kaynak tahsis edilmesi maliyeti yüksek bir iştir. Thread’ler ait oldukları process’in kaynaklarını paylaştıklarından dolayı context switching daha düşük maliyetle yapılır. (Solaris işletim sisteminde, thread oluşturma 30 kat daha hızlıdır ve thread’lerde context switch 5 kat daha hızlıdır.) 4. Scalability: Çok işlemcili mimarilerde thread’ler farklı işlemci çekirdekleri üzerinde eşzamanlı çalışabilir. Ancak, tek thread yapısına sahip process sadece bir işlemci çekirdeği üzerinde çalışabilir.

Thread (İşlemcik) kullanımının avantajları execution Environment (resource) (a) Tek threadli üç process (b) Üç threadli bir process İşletim sisteminde bir iş yaparken çok fazla process kullanmak yerine daha az process ve daha çok thread kullanmak, daha çok tercih edilir.

Thread (İşlemcik) kullanımının dezavantajları İşletim sistemi tasarımcıları multicore sistemlerin performansını artırmak için scheduling algoritmaları yazmak zorundadır. Uygulama geliştiricilerin mevcut programları değiştirmeleri ve yeni programları multithreaded şekilde tasarlamaları gerekmektedir. Multicore programlamada 5 önemli zorluk vardır: 1. Identifying tasks: Uygulamalarda eşzamanlı çalışabilecek ayrı alanların bulunması gereklidir. Bu alanlar farklı core’lar üzerinde paralel çalışacaktır. 2. Balance: Programcılar görevleri ayrıştırırken iş yükünün eşit dağıtılması gereklidir.

Thread (İşlemcik) kullanımının dezavantajları 3. Data splitting: Verilerin farklı core’lar üzerinde çalışan görevler tarafından erişilecek ve işlem yapılacak şekilde ayrıştırılması gereklidir. 4. Data dependency: Bir görevin erişeceği verinin diğer görevlerle bağımlılığının incelenmesi gereklidir. 5. Testing and debugging: Multithreaded çalışan programların test ve debug işlemi daha zordur.

Thread’lerin çakışması Aksi belirtilmedikçe bir thread, başka bir thread’ın çalışmasına karışamaz, bu yüzden birçok thread’ın aynı anda, aynı verileri kullanma ihtimalleri vardır ki, bazen bu durum tehlikeli sonuçlara neden olabilir. Bu şekilde birçok thread tarafından paylaşılabilen verilere, “kritik bölge verileri” (critical region) adı verilir. Kritik bölgeye birden çok thread erişmek istediğinde, thread’ların çakışmadan çalışabilmeleri için senkronize edilmeleri şarttır.

Multitasking (Çoklu görev ) Multitasking, işletim sisteminin aynı anda birden fazla program çalıştırabilmesidir, (aslında bir anda sadece tek bir process işlem görür) Birden fazla program mantıksal olarak aynı anda çalışmakta iken fiziksel olarak sıralı olarak çalışmaktadır. Multitasking process’ler üzerinden işler. Process’ler zamanı paylaşır ve bir process’in işinin bittiği yerde diğeri başlar. İşletim sistemi, çalışacak process’leri öncelikle sıraya sokar ve sonra sırası geleni çalıştırır. Bu işlem sonucunda programları aynı anda çalışıyorlarmış gibi görürüz. Multitasking yapılabilmesi için illaki çok işlemci gereksinimi yoktur.

Multithreading (Çoklu işlemcik ) Multi threading aynı adres alanında birden çok thread'in aynı anda çalışmasıdır. Process’lerin zaman paylaşımında olduğu gibi thread’lar kendi aralarında bir zaman paylaşımı oluştururlar. Tek işlemcili sistemlerde, bir process’e adanan sürede, process’in sahip olduğu thread’ler zaman paylaşımlı olarak çalışırlar dolayısıyla gerçek paralel çalışma (parallel execution) sağlanamaz. Tek işlemci farklı thread’lar arasında çok hızlı geçiş yapar ve bu durumda process’ler gerçekte olmasa bile eş zamanlı çalışıyormuş izlenimi verir.

Multithreading (Çoklu işlemcik ) Bilgisayar tasarımındaki en önemli gelişmelerden birisi, çok işlemcili/çekirdekli sistemlerin geliştirilmesidir. Son zamanlarda, tek chip içerisine birden fazla çekirdek yerleştirilmektedir ve bu tür sistemler multicore olarak adlandırılır. Her bir çekirdek işletim sistemi için ayrı bir işlemci olarak görünür. Bir çekirdek üzerinde çalışan 4 thread’e sahip bir uygulama için eşzamanlı çalışma, thread’lerin belirli aralıklarla çalıştırılmasını ifade eder. Çok işlemci veya çekirdeğe sahip sistemlerde eşzamanlı çalışma, her çekirdeğe bir thread atanarak thread’lerin paralel çalışmasını ifade eder.

Multi threading (Çoklu işlemcik ) Bir process içerinde üç adet thread bulunsun. Eğer bilgisayarda tek işlemci çekirdeği var ise, bu threadlerin her biri CPU nun 1/3 hızında çalışabilir. Eğer sistemde birden fazla işlemci çekirdeği var ise, her thread farklı işlemci çekirdeğinde çalıştırılır, bu şekilde uygulama işlemci çekirdeği ve thread sayısına bağlı olarak hızlanır. Çok işlemcili/çekirdekli sistemlerde farklı thread’lar farklı işlemciler/çekirdekler üzerinde eş zamanlı olarak çalışabilir. Böylece gerçek paralel çalışma sağlanabilir. Pek çok modern işletim sistemi çok işlemcili/çekirdekli thread kullanımını desteklemektedir.

Multi threading (Çoklu işlemcik ) CPU’nun sahip olduğu çekirdek sayısı arttıkça eşzamanlı gerçekleştirilen işlem sayısı da artacaktır.

Multi threading (Çoklu işlemcik ) Amdahl kuralına (Gene Amdahl) göre çekirdek sayısına göre bir sistemdeki performans artışı aşağıdaki gibi ifade edilir: Burada, S uygulamada seri çalışması zorunlu olan kısmın oranını, N ise çekirdek sayısını ifade eder. Bir uygulamada, %75 paralel ve %25 seri çalışıyorsa (S=0,25), 2 çekirdeğe (N=2) sahip sistemde bu uygulamayı çalıştırınca 1,6 kat hız artar. Çekirdek sayısı 4 olduğunda, 2.28 kat hız artışı sağlanır. Çekirdek sayısı sonsuza giderken hız artışı (1/S) ‘e doğru gider. Intel CPU’lar her çekirdek için 2 thread, Oracle T4 CPU ise 4 thread destekler.

MultiThread (Çoklu İşlemcik) Modelleri Thread’lar user thread’lar ve kernel thread’lar olmak üzere ikiye ayrılır. User thread: Kernel katmanının üstünde olup kullanıcı işlemleri tarafından oluşturulurlar. Bu thread’ların oluşturulması, çizelgelemesi ve yönetilmesi kernel’den bağımsız olarak gerçekleştirilir. User thread’larının tamamı kullanıcı adres boşluğu içerisinde koşturulur. Kernel thread: Doğrudan doğruya işletim sistemi tarafında oluşturulur. Kernel thread’larının oluşturulması, çizelgelemesi ve yönetimi işletim sistemi tarafında gerçekleştirilir.

User Thread Thread kütüphanesi kullanılır Kullanıcı alanında Thread tablosu tutulur Kullanıcı alanındaki tüm thread yönetimi kütüphane ile yapılır Kernel threadleri bilmez Üç temel thread kütüphanesi: POSIX Pthreads Win32 threads Java threads

User Thread Avantajlar Hızlı Context Switch: User level threadler user level thread kütüphaneleri kullanılarak yapılırlar, sistem çağrılarıyla değil. Yani OS çağrısı ve kernel interrupt yoktur. Bir threadin şimdilik işi bittiğinde, thread_yieldı çağırabilir. Bu instruction, (a) thread bilgisini thread tablosunun kendi içine kaydeder, ve (b) başka bir threadi çalıştırması için zamanlayıcıyı çağırır. Yerel thread durumunu kaydeden procedure ve zamanlayıcı, local procedurelerdir, bu yüzden, kernel trap, context switch, memory switch yoktur ve bu sayede thread zamanlama çok hızlıdır. Kullanıcı kendine göre zamanlama ayarı yapabilir

Kernel Thread OS, her process’deki ayrı thread’lerden haberdardır. Thread tablosu, kernel tarafından yönetilir.

Hybrid Thread Birkaç user thread’inin, bir kernel thread üzerine yönlendirilmesi

MultiThread (Çoklu İşlemcik) Modelleri Modern işletim sistemlerinden çoğu hem user hem de kernel thread’ları destekler. (Windows, Linux, Unix, Mac OS X, Solaris vs) Kernel thread’leri ile user thread’leri arasında aşağıdaki ilişkilendirme modellerinden birisinin oluşturulması gerekir. Many-to-one model (Çoktan-Bire Modeli) One-to-one model (Bire Bir Modeli) Many-to-many model (Çoktan Çoğa Modeli)

Many-to-one model (Çoktan-Bire Modeli) Many-to-one modelinde, çok sayıda kullanıcı thread’i bir tane kernel thread’i ile eşleştirilir. Thread yönetimi kullanıcı alanında yapılır, yani verimlidir. Aynı anda sadece bir tane kullanıcı thead’i kernel thread’e erişebilir. Aynı anda kernel katmanında sadece bir thread bulunabildiği için işlemci üzerinde sadece bir thread koşturulabilir. Sadece bir kernel thread’i kullanıldığı için multicore sistemlerde birden fazla thread için eşzamanlı çalışma yapılamaz.

One-to-one model (Bire Bir 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 multicore sistemlerde eşzamanlı koşturulabilir. Bir user thread için bir kernel thread oluşturulması gereklidir. Kernel thread oluşturmanın getirdiği ek yük performansı bir derece etkiler. Many-to-one modeline göre daha fazla concurrency. (Concurrency, birden fazla görev arasında kısa aralıklarla geçiş yaparak birlikte ilerletilmesini sağlar.)

Many-to-many model (Çoktan Çoğa Modeli) 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. Uygulama, gerektiğince user thread oluşturabilir Kernel threadler multicore sistemler üzerinde paralel çalışır.

A Program with Three Java Threads Write a program that creates 3 threads

Three threads example class A extends Thread { public void run() for(int i=1;i<=5;i++) System.out.println("\t From ThreadA: i= "+i); } System.out.println("Exit from A"); class B extends Thread for(int j=1;j<=5;j++) System.out.println("\t From ThreadB: j= "+j); System.out.println("Exit from B");

Three threads example class C extends Thread { public void run() for(int k=1;k<=5;k++) System.out.println("\t From ThreadC: k= "+k); } System.out.println("Exit from C"); class ThreadTest public static void main(String args[]) new A().start(); new B().start(); new C().start();

Run 1 [raj@mundroo] threads [1:76] java ThreadTest From ThreadA: i= 1 Exit from A From ThreadC: k= 1 From ThreadC: k= 2 From ThreadC: k= 3 From ThreadC: k= 4 From ThreadC: k= 5 Exit from C From ThreadB: j= 1 From ThreadB: j= 2 From ThreadB: j= 3 From ThreadB: j= 4 From ThreadB: j= 5 Exit from B

Run 2 [raj@mundroo] threads [1:77] java ThreadTest From ThreadA: i= 1 From ThreadC: k= 1 From ThreadC: k= 2 From ThreadC: k= 3 From ThreadC: k= 4 From ThreadC: k= 5 Exit from C From ThreadB: j= 1 From ThreadB: j= 2 From ThreadB: j= 3 From ThreadB: j= 4 From ThreadB: j= 5 Exit from B Exit from A

Intel Hyper-Threading Teknolojisi Hyper Threading özelliğine sahip olmayan bir işlemcide Thread işlenmesi. Hyper Threading teknolojisini desteklemeyen herhangi bir işlemcide thread’ler First in First out mantığı ile sırasıyla işlenecektir.

Intel Hyper-Threading Teknolojisi Hyper Threading özelliğine sahip bir işlemcide iş parçacığının işlenmesi Eğer işlemci Hyper Threading teknolojisini desteklediğinde, thread’ler aynı anda sanki iki ayrı işlemci varmış gibi işlenir. Ancak Hyper Threading teknolojisine sahip işlemci, fiziksel iki işlemci olmadığından, tek bir işlemcinin mantıksal iki işlemcisi gibi davranacaktır.

Intel Hyper-Threading Teknolojisi Hyper-Threading özelliğine sahip olmayan fiziksel iki çekirdekli işlemcide iki thread’ınişlenmesi iki thread işlemcilerde ayrı ayrı işlenir. İki farklı işlemcinin performansı Hyper Threading teknolojisini destekleyen işlemciden daha üstündür. Ancak thread’ler arasında bir işlem önceliğinin olmaması gereklidir.

Intel Hyper-Threading Teknolojisi Hyper-Threading özelliğine sahip fiziksel iki çekirdekli işlemcide 4 thread’ın işlenmesi Bu durumda 4 thread’den 2 tanesi bir işlemcide, diğer 2 tanesi de diğer işlemcide işlem görecektir.