Chapter 4: Threads
Operating System Concepts – 9th Silberschatz, Galvin and Gagne
Chapter 4: Threads
● Overview
● Multicore Programming
● Multithreading Models
● Thread Libraries
● Implicit Threading
● Threading Issues
● Operating System Examples
Operating System Concepts – 9th 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 4.3 Silberschatz, Galvin and Gagne
Concept of Thread
● A thread is also known as a lightweight process. The idea is to
achieve parallelism by dividing a process into multiple threads. For
example, in a browser, multiple tabs can be different threads. MS
Word uses multiple threads: one thread to format the text, another
thread to process inputs, etc.
● Multithreading is a technique used in operating systems to
improve the performance and responsiveness of computer
systems. Multithreading allows multiple threads (i.e., lightweight
processes) to share the same resources of a single process, such
as the CPU, memory, and I/O devices.
Operating System Concepts – 9th 4.4 Silberschatz, Galvin and Gagne
Multithreaded Server Architecture
Operating System Concepts – 9th 4.5 Silberschatz, Galvin and Gagne
Benefits
● Responsiveness – may allow continued execution if part
of process is blocked, especially important for user
interfaces
● Resource Sharing – threads share resources of process,
easier than shared memory or message passing
● Economy – cheaper than process creation, thread
switching lower overhead than context switching
● Scalability – process can take advantage of
multiprocessor architectures
Operating System Concepts – 9th 4.6 Silberschatz, Galvin and Gagne
Multicore Programming
● Multicore or multiprocessor systems putting pressure on
programmers, challenges include:
● Dividing activities
● Balance
● Data splitting
● Data dependency
● Testing and debugging
● Parallelism implies a system can perform more than one task
simultaneously
● Concurrency supports more than one task making progress
● Single processor / core, scheduler providing concurrency
Operating System Concepts – 9th 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 4.8 Silberschatz, Galvin and Gagne
Concurrency vs. Parallelism
● Concurrent execution on single-core system:
● Parallelism on a multi-core system:
Operating System Concepts – 9th 4.9 Silberschatz, Galvin and Gagne
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
Serial portion of an application has disproportionate
effect on performance gained by adding additional cores
● But does the law take into account contemporary multicore
systems?
Operating System Concepts – 9th 4. 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 4. Silberschatz, Galvin and Gagne
Multithreading Models
● Many-to-One
● One-to-One
● Many-to-Many
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
Many-to-One
● Many user-level threads mapped to
single kernel thread
● One thread blocking causes all to
block
● Multiple threads may not run in
parallel on muticore system
because only one may be in kernel
at a time
● Few systems currently use this
model
● Examples:
● Solaris Green Threads
● GNU Portable Threads
Operating System Concepts – 9th 4. 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 4. 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 4. Silberschatz, Galvin and Gagne
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 4. Silberschatz, Galvin and Gagne
Difference Between Thread & Process
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
Windows Multithreaded C Program
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
Windows Multithreaded C Program (Cont.)
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
Java Threads
● Java threads are managed by the JVM
● Typically implemented using the threads model
provided by underlying OS
● Java threads may be created by:
● Extending Thread class
● Implementing the Runnable interface
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
Java Multithreaded Program
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
Java Multithreaded Program (Cont.)
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
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
● Separating task to be performed from mechanics of
creating task allows different strategies for running
task
4 [Link] could be scheduled to run periodically
● Windows API supports thread pools:
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
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 – 9th 4. Silberschatz, Galvin and Gagne
Thread Cancellation (Cont.)
● Invoking thread cancellation requests cancellation, but
actual cancellation depends on thread state
● If thread has cancellation disabled, cancellation remains
pending until thread enables it
● Default type is deferred
● Cancellation only occurs when thread reaches
cancellation point
4 I.e. pthread_testcancel()
4 Then cleanup handler is invoked
● On Linux systems, thread cancellation is handled through
signals
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
Thread-Local Storage
● Thread-local storage (TLS) 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)
● Different from local variables
● Local variables visible only during single function
invocation
● TLS visible across function invocations
● Similar to static data
● TLS is unique to each thread
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
Operating System Examples
● Windows Threads
● Linux Threads
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
Windows Threads
● Windows implements the Windows API – primary API for
Win 98, Win NT, Win 2000, Win XP, and Win 7
● Implements the one-to-one mapping, kernel-level
● Each thread contains
● A thread id
● Register set representing state of processor
● Separate user and kernel stacks for when thread
runs in user mode or kernel mode
● Private data storage area used by run-time libraries
and dynamic link libraries (DLLs)
● The register set, stacks, and private storage area are
known as the context of the thread
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
Windows Threads (Cont.)
● The primary data structures of a thread include:
● ETHREAD (executive thread block) – includes
pointer to process to which thread belongs and to
KTHREAD, in kernel space
● KTHREAD (kernel thread block) – scheduling and
synchronization info, kernel-mode stack, pointer to
TEB, in kernel space
● TEB (thread environment block) – thread id, user-
mode stack, thread-local storage, in user space
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
Windows Threads Data Structures
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
Linux Threads
● Linux refers to them as tasks rather than threads
● Thread creation is done through clone() system call
● clone() allows a child task to share the address space
of the parent task (process)
● Flags control behavior
● struct task_struct points to process data structures
(shared or unique)
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
Symmetric Multiprocessing(SMP)
The systems have multiple processors working in parallel that share
the computer clock, memory, bus, peripheral devices etc. There are
mainly two types of multiprocessor systems. These are −
●Symmetric Multiprocessor System
●Asymmetric Multiprocessor System
In symmetric multiprocessing, multiple processors share a
common memory and operating system. All of these processors work
in tandem to execute processes. The operating system treats all the
processors equally, and no processor is reserved for special purposes.
Features of Multiprocessing:
●Symmetric multiprocessing is also known as tightly coupled
multiprocessing as all the CPU’s are connected at the bus level and
have access to a shared memory.
●All the parallel processors in symmetric multiprocessing have their
private cache memory to decrease system bus traffic and also reduce
the data access time.
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
SMP
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
SMP
● Symmetric multiprocessing systems allow a processor to execute
any process no matter where its data is located in memory. The
only stipulation is that a process should not be executing on two
or more processors at the same time.
● In general, the symmetric multiprocessing system does not
exceed 16 processors as this amount can be comfortably handled
by the operating system.
Advantages of Symmetric Multiprocessing
Some advantages of symmetric multiprocessing are −
● The throughput of the system is increased in symmetric
multiprocessing. As there are multiple processors, more processes
are executed.
● Symmetric multiprocessing systems are much more reliable than
single processor systems. Even if a processor fails, the system still
endures. Only its efficiency is decreased a little.
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
SMP
Disadvantages of Symmetric Multiprocessing
Some disadvantages of symmetric multiprocessing are −
●The operating system handles all the processors in symmetric
multiprocessing system. This leads to a complicated operating
system that is difficult to design and manage.
●All the processors in symmetric multiprocessing system are
connected to the same main memory. So a large main memory is
required to accommodate all these processors.
Operating System Concepts – 9th 4. Silberschatz, Galvin and Gagne
End of Chapter 4
Operating System Concepts – 9th Silberschatz, Galvin and Gagne