0% found this document useful (0 votes)
74 views32 pages

Chapter 4

Uploaded by

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

Chapter 4

Uploaded by

sezin.laleli
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Chapter 4: Threads &

Concurrency

Operating System Concepts – 10th Edition Silberschatz, Galvin and Gagne ©2018
Outline
 Overview
 Multicore Programming
 Multithreading Models
 Thread Libraries
 Implicit Threading
 Threading Issues
 Operating System Examples

Operating System Concepts – 10th Edition 4.2 Silberschatz, Galvin and Gagne ©2018
Objectives
 Identify the basic components of a thread, and contrast threads
and processes
 Describe the benefits and challenges of designng
multithreaded applications
 Illustrate di#erent approaches to implicit threading including
thread pools, fork-join, and Grand Central Dispatch
 Describe how the Windows and Linux operating systems
represent threads
 Designing multithreaded applications using the Pthreads, Java,
and Windows threading APIs

Operating System Concepts – 10th Edition 4.3 Silberschatz, Galvin and Gagne ©2018
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 e/ciency
 Kernels are generally multithreaded

Operating System Concepts – 10th Edition 4.4 Silberschatz, Galvin and Gagne ©2018
Single and Multithreaded Processes

Operating System Concepts – 10th Edition 4.5 Silberschatz, Galvin and Gagne ©2018
Multithreaded Server Architecture

Operating System Concepts – 10th Edition 4.6 Silberschatz, Galvin and Gagne ©2018
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 multicore
architectures

Operating System Concepts – 10th Edition 4.7 Silberschatz, Galvin and Gagne ©2018
Multicore Programming
 Multicore or multiprocessor systems puts 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 – 10th Edition 4.8 Silberschatz, Galvin and Gagne ©2018
Concurrency vs. Parallelism
 Concurrent execution on single-core system:

 Parallelism on a multi-core system:

Operating System Concepts – 10th Edition 4.9 Silberschatz, Galvin and Gagne ©2018
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

Operating System Concepts – 10th Edition 4.10 Silberschatz, Galvin and Gagne ©2018
Data and Task Parallelism

Operating System Concepts – 10th Edition 4.11 Silberschatz, Galvin and Gagne ©2018
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 e2ect on


performance gained by adding additional cores

 But does the law take into account contemporary multicore systems?

Operating System Concepts – 10th Edition 4.12 Silberschatz, Galvin and Gagne ©2018
Amdahl’s Law

Operating System Concepts – 10th Edition 4.13 Silberschatz, Galvin and Gagne ©2018
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

Operating System Concepts – 10th Edition 4.14 Silberschatz, Galvin and Gagne ©2018
User and Kernel Threads

Operating System Concepts – 10th Edition 4.15 Silberschatz, Galvin and Gagne ©2018
Multithreading Models
 Many-to-One
 One-to-One
 Many-to-Many

Operating System Concepts – 10th Edition 4.16 Silberschatz, Galvin and Gagne ©2018
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 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 – 10th Edition 4.17 Silberschatz, Galvin and Gagne ©2018
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

Operating System Concepts – 10th Edition 4.18 Silberschatz, Galvin and Gagne ©2018
Many-to-Many Model
 Allows many user level threads to be mapped to many kernel threads
 Allows the operating system to create a su/cient number of kernel
threads
 Windows with the ThreadFiber package
 Otherwise not very common

Operating System Concepts – 10th Edition 4.19 Silberschatz, Galvin and Gagne ©2018
Two-level Model
 Similar to M:M, except that it allows a user thread to be bound to
kernel thread

Operating System Concepts – 10th Edition 4.20 Silberschatz, Galvin and Gagne ©2018
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

Operating System Concepts – 10th Edition 4.21 Silberschatz, Galvin and Gagne ©2018
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)

Operating System Concepts – 10th Edition 4.22 Silberschatz, Galvin and Gagne ©2018
Pthreads Example

Operating System Concepts – 10th Edition 4.23 Silberschatz, Galvin and Gagne ©2018
Pthreads Example (Cont.)

Operating System Concepts – 10th Edition 4.24 Silberschatz, Galvin and Gagne ©2018
Pthreads Code for Joining 10 Threads

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

Operating System Concepts – 10th Edition 4.25 Silberschatz, Galvin and Gagne ©2018
Windows Multithreaded C Program

Operating System Concepts – 10th Edition 4.26 Silberschatz, Galvin and Gagne ©2018
Windows Multithreaded C Program (Cont.)

Operating System Concepts – 10th Edition 4.27 Silberschatz, Galvin and Gagne ©2018
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

Operating System Concepts – 10th Edition 4.28 Silberschatz, Galvin and Gagne ©2018
Java Threads
Implementing Runnable interface:

Creating a thread:

Waiting on a thread:

Operating System Concepts – 10th Edition 4.29 Silberschatz, Galvin and Gagne ©2018
Java Executor Framework
 Rather than explicitly creating threads, Java also allows thread creation
around the Executor interface:

 The Executor is used as follows:

Operating System Concepts – 10th Edition 4.30 Silberschatz, Galvin and Gagne ©2018
Java Executor Framework

Operating System Concepts – 10th Edition 4.31 Silberschatz, Galvin and Gagne ©2018
Java Executor Framework (Cont.)

Operating System Concepts – 10th Edition 4.32 Silberschatz, Galvin and Gagne ©2018

You might also like