0% found this document useful (0 votes)
52 views

Chapter 4: Threads: Silberschatz, Galvin and Gagne ©2013 Operating System Concepts - 9 Edition

Chapter 4 of operating system

Uploaded by

Momina Butt
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views

Chapter 4: Threads: Silberschatz, Galvin and Gagne ©2013 Operating System Concepts - 9 Edition

Chapter 4 of operating system

Uploaded by

Momina Butt
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 31

Chapter 4: Threads

Operating System Concepts – 9th Edition Silberschatz, Galvin and Gagne ©2013
Chapter 4: Threads
 Overview
 Multicore Programming
 Multithreading Models
 Thread Libraries
 Implicit Threading
 Threading Issues
 Operating System Examples

Operating System Concepts – 9th Edition 4.2 Silberschatz, Galvin and Gagne ©2013
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 ©2013
Thread

 “Single sequential stream of instructions within a process”


 “Lightweight process”

Operating System Concepts – 9th Edition 4.4 Silberschatz, Galvin and Gagne ©2013
Motivation

 Most modern applications are multithreaded


 Threads run within application
 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 – 9th Edition 4.5 Silberschatz, Galvin and Gagne ©2013
Multithreaded Server Architecture

Operating System Concepts – 9th Edition 4.6 Silberschatz, Galvin and Gagne ©2013
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 Edition 4.7 Silberschatz, Galvin and Gagne ©2013
Single and Multithreaded Processes

Operating System Concepts – 9th Edition 4.8 Silberschatz, Galvin and Gagne ©2013
User Threads and Kernel Threads

 User threads - management done by user-level with threads library


 Three primary thread libraries:
 POSIX Pthreads
 Windows threads
 Java threads
 Kernel threads – Supported and managed directly 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.9 Silberschatz, Galvin and Gagne ©2013
User Threads and Kernel Threads

User Level Thread Kernel level thread


 User level thread are managed by  Kernel level threads are managed
user libraries by OS
 Typically fast  Typically slower
 Context switching is fast  Context switching is slow
 Of one thread perform blocking  If one kernel level thread blocked
entire process get block no effect on other

Operating System Concepts – 9th Edition 4.10 Silberschatz, Galvin and Gagne ©2013
Multithreading Models

 Multithreading models are nothing but the type of relationship between


threads
 Many-to-One

 One-to-One

 Many-to-Many

Operating System Concepts – 9th Edition 4.11 Silberschatz, Galvin and Gagne ©2013
Many-to-One

 Many user-level threads mapped to


single kernel thread
 Thread management done by the thread
library in the user space so it is efficient
Limitation
 Entire process will block if one thread
make a block system call
 Multiple threads may not run in parallel
on multicore 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 Edition 4.12 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
Limitation
 Number of threads per process sometimes
restricted due to overhead
 Examples
 Windows
 Linux
 Solaris 9 and later

Operating System Concepts – 9th Edition 4.13 Silberschatz, Galvin and Gagne ©2013
Many-to-Many Model
 Allows many user level threads to be
mapped to smaller or equal 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.14 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.15 Silberschatz, Galvin and Gagne ©2013
Thread Libraries

 Thread library provides programmer with API for creating


and managing threads
 Two primary ways of implementing
 Library entirely in user space
 Kernel-level library supported by the OS
 Three primary thread libraries:
 POSIX Pthreads
 Windows threads
 Java threads

Operating System Concepts – 9th Edition 4.16 Silberschatz, Galvin and Gagne ©2013
Pthreads Example

 Next two slides show a multithreaded C program that


calculates the summation of a non-negative integer in
a separate thread.
 In a Pthreads program, separate threads begin
execution in a specified function. In the program, this
is the runner() function.
 When this program starts, a single thread of control
begins in main(). After some initialization, main()
creates a second thread that begins control in the
runner() function. Both threads share the global data
sum.

Operating System Concepts – 9th Edition 4.17 Silberschatz, Galvin and Gagne ©2013
Pthreads Example

Operating System Concepts – 9th Edition 4.18 Silberschatz, Galvin and Gagne ©2013
Pthreads Example (Cont.)

Operating System Concepts – 9th Edition 4.19 Silberschatz, Galvin and Gagne ©2013
Pthreads Code for Joining Ten Threads

 The summation program in the previous slides


creates a single thread.
 With multicore systems, writing programs containing
several threads is common.
 Example a Pthreads program, for joining the threads:

Operating System Concepts – 9th Edition 4.20 Silberschatz, Galvin and Gagne ©2013
Windows Multithreaded C Program

Operating System Concepts – 9th Edition 4.21 Silberschatz, Galvin and Gagne ©2013
Windows Multithreaded C Program (Cont.)

Operating System Concepts – 9th Edition 4.22 Silberschatz, Galvin and Gagne ©2013
Thread Cancellation
 Terminating a thread before it has finished(database, web browser)
 The thread to be canceled is referred to as target thread
 Cancelation of a target thread may be handled using two general
approaches:
 Asynchronous cancellation terminates the target thread
immediately
 Deferred cancellation allows the target thread to periodically
check if it should be cancelled
 The difficulty with cancellation occurs in situations where:
 Resources have been allocated to a canceled thread.
 A thread is canceled while in the midst of updating data it is
sharing with other threads.

Operating System Concepts – 9th Edition 4.23 Silberschatz, Galvin and Gagne ©2013
Thread Cancellation
 The operating system usually will reclaim system resources from
a canceled thread but will not reclaim all resources.
 Canceling a thread asynchronously does not necessarily free a
system-wide resource that is needed by others.
 Deferred cancellation does not suffer from this problem:
 One thread indicates that a target thread is to be canceled,
 The cancellation occurs only after the target thread has
checked a flag to determine whether or not it should be
canceled.
 The thread can perform this check at a point at which it can
be canceled safely.

Operating System Concepts – 9th Edition 4.24 Silberschatz, Galvin and Gagne ©2013
Pthread Cancellation

 Phread cancellation is initiated using the function:


pthread\_cancel()
The identifier of the target Pthread is passed as a
parameter to the function.
 Pthread code to create and cancel a thread:

Operating System Concepts – 9th Edition 4.25 Silberschatz, Galvin and Gagne ©2013
Operating System Examples

 Windows Threads
 Linux Threads

Operating System Concepts – 9th Edition 4.26 Silberschatz, Galvin and Gagne ©2013
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 Edition 4.27 Silberschatz, Galvin and Gagne ©2013
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 Edition 4.28 Silberschatz, Galvin and Gagne ©2013
Windows Threads Data Structures

Operating System Concepts – 9th Edition 4.29 Silberschatz, Galvin and Gagne ©2013
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

Operating System Concepts – 9th Edition 4.30 Silberschatz, Galvin and Gagne ©2013
End of Chapter 4

Operating System Concepts – 9th Edition Silberschatz, Galvin and Gagne ©2013

You might also like