Threads

Chapter 4: Multithreaded Programming
Operating System Concepts with Java – 8th Edition
14.1
Silberschatz, Galvin and Gagne ©2009
Chapter 4: Threads
 Overview
 Multithreading Models
 Thread Libraries
 Threading Issues
 Operating System Examples
 Windows XP Threads
 Linux Threads
Operating System Concepts with Java – 8th Edition
14.2
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 with Java – 8th Edition
14.3
Silberschatz, Galvin and Gagne ©2009
Single and Multithreaded Processes
Operating System Concepts with Java – 8th Edition
14.4
Silberschatz, Galvin and Gagne ©2009
Benefits
 Responsiveness
 Resource Sharing
 Economy
 Scalability
Operating System Concepts with Java – 8th Edition
14.5
Silberschatz, Galvin and Gagne ©2009
Multithreaded Server Architecture
Operating System Concepts with Java – 8th Edition
14.6
Silberschatz, Galvin and Gagne ©2009
Multicore Programming
 Recent trand is to place multiple computing cores on a chip.
 Multicore systems putting pressure on programmers, challenges
include

Dividing computing activities for multicore

Balance

Data splitting

Data dependency

Testing and debugging are more difficult.
Operating System Concepts with Java – 8th Edition
14.7
Silberschatz, Galvin and Gagne ©2009
Concurrent Execution on a Single-core System
Operating System Concepts with Java – 8th Edition
14.8
Silberschatz, Galvin and Gagne ©2009
Parallel Execution on a Multicore System
Operating System Concepts with Java – 8th Edition
14.9
Silberschatz, Galvin and Gagne ©2009
User Threads
 There are two kinds thread – 1) user thread, 2) kernel thread
 Thread management done by user-level threads library
- Only CPU computation with own data.
 Three primary thread libraries:

POSIX Pthreads – POSIX installed computer

Win32 threads – 32 bit Windows only

Java threads – run on any machine which is installed JVM.
Operating System Concepts with Java – 8th Edition
14.10
Silberschatz, Galvin and Gagne ©2009
Kernel Threads
 Supported by the Kernel
 Can execute system services & access IO devices.
 Examples

Windows XP/2000

Solaris

Linux

Tru64 UNIX

Mac OS X
Operating System Concepts with Java – 8th Edition
14.11
Silberschatz, Galvin and Gagne ©2009
Multithreading Models
 User computations are done in user threads.
 system call & IO are done in kernel threads.
 User thread : Kernel thread ratio.
 Many-to-One (One kernel thread is in charge of all system service)
 One-to-One (1:1)
 Many-to-Many (M:N)
Operating System Concepts with Java – 8th Edition
14.12
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 with Java – 8th Edition
14.13
Silberschatz, Galvin and Gagne ©2009
Many-to-One Model
Operating System Concepts with Java – 8th Edition
14.14
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 with Java – 8th Edition
14.15
Silberschatz, Galvin and Gagne ©2009
One-to-one Model
Operating System Concepts with Java – 8th Edition
14.16
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 with Java – 8th Edition
14.17
Silberschatz, Galvin and Gagne ©2009
Many-to-Many Model
Operating System Concepts with Java – 8th Edition
14.18
Silberschatz, Galvin and Gagne ©2009
Two-level Model (X)
 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 with Java – 8th Edition
14.19
Silberschatz, Galvin and Gagne ©2009
Two-level Model (X)
Operating System Concepts with Java – 8th Edition
14.20
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 with Java – 8th Edition
14.21
Silberschatz, Galvin and Gagne ©2009
Windows XP Threads X
 Implements the one-to-one mapping, kernel-level
 Each thread contains ( thread specific data )

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: (X)

ETHREAD (executive thread block)

KTHREAD (kernel thread block)

TEB (thread environment block)
Operating System Concepts with Java – 8th Edition
14.22
Silberschatz, Galvin and Gagne ©2009
Linux Threads X
 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) – compare with fork()
Operating System Concepts with Java – 8th Edition
14.23
Silberschatz, Galvin and Gagne ©2009
End of Chapter 14
Operating System Concepts with Java – 8th Edition
14.24
Silberschatz, Galvin and Gagne ©2009