Presentation is loading. Please wait.

Presentation is loading. Please wait.

Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Silberschatz, Galvin and Gagne ©2007 Chapter 4: Threads.

Similar presentations


Presentation on theme: "Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Silberschatz, Galvin and Gagne ©2007 Chapter 4: Threads."— Presentation transcript:

1 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Silberschatz, Galvin and Gagne ©2007 Chapter 4: Threads

2 4.2 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Chapter 4: Threads  Processes vs. Threads  User vs. Kernel Threads  Multithreading Models  Threading Issues  Pthreads  Linux Threads  Windows XP Threads

3 4.3 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Process Overheads  A full process includes numerous things: an address space (defining all the code and data pages) OS resources and accounting information a “thread of control”,  defines where the process is currently executing  PC, registers, and stack Creating a new process is costly all of the structures (e.g., page tables) that must be allocated Communicating between processes is costly most communication goes through the OS

4 4.4 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Threads and Processes  Most operating systems therefore support two entities: the process,  which defines the address space and general process attributes the thread,  which defines a sequential execution stream within a process  A thread is bound to a single process. For each process, however, there may be many threads.  Threads are the unit of scheduling  Processes are containers in which threads execute

5 4.5 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Single and Multithreaded Processes

6 4.6 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Distinguishing Threads and Processes  Makes it easier to support multithreaded applications Different from multiprocessing, multiprogramming, multitasking  Concurrency (multithreading) is useful for: improving program structure Improving responsiveness handling concurrent events (e.g., web requests) building parallel programs sharing resources economically multiprocessor utilization  Is multithreading useful even on a single processor?

7 4.7 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Threads vs. Processes  A thread has no data segment or heap  A thread cannot live on its own, it must live within a process  There can be more than one thread in a process, the first thread calls main & has the process’s stack  Inexpensive creation  Inexpensive context switching  If a thread dies, its stack is reclaimed A process has code/data/heap & other segments A process has at least one thread Threads within a process share code/data/heap, share I/O, but each has its own stack & registers Expensive creation Expensive context switching If a process dies, its resources are reclaimed & all threads die

8 4.8 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 User and Kernel Threads  User threads - Thread management done by user-level threads library, with or without knowledge of the kernel  Kernel threads - Threads directly supported by the kernel: Windows XP/2000 Solaris Linux Tru64 UNIX Mac OS X

9 4.9 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 (a) A user-level threads package. (b) A threads package managed by the kernel. User vs. Kernel Threads Example from Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

10 4.10 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Kernel Threads  Also called Lightweight Processes (LWP)  Kernel threads still suffer from performance problems  Operations on kernel threads are slow because: a thread operation still requires a system call kernel threads may be overly general  to support needs of different users, languages, etc. the kernel doesn’t trust the user  there must be lots of checking on kernel calls

11 4.11 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 User-Level Threads  For speed, implement threads at the user level  A user-level thread is managed by the run-time system user-level code that is linked with your program  Each thread is represented simply by: PC Registers Stack Small control block  All thread operations are at the user-level: Creating a new thread switching between threads synchronizing between threads

12 4.12 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 User-Level Threads  User-level threads the thread scheduler is part of a library, outside the kernel thread context switching and scheduling is done by the library Can either use cooperative or pre-emptive threads  cooperative threads are implemented by:  CreateThread(), DestroyThread(), Yield(), Suspend(), etc.  pre-emptive threads are implemented with a timer (signal)  where the timer handler decides which thread to run next

13 4.13 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 User-Level vs. Kernel Threads User-Level  Managed by application  Kernel not aware of thread  Context switching cheap  Can create many more  Must be used with care Kernel-Level  Managed by kernel  Consumes kernel resources  Context switching expensive  Number limited by kernel resources  Simpler to use Key issue: kernel threads provide virtual processors to user-level threads, but if all of kernel threads block, then all user-level threads will block even if the program logic allows them to proceed

14 4.14 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Multiplexing User-Level Threads  The user-level thread package sees a “virtual” processor(s) it schedules user-level threads on these virtual processors each “virtual” processor is implemented by a kernel thread  The big picture: Create as many kernel threads as there are processors Create as many user-level threads as the application needs Multiplex user-level threads on top of the kernel-level threads  Why not just create as many kernel-level threads as app needs? Context switching Resources

15 4.15 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Multithreading Models Mapping user threads to kernel threads:  Many-to-One  One-to-One  Many-to-Many

16 4.16 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Many-to-One  Many user-level threads mapped to single kernel thread Fast - no system calls required Few system dependencies; portable No parallel execution of threads - can’t exploit multiple CPUs All threads block when one uses synchronous I/O  Examples: Solaris Green Threads GNU Portable Threads

17 4.17 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 One-to-One  Each user-level thread maps to kernel thread More concurrency Better multiprocessor performance Each user thread requires creation of kernel thread Each thread requires kernel resources; limits number of total threads  Examples Windows NT/XP/2000 Linux Solaris 9 and later

18 4.18 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Many-to-Many Model  Allows many user level threads to be mapped to many kernel threads Allows the operating system to create a sufficient number of kernel threads If U < L, no benefits of multithreading If U > L, some threads may have to wait for an LWP to run  Examples: Solaris prior to version 9 Windows NT/2000 with the ThreadFiber package

19 4.19 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Two-level Model  Similar to M:M, except that a user thread may be bound to kernel thread  Examples IRIX HP-UX Tru64 UNIX Solaris 8 and earlier

20 4.20 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Multithreading Issues  Semantics of fork() and exec() system calls Does fork() duplicate only the calling thread or all threads?  Thread cancellation Asynchronous vs. Deferred Cancellation  Signal handling Which thread to deliver it to?  Thread pools Creating new threads, unlimited number of threads  Scheduler activations Maintaining the correct number of scheduler threads

21 4.21 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 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

22 4.22 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 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 1. Signal is generated by particular event 2. Signal is delivered to a process 3. 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 threa to receive all signals for the process

23 4.23 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 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

24 4.24 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Scheduler Activations  Both M:M and Two-level models require communication to maintain the appropriate number of kernel threads allocated to the application  Scheduler activations provide upcalls - a communication mechanism from the kernel to the thread library  This communication allows an application to maintain the correct number kernel threads

25 4.25 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Pthreads (POSIX Threads)  A POSIX standard (IEEE 1003.1c) API for thread creation and synchronization  API specifies behavior of the thread library, implementation is up to development of the library  Common in UNIX operating systems (Solaris, Linux, Mac OS X)

26 4.26 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Some of the Pthreads function calls. Example: POSIX Threads (1) Example from Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

27 4.27 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 An example program using threads. POSIX Threads (2)... Example from Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

28 4.28 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Figure 2-15. An example program using threads. POSIX Threads (3)... Example from Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

29 4.29 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Linux Threads  Linux refers to them as tasks rather than threads  Thread creation is done through clone() system call  clone() allows a child task to share the address space of the parent task (process)

30 4.30 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Windows XP Threads  Implements the one-to-one mapping  Each thread contains A thread id Register set Separate user and kernel stacks Private data storage area  The register set, stacks, and private storage area are known as the context of the threads

31 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Silberschatz, Galvin and Gagne ©2007 End of Chapter 4

32 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Silberschatz, Galvin and Gagne ©2007 Backup Foils

33 4.33 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Cooperative Threads A cooperative thread runs until it decides to give up the CPU main() { tid t1 = CreateThread(fn, arg); … Yield(t1); } fn(int arg) { … Yield(any); }

34 4.34 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Cooperative Threads  Cooperative threads use non pre-emptive scheduling  Advantages: Simple  Scientific apps  Disadvantages: For badly written code  Scheduler gets invoked only when Yield is called  A thread could yield the processor when it blocks for I/O

35 4.35 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Non-Cooperative Threads  No explicit control passing among threads  Rely on a scheduler to decide which thread to run  A thread can be pre-empted at any point  Often called pre-emptive threads  Most modern thread packages use this approach

36 4.36 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Key Data Structures your process address space your program: for i (1, 10, I++) thread_fork(I); …. user-level thread code: proc thread_fork()… proc thread_block()… proc thread_exit()... queue of thread control blocks per-thread stacks your data (shared by all your threads):

37 4.37 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Creation of a new thread when a message arrives. (a) Before the message arrives. (b) After the message arrives. Pop-Up Threads

38 4.38 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Windows XP Threads

39 4.39 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Java Threads  Java threads are managed by the JVM  Java threads may be created by: Implementing the Runnable interface

40 4.40 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Java Threads - Example Program

41 4.41 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Java Threads - Example Program

42 4.42 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Java Thread States

43 4.43 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Java Threads - Producer-Consumer

44 4.44 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Java Threads - Producer-Consumer

45 4.45 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Java Threads - Producer-Consumer

46 4.46 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Thread Cancellation Deferred cancellation in Java Interrupting a thread

47 4.47 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Thread Cancellation Deferred cancellation in Java Checking interruption status

48 4.48 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Thread Specific Data  Allows each thread to have its own copy of data  Useful when you do not have control over the thread creation process (i.e., when using a thread pool)

49 4.49 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Thread Specific Data Thread-specific data in Java.

50 4.50 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Solaris 2 Threads

51 4.51 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Solaris Process

52 4.52 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Thread Pools  Java provides 3 thread pool architectures: 1. Single thread executor - pool of size 1. 2. Fixed thread executor - pool of fixed size. 3. Cached thread pool - pool of unbounded size

53 4.53 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Thread Pools A task to be serviced in a thread pool

54 4.54 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Thread Pools Creating a thread pool in Java


Download ppt "Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Silberschatz, Galvin and Gagne ©2007 Chapter 4: Threads."

Similar presentations


Ads by Google