You are on page 1of 22

Chapter 4: Threads

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

 To examine issues related to multithreaded programming

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.

 Scalability : Multi Threading on multiple CPU increases parallelism

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

 Three primary thread libraries:


 POSIX Pthreads
 Win32 threads
 Java threads

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.

 Creating a user thread requires creating a corresponding kernel


thread.
 Because the overhead of creating the kernel thread can burden the
performance of the application most implementations of this model
restrict the number of threads supported by the system
 Examples
 Windows NT/XP/2000
 Linux
 Solaris 9 and later

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

 Allows many user level threads to be mapped to many kernel


threads

 Allows the operating system to create a sufficient number of


kernel threads

 When a thread performs a blocking system call, the kernel can


schedule another thread for execution.

 Solaris prior to version 9

 Windows NT/2000 with the ThreadFiber package

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

 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 – 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

You might also like