0% found this document useful (0 votes)
21 views22 pages

CH 4

Uploaded by

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

CH 4

Uploaded by

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

Threads & Concurrency

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


Single and Multithreaded Processes

Operating System Concepts – 10th Edition 4.2 Silberschatz, Galvin and Gagne
Multithreaded Server Architecture

Operating System Concepts – 10th Edition 4.3 Silberschatz, Galvin and Gagne
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.4 Silberschatz, Galvin and Gagne
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

Operating System Concepts – 10th Edition 4.5 Silberschatz, Galvin and Gagne
Concurrency vs. Parallelism
 Concurrent execution on single-core system:

 Parallelism on a multi-core system:

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

Operating System Concepts – 10th Edition 4.8 Silberschatz, Galvin and Gagne
Multithreading Models

 Many-to-One

 One-to-One

 Many-to-Many

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

Operating System Concepts – 10th Edition 4.10 Silberschatz, Galvin and Gagne
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.11 Silberschatz, Galvin and Gagne
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.12 Silberschatz, Galvin and Gagne
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.13 Silberschatz, Galvin and Gagne
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.14 Silberschatz, Galvin and Gagne
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.15 Silberschatz, Galvin and Gagne
Pthreads Example

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

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

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

Operating System Concepts – 10th Edition 4.19 Silberschatz, Galvin and Gagne
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
Operating System Concepts – 10th Edition4.20
correct Silberschatz, Galvin and Gagne
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)

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

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

You might also like