CH 4
CH 4
Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne ©2009
Chapter 4: Threads
Overview
Multithreading Models
Thread Libraries
Threading Issues
Operating System Examples
Windows XP Threads
Linux Threads
Operating System Concepts – 8th Edition 4.2 Silberschatz, Galvin and Gagne ©2009
Objectives
To introduce the notion of a thread — a fundamental unit of CPU utilization that
forms the basis of multithreaded computer systems
To discuss the APIs for the Pthreads, Win32, and Java thread libraries
Operating System Concepts – 8th Edition 4.3 Silberschatz, Galvin and Gagne ©2009
Motivation
Threads run within application
Multiple tasks with the application can be implemented by separate threads
Update display
Fetch data
Spell checking
Answer a network request
Process creation is heavy-weight while thread creation is light-weight
Can simplify code, increase efficiency
Kernels are generally multithreaded
Operating System Concepts – 8th Edition 4.4 Silberschatz, Galvin and Gagne ©2009
Single and Multithreaded Processes
Operating System Concepts – 8th Edition 4.5 Silberschatz, Galvin and Gagne ©2009
Benefits
Responsiveness
Resource Sharing
Economy
Scalability
Operating System Concepts – 8th Edition 4.6 Silberschatz, Galvin and Gagne ©2009
Multicore Programming
Multicore systems putting pressure on programmers, challenges include:
Dividing activities
Balance
Data splitting
Data dependency
Testing and debugging
Operating System Concepts – 8th Edition 4.7 Silberschatz, Galvin and Gagne ©2009
Multithreaded Server Architecture
Operating System Concepts – 8th Edition 4.8 Silberschatz, Galvin and Gagne ©2009
Concurrent Execution on a
Single-core System
Operating System Concepts – 8th Edition 4.9 Silberschatz, Galvin and Gagne ©2009
Parallel Execution on a
Multicore System
Operating System Concepts – 8th Edition 4.10 Silberschatz, Galvin and Gagne ©2009
User Threads
Thread management done by user-level threads library
Operating System Concepts – 8th Edition 4.11 Silberschatz, Galvin and Gagne ©2009
Kernel Threads
Supported by the Kernel
Examples
Windows XP/2000
Solaris
Linux
Tru64 UNIX
Mac OS X
Operating System Concepts – 8th Edition 4.12 Silberschatz, Galvin and Gagne ©2009
Multithreading Models
Many-to-One
One-to-One
Many-to-Many
Operating System Concepts – 8th Edition 4.13 Silberschatz, Galvin and Gagne ©2009
Many-to-One
Many user-level threads mapped to single kernel thread
Examples:
Solaris Green Threads
GNU Portable Threads
Operating System Concepts – 8th Edition 4.14 Silberschatz, Galvin and Gagne ©2009
Many-to-One Model
Operating System Concepts – 8th Edition 4.15 Silberschatz, Galvin and Gagne ©2009
One-to-One
Each user-level thread maps to kernel thread
Examples
Windows NT/XP/2000
Linux
Solaris 9 and later
Operating System Concepts – 8th Edition 4.16 Silberschatz, Galvin and Gagne ©2009
One-to-one Model
Operating System Concepts – 8th Edition 4.17 Silberschatz, Galvin and Gagne ©2009
Many-to-Many Model
Operating System Concepts – 8th Edition 4.18 Silberschatz, Galvin and Gagne ©2009
Many-to-Many Model
Operating System Concepts – 8th Edition 4.19 Silberschatz, Galvin and Gagne ©2009
Two-level Model
Similar to M:M, except that it allows a user thread to be bound to kernel
thread
Examples
IRIX
HP-UX
Tru64 UNIX
Solaris 8 and earlier
Operating System Concepts – 8th Edition 4.20 Silberschatz, Galvin and Gagne ©2009
Two-level Model
Operating System Concepts – 8th Edition 4.21 Silberschatz, Galvin and Gagne ©2009
Thread Libraries
Thread library provides programmer with API for creating and managing
threads
Operating System Concepts – 8th Edition 4.22 Silberschatz, Galvin and Gagne ©2009
Pthreads
May be provided either as user-level or kernel-level
A POSIX standard (IEEE 1003.1c) API for thread creation and synchronization
Operating System Concepts – 8th Edition 4.23 Silberschatz, Galvin and Gagne ©2009
Pthreads Example
Operating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009
Pthreads Example (Cont.)
Operating System Concepts – 8th Edition 4.25 Silberschatz, Galvin and Gagne ©2009
Win32 API Multithreaded C Program
Operating System Concepts – 8th Edition 4.26 Silberschatz, Galvin and Gagne ©2009
Win32 API Multithreaded C Program (Cont.)
Operating System Concepts – 8th Edition 4.27 Silberschatz, Galvin and Gagne ©2009
Java Threads
Java threads are managed by the JVM
Operating System Concepts – 8th Edition 4.28 Silberschatz, Galvin and Gagne ©2009
Java Multithreaded Program
Operating System Concepts – 8th Edition 4.29 Silberschatz, Galvin and Gagne ©2009
Java Multithreaded Program (Cont.)
Operating System Concepts – 8th Edition 4.30 Silberschatz, Galvin and Gagne ©2009
Threading Issues
Semantics of fork() and exec() system calls
Signal handling
Synchronous and asynchronous
Operating System Concepts – 8th Edition 4.31 Silberschatz, Galvin and Gagne ©2009
Threading Issues (Cont.)
Thread pools
Thread-specific data
Create Facility needed for data private to thread
Scheduler activations
Operating System Concepts – 8th Edition 4.32 Silberschatz, Galvin and Gagne ©2009
Semantics of fork() and exec()
Does fork() duplicate only the calling thread or all threads?
Operating System Concepts – 8th Edition 4.33 Silberschatz, Galvin and Gagne ©2009
Thread Cancellation
Terminating a thread before it has finished
Operating System Concepts – 8th Edition 4.34 Silberschatz, Galvin and Gagne ©2009
Signal Handling
Signals are used in UNIX systems to notify a process that a particular event
has occurred.
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
Operating System Concepts – 8th Edition 4.35 Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition 4.36 Silberschatz, Galvin and Gagne ©2009
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)
Operating System Concepts – 8th Edition 4.37 Silberschatz, Galvin and Gagne ©2009
Scheduler Activations
Both M:M and Two-level models require communication to maintain the
appropriate number of kernel threads allocated to the application
Operating System Concepts – 8th Edition 4.38 Silberschatz, Galvin and Gagne ©2009
Lightweight Processes
Operating System Concepts – 8th Edition 4.39 Silberschatz, Galvin and Gagne ©2009
End of Chapter 4
Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne ©2009