26
1 Silberschatz, Galvin and Gagne 2002 5.1 Operating System Concepts Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads n Windows 2000 Threads n Linux Threads n Java Threads

Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

Embed Size (px)

Citation preview

Page 1: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

1

Silberschatz, Galvin and Gagne 20025.1Operating System Concepts

Chapter 5: Threads

n Overviewn Multithreading Models

n Threading Issuesn Pthreadsn Solaris 2 Threadsn Windows 2000 Threadsn Linux Threadsn Java Threads

Page 2: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

2

Silberschatz, Galvin and Gagne 20025.2Operating System Concepts

Single and Multithreaded Processes

Threads are lightweight processes – have own thread ID, PC, registers, stack

Page 3: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

3

Silberschatz, Galvin and Gagne 20025.3Operating System Concepts

Benefits

n ResponsivenessF Can run even if one thread blocked or busyF Web browser example – one thread per client

n Resource Sharingn Economy

F Creating and context switching threads is low costF Solaris 2 : creating 30x, context switch 5x slower for procs

n Utilization of MP ArchitecturesF Run each thread on different CPU

Page 4: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

4

Silberschatz, Galvin and Gagne 20025.4Operating System Concepts

User Threads

n Thread management done by user-level threads libraryn No need for kernel intervention

n Drawback : all may run in single process. If one blocks, all block.

n Examples- POSIX Pthreads- Mach C-threads- Solaris threads

Page 5: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

5

Silberschatz, Galvin and Gagne 20025.5Operating System Concepts

Kernel Threads

n Supported by the Kerneln Generally slower to create than user threads

n If one blocks another in the application can be runn Can be scheduled on different CPUs in multiprocessorn Examples

- Windows 95/98/NT/2000- Solaris- Tru64 UNIX- BeOS- Linux

Page 6: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

6

Silberschatz, Galvin and Gagne 20025.6Operating System Concepts

Multithreading Models

n Many-to-One

n One-to-One

n Many-to-Many

Page 7: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

7

Silberschatz, Galvin and Gagne 20025.7Operating System Concepts

Many-to-One

n Many user-level threads mapped to single kernel thread.

n Used on systems that do not support kernel threads.

Page 8: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

8

Silberschatz, Galvin and Gagne 20025.8Operating System Concepts

Many-to-One Model

Page 9: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

9

Silberschatz, Galvin and Gagne 20025.9Operating System Concepts

One-to-One

n Each user-level thread maps to kernel thread.

n Examples- Windows 95/98/NT/2000

- OS/2

Page 10: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

10

Silberschatz, Galvin and Gagne 20025.10Operating System Concepts

One-to-one Model

Page 11: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

11

Silberschatz, Galvin and Gagne 20025.11Operating System Concepts

Many-to-Many Model

n Allows many user level threads to be mapped to many kernel threads.

n Allows the operating system to create a sufficient number of kernel threads.

n Solaris 2 n IRIXn HP-UX

n Tru64 Unixn Windows NT/2000 with the ThreadFiber package

Page 12: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

12

Silberschatz, Galvin and Gagne 20025.12Operating System Concepts

Many-to-Many Model

Page 13: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

13

Silberschatz, Galvin and Gagne 20025.13Operating System Concepts

Threading Issues

n Semantics of fork() and exec() system callsF Duplicate all threads or notF Exec replaces all threadsF If call exec next no need to duplicate all threads.

n Thread cancellation.F Asynchronous or deferred (target thread checks periodically)F Resource reclamation problem

n Thread poolsF Create pool of threads to do workF When server receives request awakens thread. Returns on finish.F Advantages:

4 Faster than creating threads4 Limits number of threads in server and hence load on CPU

n Thread specific data

Page 14: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

14

Silberschatz, Galvin and Gagne 20025.14Operating System Concepts

Threading Issues

n Signal handlingF Signals can be synchronous (e.g. illegal memory access) or

asynchronous (e.g. i/o completion, ^C)F Handled by default handler or user-defined handlerF Where should the thread be delivered?

4 To thread to which applies (synchronous signals)4 To all threads in process4 To certain threads in process4 Assign a specific thread to receive all signals (Solaris 2)

Page 15: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

15

Silberschatz, Galvin and Gagne 20025.15Operating System Concepts

Pthreads

n a POSIX standard (IEEE 1003.1c) API for thread creation and synchronization.

n API specifies behavior of the thread library, implementation is up to developer of the library.

n Common in UNIX operating systems.

Page 16: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

16

Silberschatz, Galvin and Gagne 20025.16Operating System Concepts

Pthreads example#include <pthread.h>#include <stdio.h>int sum; /* this data is shared by the thread(s) */void *runner(void *param); /* the thread */main(int argc, char *argv[]){pthread_t tid; /* the thread identifier */pthread_attr_t attr; /* set of attributes for the thread */if (argc != 2) {

fprintf(stderr,"usage: a.out <integer value>\n");exit();

}if (atoi(argv[1]) < 0) {

fprintf(stderr,"Argument %d must be non-negative\n",atoi(argv[1]));exit();

}pthread_attr_init(&attr); /* get the default attributes */pthread_create(&tid,&attr,runner,argv[1]); /* create the thread */pthread_join(tid,NULL); /* now wait for the thread to exit */printf("sum = %d\n",sum);}

Page 17: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

17

Silberschatz, Galvin and Gagne 20025.17Operating System Concepts

Pthreads example (ctd.)

/*** The thread will begin control in this function*/void *runner(void *param) {int upper = atoi(param);int i;sum = 0;

if (upper > 0) {for (i = 1; i <= upper; i++)

sum += i;}pthread_exit(0);

}

Page 18: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

18

Silberschatz, Galvin and Gagne 20025.18Operating System Concepts

Solaris 2 Threads

n User and Kernel level threads, Light weight processes (LWP)n Process : one or more LWPsn Each LWP has kernel threadn One LWP is needed for each user thread that may blockn If kernel thread blocks, LWP, and user level thread also blockn If all LWPs in process block, but there are user level threads

which could run, kernel creates new LWPn Kernel “ages” LWPs and deletes unused ones after +-5 minn Kernel threads may be bound to particular CPU

Page 19: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

19

Silberschatz, Galvin and Gagne 20025.19Operating System Concepts

Solaris 2 Threads

Page 20: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

20

Silberschatz, Galvin and Gagne 20025.20Operating System Concepts

Solaris Process

Page 21: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

21

Silberschatz, Galvin and Gagne 20025.21Operating System Concepts

Windows 2000 Threads

n Implements the one-to-one mapping.n Each thread contains

- a thread id- register set- separate user and kernel stacks- private data storage area

Page 22: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

22

Silberschatz, Galvin and Gagne 20025.22Operating System Concepts

Linux Threads

n Linux refers to them as tasks rather than threads.n Thread creation is done through clone() system call.

n Clone() allows a child task to share the address space of the parent task (process)

n The amount of parent process shared is determined by a set of flags passed as parameter in clone() callF None set, no sharing clone() is fork()F All set, everything shared

Page 23: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

23

Silberschatz, Galvin and Gagne 20025.23Operating System Concepts

Java Threads

n Java threads may be created by:

F Extending Thread classF Implementing the Runnable interface

n Java threads are managed by the JVM.

Page 24: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

24

Silberschatz, Galvin and Gagne 20025.24Operating System Concepts

Java Thread States

Page 25: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

25

Silberschatz, Galvin and Gagne 20025.25Operating System Concepts

Java Thread Example

public class Summation extends Thread{

public Summation(int n) {upper = n;

}public void run() {

int sum = 0;if (upper > 0) {

for (int i = 1; i <= upper; i++)sum += i;

}System.out.println("The summation of " + upper + " is " + sum);

}

private int upper;}

Page 26: Chapter 5: Threads - Kent State Universityfarrell/osf03/lectures/ch5-1.pdf · Chapter 5: Threads n Overview n Multithreading Models n Threading Issues n Pthreads n Solaris 2 Threads

26

Silberschatz, Galvin and Gagne 20025.26Operating System Concepts

Java Thread Example (ctd.)

public class ThreadTester{

public static void main(String[] args) {if (args.length > 0) {

if (Integer.parseInt(args[0]) < 0)System.err.println(args[0] + " must be non-negative.");

else {Summation thrd = new Summation(Integer.parseInt(args[0]));thrd.start();

}}else

System.err.println("Usage: Summation <integer value>");}

}