Chapter 4: Threads: Silberschatz, Galvin and Gagne ©2013 Operating System Concepts - 9 Edition
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 Programming
Multithreading Models
Operating System Concepts – 9th Edition 4.2 Silberschatz, Galvin and Gagne ©2013
Motivation
Operating System Concepts – 9th Edition 4.3 Silberschatz, Galvin and Gagne ©2013
Multithreaded Server Architecture
Operating System Concepts – 9th Edition 4.4 Silberschatz, Galvin and Gagne ©2013
Benefits
Operating System Concepts – 9th Edition 4.5 Silberschatz, Galvin and Gagne ©2013
Multicore Programming
Operating System Concepts – 9th Edition 4.6 Silberschatz, Galvin and Gagne ©2013
Multicore Programming (Cont.)
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
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.7 Silberschatz, Galvin and Gagne ©2013
Concurrency vs. Parallelism
Concurrent execution on single-core system:
Operating System Concepts – 9th Edition 4.8 Silberschatz, Galvin and Gagne ©2013
Single and Multithreaded Processes
Operating System Concepts – 9th Edition 4.9 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
That is, if application is 75% parallel / 25% serial, moving from 1 to 2 cores
results in speedup of 1.6 times
As N approaches infinity, speedup approaches 1 / S
But does the law take into account contemporary multicore systems?
Operating System Concepts – 9th Edition 4.10 Silberschatz, Galvin and Gagne ©2013
Amdahl’s Law
It predicts the speedup possible given: P: the percentage of the total work
that is parallel (expressed as a decimal) and N: the number of ways we split
the work.
The bottom of the fraction represents the percent of the original time we will
take - this equals the serial part plus one share of the parallel part. Dividing
1 by that gives us how many times faster we are working.
Say 60% of a job can be made parallel and we use 2 processors.
Substituting .60 for P and 2 for N into the formula gives:
Operating System Concepts – 9th Edition 4.11 Silberschatz, Galvin and Gagne ©2013
Amdahl’s Law
We would see a speedup of 1.43 times. 40% of the work needs to be done
in serial. The other 60% is split into two equal parts, so instead of taking
60% of the time only takes 30%. So we can get the work done in 70% of the
original time, or 1.43x faster.
Lets say we use 3 workers on the same job:
40% of the work still must be done in serial. The 60% that is parallel will only
take 20% or the original total time. Thus, the work gets done in 60% of the
original time or a speedup of 1.67 times.
Operating System Concepts – 9th Edition 4.12 Silberschatz, Galvin and Gagne ©2013
User Threads and Kernel Threads
Operating System Concepts – 9th Edition 4.13 Silberschatz, Galvin and Gagne ©2013
Multithreading Models
Many-to-One
One-to-One
Many-to-Many
Operating System Concepts – 9th Edition 4.14 Silberschatz, Galvin and Gagne ©2013
Many-to-One
Operating System Concepts – 9th Edition 4.15 Silberschatz, Galvin and Gagne ©2013
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
Solaris 9 and later
Operating System Concepts – 9th Edition 4.16 Silberschatz, Galvin and Gagne ©2013
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
Solaris prior to version 9
Windows with the ThreadFiber
package
Operating System Concepts – 9th Edition 4.17 Silberschatz, Galvin and Gagne ©2013
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 – 9th Edition 4.18 Silberschatz, Galvin and Gagne ©2013
Thread Libraries
Operating System Concepts – 9th Edition 4.19 Silberschatz, Galvin and Gagne ©2013
Pthreads
Operating System Concepts – 9th Edition 4.20 Silberschatz, Galvin and Gagne ©2013
Pthreads Example
Operating System Concepts – 9th Edition 4.21 Silberschatz, Galvin and Gagne ©2013
Pthreads
Pthreads Example (Cont.)Example (Cont.)
Operating System Concepts – 9th Edition 4.22 Silberschatz, Galvin and Gagne ©2013
Pthreads Code for Joining 10 Threads
Operating System Concepts – 9th Edition 4.23 Silberschatz, Galvin and Gagne ©2013
End of Chapter 4
Operating System Concepts – 9th Edition Silberschatz, Galvin and Gagne ©2013