+ All Categories
Home > Documents > Chapter 4: Threadsbox/os/CH5.pdfChapter 4: Threads Overview Multithreading Models Threading Issues...

Chapter 4: Threadsbox/os/CH5.pdfChapter 4: Threads Overview Multithreading Models Threading Issues...

Date post: 22-May-2020
Category:
Upload: others
View: 27 times
Download: 0 times
Share this document with a friend
28
Chapter 4: Threads Chapter 4: Threads
Transcript

Chapter 4: ThreadsChapter 4: Threads

4.2 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

Chapter 4: ThreadsChapter 4: Threads

OverviewMultithreading ModelsThreading IssuesPthreadsWindows XP ThreadsLinux ThreadsJava Threads

4.3 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

Single and Multithreaded ProcessesSingle and Multithreaded Processes

4.4 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

BenefitsBenefits

Responsiveness

Resource Sharing

Economy

Utilization of MP Architectures

4.5 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

User ThreadsUser Threads

Thread management done by user-level threads library

Three primary thread libraries:POSIX PthreadsWin32 threadsJava threads

4.6 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

Kernel ThreadsKernel Threads

Supported by the Kernel

ExamplesWindows XP/2000SolarisLinuxTru64 UNIXMac OS X

4.7 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

Multithreading ModelsMultithreading Models

Many-to-One

One-to-One

Many-to-Many

4.8 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

ManyMany--toto--OneOne

Many user-level threads mapped to single kernel threadExamples:

Solaris Green ThreadsGNU Portable Threads

4.9 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

ManyMany--toto--One ModelOne Model

4.10 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

OneOne--toto--OneOne

Each user-level thread maps to kernel threadExamples

Windows NT/XP/2000LinuxSolaris 9 and later

4.11 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

OneOne--toto--one Modelone Model

4.12 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

ManyMany--toto--Many ModelMany Model

Allows many user level threads to be mapped to many kernel threadsAllows the operating system to create a sufficient number of kernel threadsSolaris prior to version 9Windows NT/2000 with the ThreadFiber package

4.13 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

ManyMany--toto--Many ModelMany Model

4.14 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

TwoTwo--level Modellevel Model

Similar to M:M, except that it allows a user thread to be bound to kernel threadExamples

IRIXHP-UXTru64 UNIXSolaris 8 and earlier

4.15 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

TwoTwo--level Modellevel Model

4.16 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

Threading IssuesThreading Issues

Semantics of fork() and exec() system callsThread cancellationSignal handlingThread poolsThread specific dataScheduler activations

4.17 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

Semantics of fork() and exec()Semantics of fork() and exec()

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

4.18 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

Thread CancellationThread Cancellation

Terminating a thread before it has finishedTwo general approaches:

Asynchronous cancellation terminates the target thread immediatelyDeferred cancellation allows the target thread to periodically check if it should be cancelled

4.19 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

Signal HandlingSignal Handling

Signals are used in UNIX systems to notify a process that a particular event has occurredA signal handler is used to process signals1. Signal is generated by particular event2. Signal is delivered to a process3. Signal is handled

Options:Deliver the signal to the thread to which the signal appliesDeliver the signal to every thread in the processDeliver the signal to certain threads in the processAssign a specific threa to receive all signals for the process

4.20 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

Thread PoolsThread Pools

Create a number of threads in a pool where they await workAdvantages: (over thread on demand approach)

Usually slightly faster to service a request with an existing thread than create a new threadAllows the number of threads in the application(s) to be bound to the size of the pool

4.21 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

Thread Specific DataThread Specific Data

Allows each thread to have its own copy of dataUseful when you do not have control over the thread creation process (i.e., when using a thread pool)

4.22 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

Scheduler ActivationsScheduler Activations

Both M:M and Two-level models require communication to maintain the appropriate number of kernel threads allocated to the applicationScheduler activations provide upcalls - a communication mechanism from the kernel to the thread libraryThis communication allows an application to maintain the correct number kernel threads

4.23 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

PthreadsPthreads

A POSIX standard (IEEE 1003.1c) API for thread creation and synchronizationAPI specifies behavior of the thread library, implementation is up to development of the libraryCommon in UNIX operating systems (Solaris, Linux, Mac OS X)

4.24 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

Windows XP ThreadsWindows XP Threads

Implements the one-to-one mappingEach thread contains

A thread idRegister setSeparate user and kernel stacksPrivate data storage area

The register set, stacks, and private storage area are known as the context of the threadsThe primary data structures of a thread include:

ETHREAD (executive thread block)KTHREAD (kernel thread block)TEB (thread environment block)

4.25 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

Linux ThreadsLinux Threads

Linux refers to them as tasks rather than threadsThread creation is done through clone() system callclone() allows a child task to share the address space of the parent task (process)

4.26 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

Java ThreadsJava Threads

Java threads are managed by the JVM

Java threads may be created by:

Extending Thread classImplementing the Runnable interface

4.27 Silberschatz, Galvin and Gagne ©2005Operating System Concepts

Java Thread States Java Thread States

End of Chapter 4End of Chapter 4


Recommended