Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

İşletim Sistemleri (Operating Systems)

Benzer bir sunumlar


... konulu sunumlar: "İşletim Sistemleri (Operating Systems)"— Sunum transkripti:

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

2 Thread (İşlemcik)

3 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,

4 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.

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

6 Thread (İşlemcik) Nedir?

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

8 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()

9 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.

10 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.

11 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.

12 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.

13 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.

14 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.

15 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.

16 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.

17 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.

18 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.

19 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.

20 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.

21 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.

22 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.

23 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.

24 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.

25 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.

26 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.

27 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.

28 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.

29 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.

30 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.

31 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.

32 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

33 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

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

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

36 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)

37 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.

38 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.)

39 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.

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

41 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");

42 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();

43 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

44 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

45 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.

46 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.

47 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.

48 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.


"İşletim Sistemleri (Operating Systems)" indir ppt

Benzer bir sunumlar


Google Reklamları