Presentation is loading. Please wait.

Presentation is loading. Please wait.

Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 4: Threads CS 170 TY, Sept 2011.

Similar presentations


Presentation on theme: "Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 4: Threads CS 170 TY, Sept 2011."— Presentation transcript:

1 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 4: Threads CS 170 TY, Sept 2011

2 4.2 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 4: Threads Overview thread — a fundamental unit of CPU utilization that forms the basis of multithreaded computer systems Multithreading Models Thread Libraries/Operating System Examples

3 4.3 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Benefits of multi-threading Responsiveness Resource Sharing Shared memory Economy Scalability

4 4.4 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Motivation for multi-threaded servers

5 4.5 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Thread Model for Multicore Programming Multicore systems putting pressure on programmers, challenges include: Dividing activities Balance Data splitting Data dependency Testing and debugging

6 4.6 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Execution Flow Concurrent execution on a single core system Parallel execution on a multi-core system

7 4.7 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Difference between Single and Multithreaded Processes Shared memory access for code/data Separate control flow -> separate stack/registers

8 4.8 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Thread Libraries Thread library provides programmer with API for creating and managing threads Pthreads Java threads OS-specific threads Two primary ways of implementing Library entirely in user space Kernel-level library supported by the OS

9 4.9 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Pthreads May be provided either as user-level or kernel-level A POSIX standard (IEEE 1003.1c) API for thread creation and synchronization Common in UNIX OS (Solaris, Linux, Mac OS X). In CSIL, compile a c program with gcc -lpthread

10 4.10 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Example of PThreads #include void *PrintHello(void * id) { printf(“Thread%d: Hello World!\n", id); pthread_exit(NULL); } void main () { pthread_t thread0, thread1; pthread_create(&thread0, NULL, PrintHello, (void *) 0); pthread_create(&thread1, NULL, PrintHello, (void *) 1); }

11 4.11 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Java Threads Java threads are managed by the JVM Java threads may be created by extending Thread class Thread class  run, start methods  yield, join  sleep Synchronization synchronized methods & objects wait/notify/notifyAll conditions

12 4.12 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Java Threads: Example class MyThread extends Thread { private String name; public MyThread(String name) { this.name = name; } public void run() { for (;;) { System.out.println(name + ": hello world"); } public class Main2 { public static void main(String [] args) { MyThread t1 = new MyThread("thread1"); MyThread t2 = new MyThread("thread2"); t1.start(); t2.start(); }

13 4.13 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Java Threads: example outpout thread2: hello world thread1: hello world thread2: hello world thread1: hello world thread2: hello world thread1: hello world thread2: hello world

14 4.14 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Kernel thread vs. user-level thread Type of threads Kernel-level threads User-level threads

15 4.15 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Kernel Threads Recognized and supported by the OS Kernel OS explicitly performs scheduling and context switching of kernel threads Examples Windows XP/2000 Solaris Linux Tru64 UNIX Mac OS X

16 4.16 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition User Threads Thread management done by user-level threads library OS kernel does not know/recognize there are multiple threads running in a user program. The user program (library) is responsible for scheduling and context switching of its threads. Three primary thread libraries: POSIX Pthreads Win32 threads Java threads

17 4.17 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition User- vs. Kernel-level Threads From W. Stallings, Operating Systems, 6 th Edition

18 4.18 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Multithreading Models When both kernel threads/user threads are available, how to map between them? Many-to-One One-to-One Many-to-Many

19 4.19 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Many-to-One Model Many user-level threads mapped to single kernel thread Examples: Solaris Green Threads GNU Portable Threads

20 4.20 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition One-to-one Model Each user-level thread maps to kernel thread Examples Windows NT/XP/2000 Linux Solaris 9 and later

21 4.21 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Many-to-Many Model Solaris prior to version 9 Windows NT/2000 with the ThreadFiber package

22 4.22 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Two-level Combined Model Allow M:M, also allow a user thread to be explicitly bound to a kernel thread Examples IRIX HP-UX Tru64 UNIX Solaris 8 and earlier

23 4.23 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Threading Issues Semantics when fork() and exec() system calls are involved. Thread cancellation of target thread Asynchronous or deferred Signal handling Thread pools Thread-specific data

24 4.24 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Thread Cancellation Terminating a thread before it has finished Two general approaches: Asynchronous cancellation terminates the target thread immediately. Deferred cancellation allows the target thread to periodically check if it should be cancelled.

25 4.25 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Signal Handling Signals are used in UNIX systems to notify a process that a particular event has occurred. A signal handler is used to process signals  Signal is generated by particular event  Signal is delivered to a process  Signal is handled Options: Deliver the signal to the thread to which the signal applies Deliver the signal to every thread in the process Deliver the signal to certain threads in the process Assign a specific thread to receive all signals for the process

26 4.26 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Thread Pools Create a number of threads in a pool where they await work Advantages: Usually slightly faster to service a request with an existing thread than create a new thread Allows the number of threads in the application(s) to be bound to the size of the pool

27 4.27 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Thread Specific Data Allows each thread to have its own copy of data E.g. pthread


Download ppt "Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 4: Threads CS 170 TY, Sept 2011."

Similar presentations


Ads by Google