Transcript ch04threads

Chapter 4: Threads
Typical Program
 Processor utilization?
Operating System Concepts – 7th edition, Jan 23, 2005
4.2
Silberschatz, Galvin and Gagne ©2005
Without Kernel Support
 Why discuss in an OS course
 Without kernel support:
Threads

Responsibility on the process

Requires a thread manager

Thread Manager
compiled as part of each
multithreaded process

Appears single-threaded to OS

Responsibilities of thread
manager
Operating System

Primary control of the process

Determines
–
Which thread to execute
–
When to switch to another
thread
Operating System Concepts – 7th edition, Jan 23, 2005
4.6
Silberschatz, Galvin and Gagne ©2005
Many-to-One Model
 Conceptually, no kernel support is many-to-one

Many user-level threads mapped to single kernel thread
 Examples:

Solaris Green Threads

GNU Portable Threads
Known as
User Level
Threading
Operating System Concepts – 7th edition, Jan 23, 2005
4.7
Silberschatz, Galvin and Gagne ©2005
Drawback of User Level
 When an application requests I/O it is put in the waiting queue
 Even if thread manager suspends a thread just before an I/O
request once the TM allows a single I/O request the entire process
gets suspended
A single I/O request from any
thread causes the entire application
to be suspended
Operating System Concepts – 7th edition, Jan 23, 2005
4.8
Silberschatz, Galvin and Gagne ©2005
Kernel Support
 Thread-aware kernel

Can avoid suspending a multi-threaded app on I/O

When I/O complete

Determines if process is running

Informs process of I/O completion
Thread aware kernel allows for more
efficient use of resources particularly for
high I/O applications
Operating System Concepts – 7th edition, Jan 23, 2005
4.9
Silberschatz, Galvin and Gagne ©2005
Kernel Threads
 Idea of threads has even been extended to the OS, itself
 Thread models

Many-to-One

One-to-One

Many-to-Many
 OS’s that support kernel threads

Windows XP/2000

Solaris

Linux

Tru64 UNIX

Mac OS X
Operating System Concepts – 7th edition, Jan 23, 2005
4.10
Silberschatz, Galvin and Gagne ©2005
One-to-One
 Each user-level thread maps to kernel thread
 Examples

Windows NT/XP/2000

Linux

Solaris 9 and later
 Drawback: must generate a kernel thread for every user thread
Operating System Concepts – 7th edition, Jan 23, 2005
4.11
Silberschatz, Galvin and Gagne ©2005
Many-to-Many Model
 Can generate a kernel thread for each logical task
 OS’s that support it

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
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.13
Silberschatz, Galvin and Gagne ©2005
Thread Libraries
 Three primary thread libraries:

POSIX Pthreads


Win32 threads


Available with and without kernel
Kernel support
Java threads

Kernel support depends upon host system

JVM written and compiled for each host
Operating System Concepts – 7th edition, Jan 23, 2005
4.14
Silberschatz, Galvin and Gagne ©2005
Example
 Posix threads example
#include <pthread.h>
pthread_t
myThread;
pthread_create( &myThread, pointerToFunction);
pthread_join( myThread);
Operating System Concepts – 7th edition, Jan 23, 2005
4.15
Silberschatz, Galvin and Gagne ©2005
Parallel calculation example
 Create an array of threads
 Put jobs in a list
 Create a thread for each job
 Each thread watches a list of available servers
 When a server becomes available, takes ownership of the server,
and sends the job to the server
 When complete, thread puts job in completed list, and puts server
Operating System Concepts – 7th edition, Jan 23, 2005
Completed Jobs
Servers
Pending Jobs
in available server list
4.16
Silberschatz, Galvin and Gagne ©2005
End of Chapter 4