0% found this document useful (0 votes)
4 views20 pages

Threads

Chapter 4 discusses threads and concurrency in operating systems, highlighting the benefits of multithreading such as responsiveness, resource sharing, economy, and scalability. It covers different threading models including many-to-one, one-to-one, and many-to-many, as well as user and kernel threads. The chapter also addresses threading issues like the semantics of fork() and exec() system calls and thread cancellation methods.

Uploaded by

jebajoti7
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)
4 views20 pages

Threads

Chapter 4 discusses threads and concurrency in operating systems, highlighting the benefits of multithreading such as responsiveness, resource sharing, economy, and scalability. It covers different threading models including many-to-one, one-to-one, and many-to-many, as well as user and kernel threads. The chapter also addresses threading issues like the semantics of fork() and exec() system calls and thread cancellation methods.

Uploaded by

jebajoti7
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
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 – 10th Edition 4.2 Silberschatz, Galvin and Gagne ©2018
Single and Multithreaded Processes

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

Operating System Concepts – 10th Edition 4.4 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.5 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.6 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.7 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.8 Silberschatz, Galvin and Gagne ©2018
Data and Task Parallelism

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

Operating System Concepts – 10th Edition 4.11 Silberschatz, Galvin and Gagne ©2018
Multithreading Models

 Many-to-One
 One-to-One
 Many-to-Many

Operating System Concepts – 10th Edition 4.12 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.13 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.14 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 sufficient number of kernel
threads
 Windows with the ThreadFiber package
 Otherwise not very common

Operating System Concepts – 10th Edition 4.15 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.16 Silberschatz, Galvin and Gagne ©2018
Threading Issues
 Semantics of fork() and exec() system calls
 Thread cancellation of target thread
• Asynchronous or deferred

Operating System Concepts – 10th Edition 4.17 Silberschatz, Galvin and Gagne ©2018
Semantics of fork() and exec()

 Does fork()duplicate only the calling thread or all threads?


• Solution: defining two versions of fork() system call
 exec() usually works as normal – replace the running process
including all threads
 If exec() is called immediately after forking, then duplicating all
threads is unnecessary, as the program specified in the parameters to
exec() will replace the process.

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

Operating System Concepts – 10th Edition 4.19 Silberschatz, Galvin and Gagne ©2018
End of Chapter 4

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

You might also like