4-Threads

advertisement

Chapter 4: Threads

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

Objectives

 To introduce the notion of a thread — a fundamental unit of CPU utilization that forms the basis of multithreaded computer systems

 To discuss the APIs for the Pthreads, Win32, and Java thread libraries

 To examine issues related to multithreaded programming

Operating System Concepts – 8 th Edition 4.2

Silberschatz, Galvin and Gagne ©2009

Motivation

Threads run within application

Multiple tasks with the application can be implemented by separate threads

 Update display

Fetch data

Spell checking

 Answer a network request

Process creation is heavy-weight while thread creation is light-weight

Can simplify code, increase efficiency

Kernels are generally multithreaded

Operating System Concepts – 8 th Edition 4.3

Silberschatz, Galvin and Gagne ©2009

Single and Multithreaded Processes

Operating System Concepts – 8 th Edition 4.4

Silberschatz, Galvin and Gagne ©2009

Recall a process’s address space

0xFFFFFFFF stack

(dynamic allocated mem)

SP

0x00000000 heap

(dynamic allocated mem) static data

(data segment) code

(text segment)

PC

Silberschatz, Galvin and Gagne ©2009

Operating System Concepts – 8 th Edition 4.5

A process’s address space with threads

0xFFFFFFFF

SP thread 1 stack thread 2 stack thread 3 stack address space

0x00000000

PC heap

(dynamic allocated mem) static data

(data segment) code

(text segment)

SP (T1)

SP (T2)

SP (T3)

PC (T2)

PC (T1)

PC (T3)

Silberschatz, Galvin and Gagne ©2009

Operating System Concepts – 8 th Edition 4.6

 Responsiveness

 Resource Sharing

 Economy

 Scalability

Benefits

Operating System Concepts – 8 th Edition 4.7

Silberschatz, Galvin and Gagne ©2009

Multithreaded Server Architecture

Operating System Concepts – 8 th Edition 4.8

Silberschatz, Galvin and Gagne ©2009

Concurrent Execution on a

Single-core System

Operating System Concepts – 8 th Edition 4.9

Silberschatz, Galvin and Gagne ©2009

Parallel Execution on a

Multicore System

Operating System Concepts – 8 th Edition 4.10

Silberschatz, Galvin and Gagne ©2009

User Threads

Thread management done by user-level threads library: the user-level process ( user-level threads ) a library linked into the program manages the threads.

To make threads cheap and fast, they need to be implemented at the user level

 managed entirely by user-level library, e.g. libpthreads.a

 each process keeps track of its own threads in a thread table

 Three primary thread libraries:

 POSIX Pthreads

Win32 threads

Java threads

Operating System Concepts – 8 th Edition 4.11

Silberschatz, Galvin and Gagne ©2009

Kernel Threads

Supported by the Kernel all thread operations are implemented in the kernel

OS schedules all of the threads in a system

 if one thread in a process blocks (e.g. on I/O), the OS knows about it, and can run other threads from that process possible to overlap I/O and computation inside a process

Operating System Concepts – 8 th Edition 4.12

Silberschatz, Galvin and Gagne ©2009

 Many-to-One

 One-to-One

 Many-to-Many

Multithreading Models

Operating System Concepts – 8 th Edition 4.13

Silberschatz, Galvin and Gagne ©2009

Many-to-One

 Many user-level threads mapped to single kernel thread

 Examples:

 Solaris Green Threads

 GNU Portable Threads

Operating System Concepts – 8 th Edition 4.14

Silberschatz, Galvin and Gagne ©2009

Many-to-One Model

Operating System Concepts – 8 th Edition 4.15

Silberschatz, Galvin and Gagne ©2009

One-to-One

 Each user-level thread maps to kernel thread

 Examples

 Windows NT/XP/2000

Linux

Solaris 9 and later

Operating System Concepts – 8 th Edition 4.16

Silberschatz, Galvin and Gagne ©2009

One-to-one Model

Operating System Concepts – 8 th Edition 4.17

Silberschatz, Galvin and Gagne ©2009

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

 Solaris prior to version 9

 Windows NT/2000 with the ThreadFiber package

Operating System Concepts – 8 th Edition 4.18

Silberschatz, Galvin and Gagne ©2009

Many-to-Many Model

Operating System Concepts – 8 th Edition 4.19

Silberschatz, Galvin and Gagne ©2009

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 – 8 th Edition 4.20

Silberschatz, Galvin and Gagne ©2009

Two-level Model

Operating System Concepts – 8 th Edition 4.21

Silberschatz, Galvin and Gagne ©2009

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

Operating System Concepts – 8 th Edition 4.22

Silberschatz, Galvin and Gagne ©2009

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)

Operating System Concepts – 8 th Edition 4.23

Silberschatz, Galvin and Gagne ©2009

Pthreads Example

Operating System Concepts – 8 th Edition 4.24

Silberschatz, Galvin and Gagne ©2009

Pthreads Example (Cont.)

Operating System Concepts – 8 th Edition 4.25

Silberschatz, Galvin and Gagne ©2009

Win32 API Multithreaded C Program

Operating System Concepts – 8 th Edition 4.26

Silberschatz, Galvin and Gagne ©2009

Win32 API Multithreaded C Program (Cont.)

Operating System Concepts – 8 th Edition 4.27

Silberschatz, Galvin and Gagne ©2009

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

Operating System Concepts – 8 th Edition 4.28

Silberschatz, Galvin and Gagne ©2009

Java Multithreaded Program

Operating System Concepts – 8 th Edition 4.29

Silberschatz, Galvin and Gagne ©2009

Java Multithreaded Program (Cont.)

Operating System Concepts – 8 th Edition 4.30

Silberschatz, Galvin and Gagne ©2009

Semantics of fork() and exec()

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

Operating System Concepts – 8 th Edition 4.31

Silberschatz, Galvin and Gagne ©2009

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.

Operating System Concepts – 8 th Edition 4.32

Silberschatz, Galvin and Gagne ©2009

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

Operating System Concepts – 8 th Edition 4.33

Silberschatz, Galvin and Gagne ©2009

Scheduler Activations

 Both M:M and Two-level models require communication to maintain the appropriate number of kernel threads allocated to the application

 Scheduler activations provide upcalls - a communication mechanism from the kernel to the thread library

 This communication allows an application to maintain the correct number kernel threads

Operating System Concepts – 8 th Edition 4.34

Silberschatz, Galvin and Gagne ©2009

Lightweight Processes

Operating System Concepts – 8 th Edition 4.35

Silberschatz, Galvin and Gagne ©2009

Operating System Concepts – 8 th Edition

End of Chapter 4

Silberschatz, Galvin and Gagne ©2009

Download