SlideShare a Scribd company logo
1 of 63
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Chapter 4: Threads &
Concurrency
4.2 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Outline
 Overview
 Multicore Programming
 Multithreading Models
 Thread Libraries
 Implicit Threading
 Threading Issues
 Operating System Examples
4.3 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Objectives
 Identify the basic components of a thread, and contrast threads
and processes
 Describe the benefits and challenges of designng
multithreaded applications
 Illustrate different approaches to implicit threading including
thread pools, fork-join, and Grand Central Dispatch
 Describe how the Windows and Linux operating systems
represent threads
 Design multithreaded applications using the Pthreads, Java,
and Windows threading APIs
4.4 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
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
4.5 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Single and Multithreaded Processes
4.6 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Multithreaded Server Architecture
4.7 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Benefits
 Responsiveness – may allow continued execution if part of process is blocked,
especially important for user interfaces
 Economy – cheaper than process creation, thread switching lower overhead than
context switching
 Enhanced throughput of the system: When the process is split into many
threads, and each thread is treated as a job, the number of jobs done in the unit
time increases. That is why the throughput of the system also increases.
 Effective Utilization of Multiprocessor system: When you have more than one
thread in one process, you can schedule more than one thread in more than one
processor.
 Faster context switch: The context switching period between threads is less than
the process context switching. The process context switch means more overhead
for the CPU.
 Communication: Multiple-thread communication is simple because the threads
share the same address space, while in process, we adopt just a few exclusive
communication strategies for communication between two processes.
 Resource sharing: threads share resources of process, easier than shared
memory or message passing. Resources can be shared between all threads within
a process, such as code, data, and files. Note: The stack and register cannot be
shared between threads. There is a stack and register for each thread.
4.8 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
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
4.9 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Concurrency vs. Parallelism
 Concurrent execution on single-core system:
 Parallelism on a multi-core system:
4.10 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Multicore Programming
 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
.
N
.
Process Thread
1 Process is heavy
weight or resource
intensive.
Thread is light weight, taking
lesser resources than a
process.
2 Process switching
needs interaction with
operating system.
Thread switching does not
need to interact with operating
system.
3 In multiple processing
environments, each
process executes the
same code but has its
own memory and file
resources.
All threads can share same
set of open files, child
processes.
4 If one process is
blocked, then no other
process can execute
until the first process is
unblocked.
While one thread is blocked
and waiting, a second thread
in the same task can run.
5 Multiple processes
without using threads
use more resources.
Multiple threaded processes
use fewer resources.
6 In multiple processes
each process operates
independently of the
others.
One thread can read, write or
change another thread's data.
4.11 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Data and Task Parallelism
4.12 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
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?
4.13 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Amdahl’s Law
4.14 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
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
• Linux
• Mac OS X
• iOS
• Android
4.15 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
User and Kernel Threads
4.16 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Multithreading Models
 Many-to-One
 One-to-One
 Many-to-Many
4.17 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
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
4.18 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
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
4.19 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
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
 Windows with the ThreadFiber package
 Otherwise not very common
4.20 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Two-level Model
 Similar to M:M, except that it allows a user thread to be bound to
kernel thread
4.21 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
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
4.22 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Pthreads
 May be provided either as user-level or kernel-level
 A POSIX standard (IEEE 1003.1c) API for thread creation and
synchronization
 Specification, not implementation
 API specifies behavior of the thread library, implementation is up to
development of the library
 Common in UNIX operating systems (Linux & Mac OS X)
4.23 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Pthreads Example
4.24 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Pthreads Example (Cont.)
4.25 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Pthreads Code for Joining 10 Threads
4.26 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Windows Multithreaded C Program
4.27 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Windows Multithreaded C Program (Cont.)
4.28 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
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
• Standard practice is to implement Runnable interface
4.29 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Java Threads
Implementing Runnable interface:
Creating a thread:
Waiting on a thread:
4.30 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Java Executor Framework
 Rather than explicitly creating threads, Java also allows thread creation
around the Executor interface:
 The Executor is used as follows:
4.31 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Java Executor Framework
4.32 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Java Executor Framework (Cont.)
4.33 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Implicit Threading
 Growing in popularity as numbers of threads increase, program
correctness more difficult with explicit threads
 Creation and management of threads done by compilers and run-time
libraries rather than programmers
 Five methods explored
• Thread Pools
• Fork-Join
• OpenMP
• Grand Central Dispatch
• Intel Threading Building Blocks
4.34 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
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
 i.e.,Tasks could be scheduled to run periodically
 Windows API supports thread pools:
4.35 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Java Thread Pools
 Three factory methods for creating thread pools in Executors class:
4.36 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Java Thread Pools (Cont.)
4.37 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Fork-Join Parallelism
 Multiple threads (tasks) are forked, and then joined.
4.38 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Fork-Join Parallelism
 General algorithm for fork-join strategy:
4.39 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Fork-Join Parallelism
4.40 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Fork-Join Parallelism in Java
4.41 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Fork-Join Parallelism in Java
4.42 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Fork-Join Parallelism in Java
 The ForkJoinTask is an abstract base class
 RecursiveTask and RecursiveAction classes extend
ForkJoinTask
 RecursiveTask returns a result (via the return value from the
compute() method)
 RecursiveAction does not return a result
4.43 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
OpenMP
 Set of compiler directives and
an API for C, C++,
FORTRAN
 Provides support for parallel
programming in shared-
memory environments
 Identifies parallel regions –
blocks of code that can run in
parallel
#pragma omp parallel
Create as many threads as there
are cores
4.44 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
 Run the for loop in parallel
4.45 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Grand Central Dispatch
 Apple technology for macOS and iOS operating systems
 Extensions to C, C++ and Objective-C languages, API, and run-time
library
 Allows identification of parallel sections
 Manages most of the details of threading
 Block is in “^{ }” :
ˆ{ printf("I am a block"); }
 Blocks placed in dispatch queue
• Assigned to available thread in thread pool when removed from
queue
4.46 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Grand Central Dispatch
 Two types of dispatch queues:
• serial – blocks removed in FIFO order, queue is per process,
called main queue
 Programmers can create additional serial queues within
program
• concurrent – removed in FIFO order but several may be removed
at a time
 Four system wide queues divided by quality of service:
o QOS_CLASS_USER_INTERACTIVE
o QOS_CLASS_USER_INITIATED
o QOS_CLASS_USER_UTILITY
o QOS_CLASS_USER_BACKGROUND
4.47 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Grand Central Dispatch
 For the Swift language a task is defined as a closure – similar to a
block, minus the caret
 Closures are submitted to the queue using the dispatch_async()
function:
4.48 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Intel Threading Building Blocks (TBB)
 Template library for designing parallel C++ programs
 A serial version of a simple for loop
 The same for loop written using TBB with parallel_for statement:
4.49 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Threading Issues
 Semantics of fork() and exec() system calls
 Signal handling
• Synchronous and asynchronous
 Thread cancellation of target thread
• Asynchronous or deferred
 Thread-local storage
 Scheduler Activations
4.50 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Semantics of fork() and exec()
 Does fork()duplicate only the calling thread or all threads?
• Some UNIXes have two versions of fork
 exec() usually works as normal – replace the running process
including all threads
4.51 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Signal Handling
 Signals are used in UNIX systems to notify a process that a particular
event has occurred.
 A signal handler is used to process signals
1. Signal is generated by particular event
2. Signal is delivered to a process
3. Signal is handled by one of two signal handlers:
1. default
2. user-defined
 Every signal has default handler that kernel runs when handling
signal
• User-defined signal handler can override default
• For single-threaded, signal delivered to process
4.52 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Signal Handling (Cont.)
 Where should a signal be delivered for multi-threaded?
• Deliver the signal to the thread to which the signal applies
• Deliver the signal to every thread in the process
• Deliver the signal to certain threads in the process
• Assign a specific thread to receive all signals for the process
4.53 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
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:
4.54 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
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
 i.e., pthread_testcancel()
 Then cleanup handler is invoked
 On Linux systems, thread cancellation is handled through signals
4.55 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Thread Cancellation in Java
 Deferred cancellation uses the interrupt() method, which sets the
interrupted status of a thread.
 A thread can then check to see if it has been interrupted:
4.56 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
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
4.57 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Scheduler Activations
 Both M:M and Two-level models require
communication to maintain the appropriate
number of kernel threads allocated to the
application
 Typically use an intermediate data structure
between user and kernel threads – lightweight
process (LWP)
• Appears to be a virtual processor on which
process can schedule user thread to run
• Each LWP attached to kernel thread
• How many LWPs to create?
 Scheduler activations provide upcalls - a
communication mechanism from the kernel to
the upcall handler in the thread library
 This communication allows an application to
maintain the correct number kernel threads
4.58 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Operating System Examples
 Windows Threads
 Linux Threads
4.59 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Windows Threads
 Windows API – primary API for Windows applications
 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
4.60 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
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
4.61 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
Windows Threads Data Structures
4.62 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
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)
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition
End of Chapter 4

More Related Content

What's hot

Unix.system.calls
Unix.system.callsUnix.system.calls
Unix.system.callsGRajendra
 
Computer Organization and Architecture.
Computer Organization and Architecture.Computer Organization and Architecture.
Computer Organization and Architecture.CS_GDRCST
 
Inter Process Communication
Inter Process CommunicationInter Process Communication
Inter Process CommunicationAdeel Rasheed
 
Thrashing allocation frames.43
Thrashing allocation frames.43Thrashing allocation frames.43
Thrashing allocation frames.43myrajendra
 
Types of Load distributing algorithm in Distributed System
Types of Load distributing algorithm in Distributed SystemTypes of Load distributing algorithm in Distributed System
Types of Load distributing algorithm in Distributed SystemDHIVYADEVAKI
 
Unit II - 3 - Operating System - Process Synchronization
Unit II - 3 - Operating System - Process SynchronizationUnit II - 3 - Operating System - Process Synchronization
Unit II - 3 - Operating System - Process Synchronizationcscarcas
 
Operating Systems - "Chapter 5 Process Synchronization"
Operating Systems - "Chapter 5 Process Synchronization"Operating Systems - "Chapter 5 Process Synchronization"
Operating Systems - "Chapter 5 Process Synchronization"Ra'Fat Al-Msie'deen
 
Pipeline hazard
Pipeline hazardPipeline hazard
Pipeline hazardAJAL A J
 
Unit II - 2 - Operating System - Threads
Unit II - 2 - Operating System - ThreadsUnit II - 2 - Operating System - Threads
Unit II - 2 - Operating System - Threadscscarcas
 
Networking in cloud computing
Networking in cloud computingNetworking in cloud computing
Networking in cloud computingBarani Tharan
 
Introduction to System Calls
Introduction to System CallsIntroduction to System Calls
Introduction to System CallsVandana Salve
 
Introduction to Parallel Computing
Introduction to Parallel ComputingIntroduction to Parallel Computing
Introduction to Parallel ComputingAkhila Prabhakaran
 
Real-Time Scheduling
Real-Time SchedulingReal-Time Scheduling
Real-Time Schedulingsathish sak
 

What's hot (20)

Parallel processing
Parallel processingParallel processing
Parallel processing
 
Unix.system.calls
Unix.system.callsUnix.system.calls
Unix.system.calls
 
Computer Organization and Architecture.
Computer Organization and Architecture.Computer Organization and Architecture.
Computer Organization and Architecture.
 
Os Threads
Os ThreadsOs Threads
Os Threads
 
Inter Process Communication
Inter Process CommunicationInter Process Communication
Inter Process Communication
 
Thrashing allocation frames.43
Thrashing allocation frames.43Thrashing allocation frames.43
Thrashing allocation frames.43
 
Introduction to Unix
Introduction to UnixIntroduction to Unix
Introduction to Unix
 
Types of Load distributing algorithm in Distributed System
Types of Load distributing algorithm in Distributed SystemTypes of Load distributing algorithm in Distributed System
Types of Load distributing algorithm in Distributed System
 
Measures of query cost
Measures of query costMeasures of query cost
Measures of query cost
 
Unit II - 3 - Operating System - Process Synchronization
Unit II - 3 - Operating System - Process SynchronizationUnit II - 3 - Operating System - Process Synchronization
Unit II - 3 - Operating System - Process Synchronization
 
Operating Systems - "Chapter 5 Process Synchronization"
Operating Systems - "Chapter 5 Process Synchronization"Operating Systems - "Chapter 5 Process Synchronization"
Operating Systems - "Chapter 5 Process Synchronization"
 
Ch03 system administration
Ch03 system administration Ch03 system administration
Ch03 system administration
 
Pipeline hazard
Pipeline hazardPipeline hazard
Pipeline hazard
 
Unit II - 2 - Operating System - Threads
Unit II - 2 - Operating System - ThreadsUnit II - 2 - Operating System - Threads
Unit II - 2 - Operating System - Threads
 
Networking in cloud computing
Networking in cloud computingNetworking in cloud computing
Networking in cloud computing
 
Introduction to System Calls
Introduction to System CallsIntroduction to System Calls
Introduction to System Calls
 
MS-DOS commands
MS-DOS commands MS-DOS commands
MS-DOS commands
 
Crash recovery in database
Crash recovery in databaseCrash recovery in database
Crash recovery in database
 
Introduction to Parallel Computing
Introduction to Parallel ComputingIntroduction to Parallel Computing
Introduction to Parallel Computing
 
Real-Time Scheduling
Real-Time SchedulingReal-Time Scheduling
Real-Time Scheduling
 

Similar to Threads & Concurrency

Similar to Threads & Concurrency (20)

ch4.pptx
ch4.pptxch4.pptx
ch4.pptx
 
ch4.pptx
ch4.pptxch4.pptx
ch4.pptx
 
Threads are using in operating systems.pptx
Threads are using in operating systems.pptxThreads are using in operating systems.pptx
Threads are using in operating systems.pptx
 
04 Threads.pptx
04  Threads.pptx04  Threads.pptx
04 Threads.pptx
 
4 threads
4 threads4 threads
4 threads
 
ch4.ppt
ch4.pptch4.ppt
ch4.ppt
 
ch4.ppt
ch4.pptch4.ppt
ch4.ppt
 
Threads semaphoremutexlocksdeadlockp.ppt
Threads semaphoremutexlocksdeadlockp.pptThreads semaphoremutexlocksdeadlockp.ppt
Threads semaphoremutexlocksdeadlockp.ppt
 
ch4.ppt operation system. Dats structure and alogor
ch4.ppt operation system. Dats structure and alogorch4.ppt operation system. Dats structure and alogor
ch4.ppt operation system. Dats structure and alogor
 
ch4.ppt
ch4.pptch4.ppt
ch4.ppt
 
OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...
 
Operating Systems - "Chapter 4: Multithreaded Programming"
Operating Systems - "Chapter 4:  Multithreaded Programming"Operating Systems - "Chapter 4:  Multithreaded Programming"
Operating Systems - "Chapter 4: Multithreaded Programming"
 
My DIaries
My DIariesMy DIaries
My DIaries
 
Thread
ThreadThread
Thread
 
ch4_EN_BK_Threads.pdf
ch4_EN_BK_Threads.pdfch4_EN_BK_Threads.pdf
ch4_EN_BK_Threads.pdf
 
Threading Programming Guide
Threading Programming GuideThreading Programming Guide
Threading Programming Guide
 
CH04.pdf
CH04.pdfCH04.pdf
CH04.pdf
 
Topic 4- processes.pptx
Topic 4- processes.pptxTopic 4- processes.pptx
Topic 4- processes.pptx
 
Ch4 threads
Ch4 threadsCh4 threads
Ch4 threads
 
Operating system 20 threads
Operating system 20 threadsOperating system 20 threads
Operating system 20 threads
 

Recently uploaded

(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )Tsuyoshi Horigome
 
GDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSCAESB
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...Soham Mondal
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Dr.Costas Sachpazis
 
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVRajaP95
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSKurinjimalarL3
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxwendy cai
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxpurnimasatapathy1234
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Dr.Costas Sachpazis
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxupamatechverse
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130Suhani Kapoor
 
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxthe ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxhumanexperienceaaa
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024hassan khalil
 

Recently uploaded (20)

(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )
 
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCRCall Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
 
GDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentation
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
 
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
 
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptx
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptx
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
 
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINEDJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptx
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
 
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxthe ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
 
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024
 

Threads & Concurrency

  • 1. Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Chapter 4: Threads & Concurrency
  • 2. 4.2 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Outline  Overview  Multicore Programming  Multithreading Models  Thread Libraries  Implicit Threading  Threading Issues  Operating System Examples
  • 3. 4.3 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Objectives  Identify the basic components of a thread, and contrast threads and processes  Describe the benefits and challenges of designng multithreaded applications  Illustrate different approaches to implicit threading including thread pools, fork-join, and Grand Central Dispatch  Describe how the Windows and Linux operating systems represent threads  Design multithreaded applications using the Pthreads, Java, and Windows threading APIs
  • 4. 4.4 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition 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
  • 5. 4.5 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Single and Multithreaded Processes
  • 6. 4.6 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Multithreaded Server Architecture
  • 7. 4.7 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Benefits  Responsiveness – may allow continued execution if part of process is blocked, especially important for user interfaces  Economy – cheaper than process creation, thread switching lower overhead than context switching  Enhanced throughput of the system: When the process is split into many threads, and each thread is treated as a job, the number of jobs done in the unit time increases. That is why the throughput of the system also increases.  Effective Utilization of Multiprocessor system: When you have more than one thread in one process, you can schedule more than one thread in more than one processor.  Faster context switch: The context switching period between threads is less than the process context switching. The process context switch means more overhead for the CPU.  Communication: Multiple-thread communication is simple because the threads share the same address space, while in process, we adopt just a few exclusive communication strategies for communication between two processes.  Resource sharing: threads share resources of process, easier than shared memory or message passing. Resources can be shared between all threads within a process, such as code, data, and files. Note: The stack and register cannot be shared between threads. There is a stack and register for each thread.
  • 8. 4.8 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition 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
  • 9. 4.9 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Concurrency vs. Parallelism  Concurrent execution on single-core system:  Parallelism on a multi-core system:
  • 10. 4.10 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Multicore Programming  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 . N . Process Thread 1 Process is heavy weight or resource intensive. Thread is light weight, taking lesser resources than a process. 2 Process switching needs interaction with operating system. Thread switching does not need to interact with operating system. 3 In multiple processing environments, each process executes the same code but has its own memory and file resources. All threads can share same set of open files, child processes. 4 If one process is blocked, then no other process can execute until the first process is unblocked. While one thread is blocked and waiting, a second thread in the same task can run. 5 Multiple processes without using threads use more resources. Multiple threaded processes use fewer resources. 6 In multiple processes each process operates independently of the others. One thread can read, write or change another thread's data.
  • 11. 4.11 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Data and Task Parallelism
  • 12. 4.12 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition 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?
  • 13. 4.13 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Amdahl’s Law
  • 14. 4.14 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition 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 • Linux • Mac OS X • iOS • Android
  • 15. 4.15 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition User and Kernel Threads
  • 16. 4.16 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Multithreading Models  Many-to-One  One-to-One  Many-to-Many
  • 17. 4.17 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition 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
  • 18. 4.18 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition 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
  • 19. 4.19 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition 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  Windows with the ThreadFiber package  Otherwise not very common
  • 20. 4.20 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Two-level Model  Similar to M:M, except that it allows a user thread to be bound to kernel thread
  • 21. 4.21 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition 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
  • 22. 4.22 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Pthreads  May be provided either as user-level or kernel-level  A POSIX standard (IEEE 1003.1c) API for thread creation and synchronization  Specification, not implementation  API specifies behavior of the thread library, implementation is up to development of the library  Common in UNIX operating systems (Linux & Mac OS X)
  • 23. 4.23 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Pthreads Example
  • 24. 4.24 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Pthreads Example (Cont.)
  • 25. 4.25 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Pthreads Code for Joining 10 Threads
  • 26. 4.26 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Windows Multithreaded C Program
  • 27. 4.27 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Windows Multithreaded C Program (Cont.)
  • 28. 4.28 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition 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 • Standard practice is to implement Runnable interface
  • 29. 4.29 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Java Threads Implementing Runnable interface: Creating a thread: Waiting on a thread:
  • 30. 4.30 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Java Executor Framework  Rather than explicitly creating threads, Java also allows thread creation around the Executor interface:  The Executor is used as follows:
  • 31. 4.31 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Java Executor Framework
  • 32. 4.32 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Java Executor Framework (Cont.)
  • 33. 4.33 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Implicit Threading  Growing in popularity as numbers of threads increase, program correctness more difficult with explicit threads  Creation and management of threads done by compilers and run-time libraries rather than programmers  Five methods explored • Thread Pools • Fork-Join • OpenMP • Grand Central Dispatch • Intel Threading Building Blocks
  • 34. 4.34 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition 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  i.e.,Tasks could be scheduled to run periodically  Windows API supports thread pools:
  • 35. 4.35 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Java Thread Pools  Three factory methods for creating thread pools in Executors class:
  • 36. 4.36 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Java Thread Pools (Cont.)
  • 37. 4.37 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Fork-Join Parallelism  Multiple threads (tasks) are forked, and then joined.
  • 38. 4.38 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Fork-Join Parallelism  General algorithm for fork-join strategy:
  • 39. 4.39 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Fork-Join Parallelism
  • 40. 4.40 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Fork-Join Parallelism in Java
  • 41. 4.41 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Fork-Join Parallelism in Java
  • 42. 4.42 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Fork-Join Parallelism in Java  The ForkJoinTask is an abstract base class  RecursiveTask and RecursiveAction classes extend ForkJoinTask  RecursiveTask returns a result (via the return value from the compute() method)  RecursiveAction does not return a result
  • 43. 4.43 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition OpenMP  Set of compiler directives and an API for C, C++, FORTRAN  Provides support for parallel programming in shared- memory environments  Identifies parallel regions – blocks of code that can run in parallel #pragma omp parallel Create as many threads as there are cores
  • 44. 4.44 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition  Run the for loop in parallel
  • 45. 4.45 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Grand Central Dispatch  Apple technology for macOS and iOS operating systems  Extensions to C, C++ and Objective-C languages, API, and run-time library  Allows identification of parallel sections  Manages most of the details of threading  Block is in “^{ }” : ˆ{ printf("I am a block"); }  Blocks placed in dispatch queue • Assigned to available thread in thread pool when removed from queue
  • 46. 4.46 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Grand Central Dispatch  Two types of dispatch queues: • serial – blocks removed in FIFO order, queue is per process, called main queue  Programmers can create additional serial queues within program • concurrent – removed in FIFO order but several may be removed at a time  Four system wide queues divided by quality of service: o QOS_CLASS_USER_INTERACTIVE o QOS_CLASS_USER_INITIATED o QOS_CLASS_USER_UTILITY o QOS_CLASS_USER_BACKGROUND
  • 47. 4.47 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Grand Central Dispatch  For the Swift language a task is defined as a closure – similar to a block, minus the caret  Closures are submitted to the queue using the dispatch_async() function:
  • 48. 4.48 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Intel Threading Building Blocks (TBB)  Template library for designing parallel C++ programs  A serial version of a simple for loop  The same for loop written using TBB with parallel_for statement:
  • 49. 4.49 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Threading Issues  Semantics of fork() and exec() system calls  Signal handling • Synchronous and asynchronous  Thread cancellation of target thread • Asynchronous or deferred  Thread-local storage  Scheduler Activations
  • 50. 4.50 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Semantics of fork() and exec()  Does fork()duplicate only the calling thread or all threads? • Some UNIXes have two versions of fork  exec() usually works as normal – replace the running process including all threads
  • 51. 4.51 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Signal Handling  Signals are used in UNIX systems to notify a process that a particular event has occurred.  A signal handler is used to process signals 1. Signal is generated by particular event 2. Signal is delivered to a process 3. Signal is handled by one of two signal handlers: 1. default 2. user-defined  Every signal has default handler that kernel runs when handling signal • User-defined signal handler can override default • For single-threaded, signal delivered to process
  • 52. 4.52 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Signal Handling (Cont.)  Where should a signal be delivered for multi-threaded? • Deliver the signal to the thread to which the signal applies • Deliver the signal to every thread in the process • Deliver the signal to certain threads in the process • Assign a specific thread to receive all signals for the process
  • 53. 4.53 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition 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:
  • 54. 4.54 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition 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  i.e., pthread_testcancel()  Then cleanup handler is invoked  On Linux systems, thread cancellation is handled through signals
  • 55. 4.55 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Thread Cancellation in Java  Deferred cancellation uses the interrupt() method, which sets the interrupted status of a thread.  A thread can then check to see if it has been interrupted:
  • 56. 4.56 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition 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
  • 57. 4.57 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Scheduler Activations  Both M:M and Two-level models require communication to maintain the appropriate number of kernel threads allocated to the application  Typically use an intermediate data structure between user and kernel threads – lightweight process (LWP) • Appears to be a virtual processor on which process can schedule user thread to run • Each LWP attached to kernel thread • How many LWPs to create?  Scheduler activations provide upcalls - a communication mechanism from the kernel to the upcall handler in the thread library  This communication allows an application to maintain the correct number kernel threads
  • 58. 4.58 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Operating System Examples  Windows Threads  Linux Threads
  • 59. 4.59 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Windows Threads  Windows API – primary API for Windows applications  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
  • 60. 4.60 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition 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
  • 61. 4.61 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition Windows Threads Data Structures
  • 62. 4.62 Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition 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)
  • 63. Silberschatz, Galvin and Gagne ©2018 Operating System Concepts – 10th Edition End of Chapter 4