Upload
phungthuy
View
250
Download
5
Embed Size (px)
Chapter 4: ThreadsChapter 4: Threads
4.2 Silberschatz, Galvin and Gagne ©2005Operating System Concepts – 7th edition, Jan 23, 2005
Chapter 4: ThreadsChapter 4: Threads
OverviewMultithreading ModelsThreading IssuesPthreadsWindows XP ThreadsLinux ThreadsJava Threads
4.3 Silberschatz, Galvin and Gagne ©2005Operating System Concepts – 7th edition, Jan 23, 2005
Single and Multithreaded ProcessesSingle and Multithreaded Processes
4.4 Silberschatz, Galvin and Gagne ©2005Operating System Concepts – 7th edition, Jan 23, 2005
BenefitsBenefits
Responsiveness
Resource Sharing
Economy
Utilization of MP Architectures
4.5 Silberschatz, Galvin and Gagne ©2005Operating System Concepts – 7th edition, Jan 23, 2005
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 – 7th edition, Jan 23, 2005
Kernel ThreadsKernel Threads
Supported by the Kernel
ExamplesWindows XP/2000SolarisLinuxTru64 UNIXMac OS X
4.7 Silberschatz, Galvin and Gagne ©2005Operating System Concepts – 7th edition, Jan 23, 2005
Multithreading ModelsMultithreading Models
Many-to-One
One-to-One
Many-to-Many
4.8 Silberschatz, Galvin and Gagne ©2005Operating System Concepts – 7th edition, Jan 23, 2005
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 – 7th edition, Jan 23, 2005
ManyMany--toto--One ModelOne Model
4.10 Silberschatz, Galvin and Gagne ©2005Operating System Concepts – 7th edition, Jan 23, 2005
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 – 7th edition, Jan 23, 2005
OneOne--toto--one Modelone Model
4.12 Silberschatz, Galvin and Gagne ©2005Operating System Concepts – 7th edition, Jan 23, 2005
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 – 7th edition, Jan 23, 2005
ManyMany--toto--Many ModelMany Model
4.14 Silberschatz, Galvin and Gagne ©2005Operating System Concepts – 7th edition, Jan 23, 2005
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 – 7th edition, Jan 23, 2005
TwoTwo--level Modellevel Model
4.16 Silberschatz, Galvin and Gagne ©2005Operating System Concepts – 7th edition, Jan 23, 2005
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 – 7th edition, Jan 23, 2005
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 – 7th edition, Jan 23, 2005
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 – 7th edition, Jan 23, 2005
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 – 7th edition, Jan 23, 2005
Thread PoolsThread Pools
Create a number of threads in a pool where they await workAdvantages:
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 – 7th edition, Jan 23, 2005
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 – 7th edition, Jan 23, 2005
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 – 7th edition, Jan 23, 2005
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 – 7th edition, Jan 23, 2005
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 – 7th edition, Jan 23, 2005
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 – 7th edition, Jan 23, 2005
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 – 7th edition, Jan 23, 2005
Java Thread States Java Thread States
End of Chapter 4End of Chapter 4