Вы находитесь на странице: 1из 30

Chapter 4: Threads

Chapter 4: Threads
Overview

Multithreading Models
Threading Issues Pthreads Windows XP Threads

Linux Threads
Java Threads

Operating System Concepts 7th edition, Jan 23, 2005

4.2

Silberschatz, Galvin and Gagne 2005

Overview
Thread is a basic unit of CPU util; It has thread ID, a program

counter, a reg set, and a stack.


Benefits

1. Responsiveness- multithreading an interactive appln , may allow a program to continue running even if part of it is blocked or is performing some lengthy action thus increasing responsiveness to user. 2.Resource Sharing threads share the mem and resources of the process to which they belong. Thus appln can have several different threads of activity in the same address space 3. Economy Threads share resources of the process they belong to. Context swtiching threads and creating threads is cheap. 4. Utilization of multiprocessor architecture Threads may be running in parallel on different pricessor.Increase concurrency

Operating System Concepts 7th edition, Jan 23, 2005

4.3

Silberschatz, Galvin and Gagne 2005

Single and Multithreaded Processes

Operating System Concepts 7th edition, Jan 23, 2005

4.4

Silberschatz, Galvin and Gagne 2005

User Threads
Thread management done by user-level threads library Three primary thread libraries:

POSIX Pthreads Win32 threads

Java threads

Operating System Concepts 7th edition, Jan 23, 2005

4.5

Silberschatz, Galvin and Gagne 2005

Kernel Threads
Supported by the Kernel Examples

Windows XP/2000 Solaris

Linux
Tru64 UNIX Mac OS X

Operating System Concepts 7th edition, Jan 23, 2005

4.6

Silberschatz, Galvin and Gagne 2005

Multithreading Models
Many-to-One One-to-One Many-to-Many

Operating System Concepts 7th edition, Jan 23, 2005

4.7

Silberschatz, Galvin and Gagne 2005

Many-to-One
Many user-level threads mapped to single kernel thread

Thread mgt- thread lib in user space efficient


Disadv unable to run parallel on multi proc system cause only

one thread can access the kernel at a time.


Examples:

Solaris Green Threads


GNU Portable Threads

Operating System Concepts 7th edition, Jan 23, 2005

4.8

Silberschatz, Galvin and Gagne 2005

Many-to-One Model

Operating System Concepts 7th edition, Jan 23, 2005

4.9

Silberschatz, Galvin and Gagne 2005

One-to-One
Each user-level thread maps to kernel thread

More concurrency
Adv multiple threads parallel on multiproc systems Disadv- creating user thread req creating a corresponding kernel

thread. Which can burden the performance of appln, Threfore creating of threads is restruicted.
Examples

Windows NT/XP/2000 Linux Solaris 9 and later

Operating System Concepts 7th edition, Jan 23, 2005

4.10

Silberschatz, Galvin and Gagne 2005

One-to-one Model

Operating System Concepts 7th edition, Jan 23, 2005

4.11

Silberschatz, Galvin and Gagne 2005

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
Can create as many user threads as needed,. Solaris prior to version 9 Windows NT/2000 with the ThreadFiber package

Operating System Concepts 7th edition, Jan 23, 2005

4.12

Silberschatz, Galvin and Gagne 2005

Many-to-Many Model

Operating System Concepts 7th edition, Jan 23, 2005

4.13

Silberschatz, Galvin and Gagne 2005

Two-level Model
Similar to M:M, except that it allows a user thread to be

bound to kernel thread


Examples

IRIX HP-UX Tru64 UNIX

Solaris 8 and earlier

Operating System Concepts 7th edition, Jan 23, 2005

4.14

Silberschatz, Galvin and Gagne 2005

Two-level Model

Operating System Concepts 7th edition, Jan 23, 2005

4.15

Silberschatz, Galvin and Gagne 2005

Thread Libraries
Thread library provide an API for the programmer to create and manage

threads.
Implementation 1. entirely in user space with no kernel support. All code and ds for the

lib exist in user spoace and invoking a calll in the lib results in a local func call in user space and NOT a sys call
2. kernel level library supported by os. Invoking a func in the api results

in a sys call to the kernel


Pthreads user or kernel level lib. Win 32 kernel level Java thread creating and mgt directly in java programs. Inmplement

through win 32 api .

Operating System Concepts 7th edition, Jan 23, 2005

4.16

Silberschatz, Galvin and Gagne 2005

Threading Issues
Semantics of fork() and exec() system calls Thread cancellation Signal handling Thread pools Thread specific data Scheduler activations

Operating System Concepts 7th edition, Jan 23, 2005

4.17

Silberschatz, Galvin and Gagne 2005

Semantics of fork() and exec()


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

Operating System Concepts 7th edition, Jan 23, 2005

4.18

Silberschatz, Galvin and Gagne 2005

Thread Cancellation
Terminating a thread before it has finished
Target Thread thread to be cancelled. Two general approaches:

Asynchronous cancellation terminates the target thread immediately Deferred cancellation allows the target thread to periodically check if it should be cancelled.Terminates in an orderly fashion.

Issues- when resources are allocated to cancelled thread or

a thread is cancelled in the midst of updating data it is sharing with other threads. Thus cancelling threads async may not free a necessary system wide resource.
Cancellation points deferred cancellation allows a thread

to chk whether it should be cancelled at a point where it can be canceled safely- Pthreads call it cancelation point
Operating System Concepts 7th edition, Jan 23, 2005 4.19 Silberschatz, Galvin and Gagne 2005

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 signals
1. 2.

Signal is generated by particular event Generated Signal is delivered to a process

3.

Once delivered Signal is handled

Sync signals are delivered to the same process that performed the op that caused the signal ex illegal mem access Asyn signalls- when a signal is gen by an event ext to a running process , that process receives the signal async. Ex having a timer expire. Signals are handled by

1,. Defaoult handdler 2. User defined signal handler


4.20 Silberschatz, Galvin and Gagne 2005

Operating System Concepts 7th edition, Jan 23, 2005

Default signal handler run by the kernel when handling that signal. Can be overriden by user defined signal handler Options for handling signals:

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 thread to receive all signals for the process

Unix func for delivering a signal kill(aid_t, aid, int signal)

Operating System Concepts 7th edition, Jan 23, 2005

4.21

Silberschatz, Galvin and Gagne 2005

Thread Pools
Create a number of threads at start up and place them in a

pool where they await work. When server receives a request , it awakens thread from this pool, if one is available and passes it to service the request.Once complete, the thread returns to the pool .
No of threadfs in the pool

No. of CPUs in the sys


Amt of physical mem Expected no of concurrent client requests. Some can dynamically adjust the no of threads based on usage pattern. Usually slightly faster to service a request with an existing thread than create a new thread

Advantages:

Allows the number of threads in the application(s) to be bound to the size of the pool
4.22 Silberschatz, Galvin and Gagne 2005

Operating System Concepts 7th edition, Jan 23, 2005

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)

Operating System Concepts 7th edition, Jan 23, 2005

4.23

Silberschatz, Galvin and Gagne 2005

Scheduler Activations

Both M:M and Two-level models require communication to maintain the appropriate number of kernel threads allocated to the application
A data structure - Light Weight Process is placed b/w user and kernel threads. The LWP appears to be a virtual proc on the which the appln can schedule a user thread to run. Each LWP is attached to a kernel thread and it is the kernel thread that the OS schedules to run on physical proc. If a kernel thread blocks, LWP blocks as well .Up the chain, the user level thread attached to the LWP also blocks. Schedular activations kernel thread provides an appln with a set of virtual procs and the appln can schdule user threads onto an available virtual procs. The kernel threads informs the appln about certain events, this proc is called an upcall. Scheduler activations provide upcalls - a communication mechanism from the kernel to the thread library Upcall handled by thread lib called upcall handler. This communication allows an application to maintain the correct number kernel threads

Operating System Concepts 7th edition, Jan 23, 2005

4.24

Silberschatz, Galvin and Gagne 2005

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

Operating System Concepts 7th edition, Jan 23, 2005

4.25

Silberschatz, Galvin and Gagne 2005

Windows XP Threads
Implements the one-to-one mapping

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)

Operating System Concepts 7th edition, Jan 23, 2005

4.26

Silberschatz, Galvin and Gagne 2005

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)

Operating System Concepts 7th edition, Jan 23, 2005

4.27

Silberschatz, Galvin and Gagne 2005

Java Threads
Java threads are managed by the JVM Java threads may be created by:

Extending Thread class Implementing the Runnable interface

Operating System Concepts 7th edition, Jan 23, 2005

4.28

Silberschatz, Galvin and Gagne 2005

Java Thread States

Operating System Concepts 7th edition, Jan 23, 2005

4.29

Silberschatz, Galvin and Gagne 2005

End of Chapter 4