Threads
Threads
Operating System Concepts – 9th Edition 4.2 Silberschatz, Galvin and Gagne
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 thread libraries
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
Motivation
Operating System Concepts – 9th Edition 4.4 Silberschatz, Galvin and Gagne
Multithreaded Server Architecture
Operating System Concepts – 9th Edition 4.5 Silberschatz, Galvin and Gagne
Benefits
Operating System Concepts – 9th Edition 4.6 Silberschatz, Galvin and Gagne
Multicore Programming
Operating System Concepts – 9th Edition 4.7 Silberschatz, Galvin and Gagne
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.8 Silberschatz, Galvin and Gagne
Concurrency vs. Parallelism
Concurrent execution on single-core system:
Operating System Concepts – 9th Edition 4.9 Silberschatz, Galvin and Gagne
Single and Multithreaded Processes
Operating System Concepts – 9th Edition 4.10 Silberschatz, Galvin and Gagne
User Threads and Kernel Threads
User threads - management done by user-level threads library
Three primary thread libraries:
POSIX Pthreads
Windows threads
Java threads
Kernel threads - Supported by the Kernel
Examples – virtually all general purpose operating systems,
including:
Windows
Solaris
Linux
Tru64 UNIX
Mac OS X
Operating System Concepts – 9th Edition 4.11 Silberschatz, Galvin and Gagne
Multithreading Models
Many-to-One
One-to-One
Many-to-Many
Operating System Concepts – 9th Edition 4.12 Silberschatz, Galvin and Gagne
Many-to-One
Operating System Concepts – 9th Edition 4.13 Silberschatz, Galvin and Gagne
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.14 Silberschatz, Galvin and Gagne
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.15 Silberschatz, Galvin and Gagne
Thread Libraries
Operating System Concepts – 9th Edition 4.16 Silberschatz, Galvin and Gagne
Pthreads
Operating System Concepts – 9th Edition 4.17 Silberschatz, Galvin and Gagne