Chapter 4 Threads
Chapter 4 Threads
Concurrency
Operating System Concepts – 10th Edition Silberschatz, Galvin and Gagne ©2018
Chapter 4: Threads
Overview
Multicore Programming
Multithreading Models
Thread Libraries
Implicit Threading
Threading Issues
Operating System Examples
Operating System Concepts – 10th Edition 4.2 Silberschatz, Galvin and Gagne ©2018
Objectives
Identify the basic components of a thread, and contrast threads
and processes
Describe the benefits and challenges of designng
multithreaded applications
Illustrate different approaches to implicit threading including
thread pools, fork-join, and Grand Central Dispatch
Describe how the Windows and Linux operating systems
represent threads
Design multithreaded applications using the Pthreads, Java,
and Windows threading APIs
Operating System Concepts – 10th Edition 4.3 Silberschatz, Galvin and Gagne ©2018
Motivation
Operating System Concepts – 10th Edition 4.4 Silberschatz, Galvin and Gagne ©2018
Single and Multithreaded Processes
Operating System Concepts – 10th Edition 4.5 Silberschatz, Galvin and Gagne ©2018
Multithreaded Server Architecture
Operating System Concepts – 10th Edition 4.6 Silberschatz, Galvin and Gagne ©2018
Benefits
Reference:
https://www.tutorialspoint.com/operating_system/os_multi_t
hreading.htm
Operating System Concepts – 10th Edition 4.7 Silberschatz, Galvin and Gagne ©2018
Multicore Programming
Operating System Concepts – 10th Edition 4.8 Silberschatz, Galvin and Gagne ©2018
Concurrency vs. Parallelism
Concurrent execution on single-core system:
Operating System Concepts – 10th Edition 4.9 Silberschatz, Galvin and Gagne ©2018
Multicore Programming
Types of parallelism
Data parallelism – distributes subsets of the same data
across multiple cores, same operation on each
Task parallelism – distributing threads across cores, each
thread performing unique operation
Reference:
https://www.tutorialspoint.com/data-parallelism-vs-task-parall
elism
Operating System Concepts – 10th Edition 4.10 Silberschatz, Galvin and Gagne ©2018
Data and Task Parallelism
Operating System Concepts – 10th Edition 4.11 Silberschatz, Galvin and Gagne ©2018
User Threads and Kernel Threads
Operating System Concepts – 10th Edition 4.12 Silberschatz, Galvin and Gagne ©2018
User and Kernel Threads
Reference:
https://www.tutorialspoint.com/operating_system/os_multi_threading.htm
Operating System Concepts – 10th Edition 4.13 Silberschatz, Galvin and Gagne ©2018
Multithreading Models
Many-to-One
One-to-One
Many-to-Many
Operating System Concepts – 10th Edition 4.14 Silberschatz, Galvin and Gagne ©2018
Many-to-One
Operating System Concepts – 10th Edition 4.15 Silberschatz, Galvin and Gagne ©2018
One-to-One
Each user-level thread maps to kernel thread
Creating a user-level thread creates a kernel thread
More concurrency than many-to-one
Number of threads per process sometimes
restricted due to overhead
Examples
Windows
Linux
Operating System Concepts – 10th Edition 4.16 Silberschatz, Galvin and Gagne ©2018
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
Windows with the ThreadFiber
package
Otherwise not very common
Operating System Concepts – 10th Edition 4.17 Silberschatz, Galvin and Gagne ©2018
Two-level Model
Similar to M:M, except that it allows a user thread to be
bound to kernel thread
Operating System Concepts – 10th Edition 4.18 Silberschatz, Galvin and Gagne ©2018
Thread Libraries
Operating System Concepts – 10th Edition 4.19 Silberschatz, Galvin and Gagne ©2018
Pthreads
Operating System Concepts – 10th Edition 4.20 Silberschatz, Galvin and Gagne ©2018
Pthreads Example
Operating System Concepts – 10th Edition 4.21 Silberschatz, Galvin and Gagne ©2018
Pthreads Example (cont)
Operating System Concepts – 10th Edition 4.22 Silberschatz, Galvin and Gagne ©2018
Pthreads Code for Joining 10 Threads
Operating System Concepts – 10th Edition 4.23 Silberschatz, Galvin and Gagne ©2018
Threading Issues
Semantics of fork() and exec() system calls
Signal handling
Synchronous and asynchronous
Thread cancellation of target thread
Asynchronous or deferred
Thread-local storage
Scheduler Activations
Operating System Concepts – 10th Edition 4.24 Silberschatz, Galvin and Gagne ©2018
Semantics of fork() and exec()
Operating System Concepts – 10th Edition 4.25 Silberschatz, Galvin and Gagne ©2018
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 by one of two signal handlers:
1. default
2. user-defined
Every signal has default handler that kernel runs when
handling signal
User-defined signal handler can override default
For single-threaded, signal delivered to process
Operating System Concepts – 10th Edition 4.26 Silberschatz, Galvin and Gagne ©2018
Signal Handling (Cont.)
Where should a signal be delivered for multi-threaded?
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 – 10th Edition 4.27 Silberschatz, Galvin and Gagne ©2018
Thread Cancellation
Terminating a thread before it has finished
Thread to be canceled is target thread
Two general approaches:
Asynchronous cancellation terminates the target thread
immediately
Deferred cancellation allows the target thread to periodically
check if it should be cancelled
Pthread code to create and cancel a thread:
Operating System Concepts – 10th Edition 4.28 Silberschatz, Galvin and Gagne ©2018
Thread Cancellation (Cont.)
Invoking thread cancellation requests cancellation, but actual
cancellation depends on thread state
Operating System Concepts – 10th Edition 4.29 Silberschatz, Galvin and Gagne ©2018
Thread Cancellation in Java
Deferred cancellation uses the interrupt() method, which sets the
interrupted status of a thread.
Operating System Concepts – 10th Edition 4.30 Silberschatz, Galvin and Gagne ©2018
End of Chapter 4
Operating System Concepts – 10th Edition Silberschatz, Galvin and Gagne ©2018