Chapter 5: Threads 
 Overview 
 Multithreading Models 
 Threading Issues 
 Pthreads 
 Solaris 2 Threads 
 Windows 2000 Threads 
 Linux Threads 
 Java Threads 
Silberschatz, Galvin 5.1 and Gagne Ó2002 Operating System
Single and Multithreaded 
Processes 
Silberschatz, Galvin 5.2 and Gagne Ó2002 Operating System
Benefits 
 Responsiveness 
 Resource Sharing 
 Economy 
 Utilization of MP Architectures 
Silberschatz, Galvin 5.3 and Gagne Ó2002 Operating System
User Threads 
 Thread management done by user-level threads library 
 Examples 
- POSIX Pthreads 
- Mach C-threads 
- Solaris threads 
Silberschatz, Galvin 5.4 and Gagne Ó2002 Operating System
Kernel Threads 
 Supported by the Kernel 
 Examples 
- Windows 95/98/NT/2000 
- Solaris 
- Tru64 UNIX 
- BeOS 
- Linux 
Silberschatz, Galvin 5.5 and Gagne Ó2002 Operating System
Multithreading Models 
 Many-to-One 
 One-to-One 
 Many-to-Many 
Silberschatz, Galvin 5.6 and Gagne Ó2002 Operating System
Many-to-One 
 Many user-level threads mapped to single kernel thread. 
 Used on systems that do not support kernel threads. 
Silberschatz, Galvin 5.7 and Gagne Ó2002 Operating System
Many-to-One Model 
Silberschatz, Galvin 5.8 and Gagne Ó2002 Operating System
One-to-One 
 Each user-level thread maps to kernel thread. 
 Examples 
- Windows 95/98/NT/2000 
- OS/2 
Silberschatz, Galvin 5.9 and Gagne Ó2002 Operating System
One-to-one Model 
Silberschatz, Galvin 5.10 and Gagne Ó2002 Operating System
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 2 
 Windows NT/2000 with the ThreadFiber package 
Silberschatz, Galvin 5.11 and Gagne Ó2002 Operating System
Many-to-Many Model 
Silberschatz, Galvin 5.12 and Gagne Ó2002 Operating System
Threading Issues 
 Semantics of fork() and exec() system calls. 
 Thread cancellation. 
 Signal handling 
 Thread pools 
 Thread specific data 
Silberschatz, Galvin 5.13 and Gagne Ó2002 Operating System
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. 
Silberschatz, Galvin 5.14 and Gagne Ó2002 Operating System
Solaris 2 Threads 
Silberschatz, Galvin 5.15 and Gagne Ó2002 Operating System
Solaris Process 
Silberschatz, Galvin 5.16 and Gagne Ó2002 Operating System
Windows 2000 Threads 
 Implements the one-to-one mapping. 
 Each thread contains 
- a thread id 
- register set 
- separate user and kernel stacks 
- private data storage area 
Silberschatz, Galvin 5.17 and Gagne Ó2002 Operating System
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) 
Silberschatz, Galvin 5.18 and Gagne Ó2002 Operating System
Java Threads 
 Java threads may be created by: 
 Extending Thread class 
 Implementing the Runnable interface 
 Java threads are managed by the JVM. 
Silberschatz, Galvin 5.19 and Gagne Ó2002 Operating System
Java Thread States 
Silberschatz, Galvin 5.20 and Gagne Ó2002 Operating System

Galvin-operating System(Ch5)

  • 1.
    Chapter 5: Threads Overview Multithreading Models Threading Issues Pthreads Solaris 2 Threads Windows 2000 Threads Linux Threads Java Threads Silberschatz, Galvin 5.1 and Gagne Ó2002 Operating System
  • 2.
    Single and Multithreaded Processes Silberschatz, Galvin 5.2 and Gagne Ó2002 Operating System
  • 3.
    Benefits Responsiveness Resource Sharing Economy Utilization of MP Architectures Silberschatz, Galvin 5.3 and Gagne Ó2002 Operating System
  • 4.
    User Threads Thread management done by user-level threads library Examples - POSIX Pthreads - Mach C-threads - Solaris threads Silberschatz, Galvin 5.4 and Gagne Ó2002 Operating System
  • 5.
    Kernel Threads Supported by the Kernel Examples - Windows 95/98/NT/2000 - Solaris - Tru64 UNIX - BeOS - Linux Silberschatz, Galvin 5.5 and Gagne Ó2002 Operating System
  • 6.
    Multithreading Models Many-to-One One-to-One Many-to-Many Silberschatz, Galvin 5.6 and Gagne Ó2002 Operating System
  • 7.
    Many-to-One Manyuser-level threads mapped to single kernel thread. Used on systems that do not support kernel threads. Silberschatz, Galvin 5.7 and Gagne Ó2002 Operating System
  • 8.
    Many-to-One Model Silberschatz,Galvin 5.8 and Gagne Ó2002 Operating System
  • 9.
    One-to-One Eachuser-level thread maps to kernel thread. Examples - Windows 95/98/NT/2000 - OS/2 Silberschatz, Galvin 5.9 and Gagne Ó2002 Operating System
  • 10.
    One-to-one Model Silberschatz,Galvin 5.10 and Gagne Ó2002 Operating System
  • 11.
    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 2 Windows NT/2000 with the ThreadFiber package Silberschatz, Galvin 5.11 and Gagne Ó2002 Operating System
  • 12.
    Many-to-Many Model Silberschatz,Galvin 5.12 and Gagne Ó2002 Operating System
  • 13.
    Threading Issues Semantics of fork() and exec() system calls. Thread cancellation. Signal handling Thread pools Thread specific data Silberschatz, Galvin 5.13 and Gagne Ó2002 Operating System
  • 14.
    Pthreads aPOSIX 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. Silberschatz, Galvin 5.14 and Gagne Ó2002 Operating System
  • 15.
    Solaris 2 Threads Silberschatz, Galvin 5.15 and Gagne Ó2002 Operating System
  • 16.
    Solaris Process Silberschatz,Galvin 5.16 and Gagne Ó2002 Operating System
  • 17.
    Windows 2000 Threads Implements the one-to-one mapping. Each thread contains - a thread id - register set - separate user and kernel stacks - private data storage area Silberschatz, Galvin 5.17 and Gagne Ó2002 Operating System
  • 18.
    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) Silberschatz, Galvin 5.18 and Gagne Ó2002 Operating System
  • 19.
    Java Threads Java threads may be created by: Extending Thread class Implementing the Runnable interface Java threads are managed by the JVM. Silberschatz, Galvin 5.19 and Gagne Ó2002 Operating System
  • 20.
    Java Thread States Silberschatz, Galvin 5.20 and Gagne Ó2002 Operating System