Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th...

26
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th  Edition, Chapter 4: Threads

Transcript of Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th...

Page 1: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition,

Chapter 4: Threads

Page 2: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.2 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Administrivia

■ System calls project.■ Exam next Friday, Chapters 1—4.

Page 3: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.3 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Outline

■ What are threads?■ Threads and multi­processing.■ User, kernel thread models.■ Thread semantics and details.■ Threads in XP and Linux.

Page 4: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.4 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Single and Multithreaded Processes

Page 5: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.5 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Multicore Programming

■ Multicore systems putting pressure on programmers, challenges include● Dividing activities● Balance● Data splitting● Data dependency● Testing and debugging

Page 6: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.6 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Multithreaded Server Architecture

Page 7: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.7 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Concurrent Execution on a Single-core System

Page 8: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.8 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Parallel Execution on a Multicore System

Page 9: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.9 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

User Threads

■ Thread management done by user­level threads library

■ Three primary thread libraries:●  POSIX Pthreads●  Win32 threads●  Java threads

Page 10: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.10 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Kernel Threads

■ Supported by the Kernel

■ Examples● Windows XP/2000● Solaris● Linux● Tru64 UNIX● Mac OS X

Page 11: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.11 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Multithreading Models

■ Many­to­One

■ One­to­One

Page 12: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.12 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Many-to-One Model

Page 13: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.13 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

One-to-one Model

Page 14: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.14 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

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

Page 15: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.15 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Pthreads

■ May be provided either as user­level or kernel­level■ A POSIX standard (IEEE 1003.1c) API for thread creation 

and synchronization■ API specifies behavior of the thread library, implementation 

is up to development of the library■ Common in UNIX operating systems (Solaris, Linux, Mac 

OS X)

Page 16: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.16 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Java Threads

■ Java threads are managed by the JVM

■ Typically implemented using the threads model provided by underlying OS

■ Java threads may be created by:

● Extending Thread class● Implementing the Runnable interface

Page 17: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.17 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Threading Issues

■ Semantics of fork() and exec() system calls■ Thread cancellation of target thread

● Asynchronous or deferred■ Signal handling■ Thread pools■ Thread­specific data■ Scheduler activations

Page 18: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.18 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Semantics of fork() and exec()

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

Page 19: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.19 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Thread Cancellation

■ Terminating a thread before it has finished■ Two general approaches:

● Asynchronous cancellation terminates the target thread  immediately

● Deferred cancellation allows the target thread to periodically check if it should be cancelled

Page 20: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.20 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Signal Handling

■ Signals are used in UNIX systems to notify a process that a particular event has occurred

■ A 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 applies● Deliver the signal to every thread in the process● Deliver the signal to certain threads in the process● Assign a specific threa to receive all signals for the process

Page 21: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.21 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Thread Pools

■ Create a number of threads in a pool where they await work■ Advantages:

● Usually slightly faster to service a request with an existing thread than create a new thread

● Allows the number of threads in the application(s) to be bound to the size of the pool

Page 22: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.22 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Thread Specific Data

■ 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)

Page 23: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.23 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Operating System Examples

■ Windows XP Threads■ Linux Thread

Page 24: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.24 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Windows XP Threads

■ Implements the one­to­one mapping, kernel­level■ Each thread contains

● A thread id● Register set● Separate user and kernel stacks● Private data storage area

■ The register set, stacks, and private storage area are known as the context of the threads

■ The primary data structures of a thread include:● ETHREAD (executive thread block)● KTHREAD (kernel thread block)● TEB (thread environment block)

Page 25: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

4.25 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

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)

Page 26: Chapter 4: Threads - Goucher Collegekelliher/s2009/cs325/l07.pdfOperating System Concepts – 8th Edition 4.24 Silberschatz, Galvin and Gagne ©2009 Windows XP Threads Implements the

Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition,

End of Chapter 4