28
Chapter 4: Threads Chapter 4: Threads

Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

Embed Size (px)

Citation preview

Page 1: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

Chapter 4: ThreadsChapter 4: Threads

Page 2: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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

Page 3: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

4.3 Silberschatz, Galvin and Gagne ©2005Operating System Concepts – 7th edition, Jan 23, 2005

Single and Multithreaded ProcessesSingle and Multithreaded Processes

Page 4: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

4.4 Silberschatz, Galvin and Gagne ©2005Operating System Concepts – 7th edition, Jan 23, 2005

BenefitsBenefits

Responsiveness

Resource Sharing

Economy

Utilization of MP Architectures

Page 5: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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

Page 6: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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

Page 7: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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

Page 8: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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

Page 9: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

4.9 Silberschatz, Galvin and Gagne ©2005Operating System Concepts – 7th edition, Jan 23, 2005

ManyMany--toto--One ModelOne Model

Page 10: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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

Page 11: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

4.11 Silberschatz, Galvin and Gagne ©2005Operating System Concepts – 7th edition, Jan 23, 2005

OneOne--toto--one Modelone Model

Page 12: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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

Page 13: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

4.13 Silberschatz, Galvin and Gagne ©2005Operating System Concepts – 7th edition, Jan 23, 2005

ManyMany--toto--Many ModelMany Model

Page 14: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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

Page 15: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

4.15 Silberschatz, Galvin and Gagne ©2005Operating System Concepts – 7th edition, Jan 23, 2005

TwoTwo--level Modellevel Model

Page 16: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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

Page 17: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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?

Page 18: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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

Page 19: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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

Page 20: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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

Page 21: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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)

Page 22: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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

Page 23: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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)

Page 24: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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)

Page 25: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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)

Page 26: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

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

Page 27: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

4.27 Silberschatz, Galvin and Gagne ©2005Operating System Concepts – 7th edition, Jan 23, 2005

Java Thread States Java Thread States

Page 28: Chapter 4: Threads - rizal.blog.undip.ac.idrizal.blog.undip.ac.id/files/2009/09/ch4.pdfChapter 4: Threads Overview ... 2005 4.18 Silberschatz, Galvin and Gagne ©2005 Thread Cancellation

End of Chapter 4End of Chapter 4