Professional Documents
Culture Documents
Chapter 4: Threads Chapter 4: Threads: Silberschatz, Galvin and Gagne ©2013 Operating System Concepts - 9 Edition
Chapter 4: Threads Chapter 4: Threads: Silberschatz, Galvin and Gagne ©2013 Operating System Concepts - 9 Edition
Chapter 4: Threads Chapter 4: Threads: Silberschatz, Galvin and Gagne ©2013 Operating System Concepts - 9 Edition
Operating System Concepts – 9th Edition Silberschatz, Galvin and Gagne ©2013
Chapter 4: Threads
Overview
Multicore
M lti P
Programming
i
Multithreading Models
Thread Libraries
Implicit Threading
Threading Issues
Operating System Examples
Operating System Concepts – 9th Edition 4.2 Silberschatz, Galvin and Gagne ©2013
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, Windows, and Java
th d libraries
thread lib i
To explore several strategies that provide implicit threading
To examine issues related to multithreaded programming
To cover operating system support for threads in Windows and
Linux
Operating System Concepts – 9th Edition 4.3 Silberschatz, Galvin and Gagne ©2013
Motivation
Operating System Concepts – 9th Edition 4.4 Silberschatz, Galvin and Gagne ©2013
Multithreaded Server Architecture
Operating System Concepts – 9th Edition 4.5 Silberschatz, Galvin and Gagne ©2013
Benefits
Operating System Concepts – 9th Edition 4.6 Silberschatz, Galvin and Gagne ©2013
Multicore Programming
Operating System Concepts – 9th Edition 4.7 Silberschatz, Galvin and Gagne ©2013
Multicore Programming (Cont.)
Types of parallelism
Data
D t parallelism
ll li – distributes
di t ib t subsets
b t off the
th same data
d t
across multiple cores, same operation on each
Task parallelism – distributing threads across cores, each
thread performing unique operation
As # of threads grows, so does architectural support for threading
CPUs have cores as well as hardware threads
Consider Oracle SPARC T4 with 8 cores, and 8 hardware
threads per core
Operating System Concepts – 9th Edition 4.8 Silberschatz, Galvin and Gagne ©2013
Concurrency vs. Parallelism
Concurrent execution on single-core system:
Operating System Concepts – 9th Edition 4.9 Silberschatz, Galvin and Gagne ©2013
Single and Multithreaded Processes
Operating System Concepts – 9th Edition 4.10 Silberschatz, Galvin and Gagne ©2013
Amdahl’s Law
Identifies performance gains from adding additional cores to an
application that has both serial and parallel components
S is serial portion
N processing cores
Operating System Concepts – 9th Edition 4.11 Silberschatz, Galvin and Gagne ©2013
User Threads and Kernel Threads
Operating System Concepts – 9th Edition 4.12 Silberschatz, Galvin and Gagne ©2013
Multithreading Models
Many-to-One
One-to-One
Many-to-Many
Operating System Concepts – 9th Edition 4.13 Silberschatz, Galvin and Gagne ©2013
Many-to-One
Operating System Concepts – 9th Edition 4.14 Silberschatz, Galvin and Gagne ©2013
One-to-One
Each user-level thread maps to kernel thread
Creating
C ti a user-level
l l th
thread
d creates
t a kkernell th
thread
d
More concurrency than many-to-one
Number of threads per process sometimes
restricted due to overhead
Examples
Windows
Linux
Solaris 9 and later
Operating System Concepts – 9th Edition 4.15 Silberschatz, Galvin and Gagne ©2013
Many-to-Many Model
Allows many user level threads to be
mapped
pp to many
y kernel threads
Allows the operating system to create
a sufficient number of kernel threads
Solaris
S l i prior
i tto version
i 9
Windows with the ThreadFiber
package
Operating System Concepts – 9th Edition 4.16 Silberschatz, Galvin and Gagne ©2013
Two-level Model
Operating System Concepts – 9th Edition 4.17 Silberschatz, Galvin and Gagne ©2013
Thread Libraries
Operating System Concepts – 9th Edition 4.18 Silberschatz, Galvin and Gagne ©2013
Pthreads
Operating System Concepts – 9th Edition 4.19 Silberschatz, Galvin and Gagne ©2013
Pthreads Example
Operating System Concepts – 9th Edition 4.20 Silberschatz, Galvin and Gagne ©2013
Pthreads Example (Cont.)
Operating System Concepts – 9th Edition 4.21 Silberschatz, Galvin and Gagne ©2013
Pthreads Code for Joining 10 Threads
Operating System Concepts – 9th Edition 4.22 Silberschatz, Galvin and Gagne ©2013
OpenMP
Set of compiler directives and an
API for C, C++, FORTRAN
Provides support for parallel
programming in shared-memory
environments
Identifies parallel regions –
blocks of code that can run in
parallel
#pragma
#p g omp
p p
parallel
Create as many threads as there are
cores
#pragma omp parallel for
for(i=0;i<N;i++) {
c[i] = a[i] + b[i];
}
Run for loop in parallel
Operating System Concepts – 9th Edition 4.23 Silberschatz, Galvin and Gagne ©2013
Scheduler Activations
Both M:M and Two-level models require
communication to maintain the appropriate
n mber of kernel threads allocated to the
number
application
Typically use an intermediate data structure
between user and kernel threads – lightweight
process (LWP)
Appears
pp to be a virtual p
processor on which
process can schedule user thread to run
Each LWP attached to kernel thread
H
How many LWP
LWPs tto create?
t ?
Scheduler activations provide upcalls - a
communication mechanism from the kernel to
the upcall handler in the thread library
This communication allows an application to
maintain the correct number kernel threads
Operating System Concepts – 9th Edition 4.24 Silberschatz, Galvin and Gagne ©2013
End of Chapter 4
Operating System Concepts – 9th Edition Silberschatz, Galvin and Gagne ©2013