Professional Documents
Culture Documents
Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne ©2009
Chapter 4: Threads
Overview
Multithreading Models
Thread Libraries
Threading Issues
Operating System Examples
Windows XP Threads
Linux Threads
Operating System Concepts – 8th Edition 4.2 Silberschatz, Galvin and Gagne ©2009
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, Win32, and Java thread libraries
Operating System Concepts – 8th Edition 4.3 Silberschatz, Galvin and Gagne ©2009
Motivation
Threads run within application
Basic unit of CPU Utilization
It comprises of Thread Id,PC, register set, stack
Multiple tasks with the application can be implemented by separate
threads
Update display
Fetch data
Spell checking
Answer a network request
Process creation is heavy-weight while thread creation is light-
weight
Can simplify code, increase efficiency
Kernels are generally multithreaded
Operating System Concepts – 8th Edition 4.4 Silberschatz, Galvin and Gagne ©2009
Single and Multithreaded Processes
Operating System Concepts – 8th Edition 4.5 Silberschatz, Galvin and Gagne ©2009
Benefits
Responsiveness:
Multithreading an interactive application may allow a program to
continue running even if part of it is blocked or is performing a
lengthy operation, thereby increasing responsiveness to the user
Resource Sharing
The benefit of sharing code and data is that it allows an
application to have several different threads of activity within the
same address space.
Economy
threads share the resources of the process to which they belong,
it is more economical to create and context-switch threads.
Operating System Concepts – 8th Edition 4.6 Silberschatz, Galvin and Gagne ©2009
Multicore Programming
Multicore systems putting pressure on programmers, challenges
include:
Dividing activities: identifying areas that can be divided into
separate concurrent tasks.
Balance: while identifying look for equal work equal value
tasks
Data splitting: data accessed and manipulated by the tasks
must be divided
Data dependency: should look for data dependencies
Testing and debugging:
Operating System Concepts – 8th Edition 4.7 Silberschatz, Galvin and Gagne ©2009
Multithreaded Server Architecture
Operating System Concepts – 8th Edition 4.8 Silberschatz, Galvin and Gagne ©2009
Concurrent Execution on a
Single-core System
Operating System Concepts – 8th Edition 4.9 Silberschatz, Galvin and Gagne ©2009
Parallel Execution on a
Multicore System
Operating System Concepts – 8th Edition 4.10 Silberschatz, Galvin and Gagne ©2009
User Threads
Thread management done by user-level threads library
Operating System Concepts – 8th Edition 4.11 Silberschatz, Galvin and Gagne ©2009
Kernel Threads
Supported by the Kernel
Examples
Windows XP/2000
Solaris
Linux
Tru64 UNIX
Mac OS X
Operating System Concepts – 8th Edition 4.12 Silberschatz, Galvin and Gagne ©2009
Multithreading Models
Many-to-One
One-to-One
Many-to-Many
Operating System Concepts – 8th Edition 4.13 Silberschatz, Galvin and Gagne ©2009
Many-to-One
Many user-level threads mapped to single kernel thread
Thread management is done by the thread library in the user space
The entire process will block if a thread makes a blocking system
call
Because only one thread can access the kernel at a time, multiple
threads are unable to run in parallel on multiprocessor system.
Examples:
Solaris Green Threads
GNU Portable Threads
Operating System Concepts – 8th Edition 4.14 Silberschatz, Galvin and Gagne ©2009
Many-to-One Model
Operating System Concepts – 8th Edition 4.15 Silberschatz, Galvin and Gagne ©2009
One-to-One
Each user-level thread maps to kernel thread
Provides more concurrency than many to one, by allowing another
thread to run when a thread make a blocking system call
Allows multiple threads to run in parallel on multiprocessor system.
Operating System Concepts – 8th Edition 4.16 Silberschatz, Galvin and Gagne ©2009
One-to-one Model
Operating System Concepts – 8th Edition 4.17 Silberschatz, Galvin and Gagne ©2009
Many-to-Many Model
Operating System Concepts – 8th Edition 4.18 Silberschatz, Galvin and Gagne ©2009
Many-to-Many Model
Operating System Concepts – 8th Edition 4.19 Silberschatz, Galvin and Gagne ©2009
Two-level Model
Examples
IRIX
HP-UX
Tru64 UNIX
Solaris 8 and earlier
Operating System Concepts – 8th Edition 4.20 Silberschatz, Galvin and Gagne ©2009
Two-level Model
Operating System Concepts – 8th Edition 4.21 Silberschatz, Galvin and Gagne ©2009
Consider three processes, all arriving at time zero,
with total execution time of 10, 20 and 30 units,
respectively. Each process spends the first 20% of
execution time doing I/O, the next 70% of time
doing computation, and the last 10% of time doing
I/O again. The operating system uses a shortest
remaining compute time first scheduling algorithm
and schedules a new process either when the
running process gets blocked on I/O or when the
running process finishes its compute burst. Assume
that all I/O operations can be overlapped as much
as possible. For what percentage of time does the
CPU remain idle?
Operating System Concepts – 8th Edition 4.22 Silberschatz, Galvin and Gagne ©2009