cs231 ch4
cs231 ch4
Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne ©2009
Thread
A lightweight process
A flow of execution through the process code
It comprises a thread ID, a PC, a register set, a stack
Shares code section, data section, other OS resources
Operating System Concepts – 8th Edition 4.2 Silberschatz, Galvin and Gagne ©2009
Single and Multithreaded Processes
Operating System Concepts – 8th Edition 4.3 Silberschatz, Galvin and Gagne ©2009
Motivation
Threads run within an 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 – 8th Edition 4.4 Silberschatz, Galvin and Gagne ©2009
Benefits
Responsiveness
Resource Sharing
Economy
Scalability
Operating System Concepts – 8th Edition 4.5 Silberschatz, Galvin and Gagne ©2009
Multicore Programming
Multicore systems putting pressure on programmers -
Challenges include:
Dividing activities
Balance
Data splitting
Data dependency
Testing and debugging
Operating System Concepts – 8th Edition 4.6 Silberschatz, Galvin and Gagne ©2009
Concurrent Execution on a
Single-core System
Operating System Concepts – 8th Edition 4.7 Silberschatz, Galvin and Gagne ©2009
Parallel Execution on a
Multicore System
Operating System Concepts – 8th Edition 4.8 Silberschatz, Galvin and Gagne ©2009
User Threads
Thread management done by user-level threads library
Three primary thread libraries:
POSIX Pthreads
Win32 threads
Java threads
Operating System Concepts – 8th Edition 4.9 Silberschatz, Galvin and Gagne ©2009
Kernel Threads
Supported by the Kernel
Examples
Windows XP/2000
Solaris
Linux
Tru64 UNIX
Mac OS X
Operating System Concepts – 8th Edition 4.10 Silberschatz, Galvin and Gagne ©2009
Multithreading Models
Many-to-One
One-to-One
Many-to-Many
Operating System Concepts – 8th Edition 4.11 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 – 8th Edition 4.12 Silberschatz, Galvin and Gagne ©2009
Many-to-One Model
Operating System Concepts – 8th Edition 4.13 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 – 8th Edition 4.14 Silberschatz, Galvin and Gagne ©2009
One-to-one Model
Operating System Concepts – 8th Edition 4.15 Silberschatz, Galvin and Gagne ©2009
Many-to-Many Model
Operating System Concepts – 8th Edition 4.16 Silberschatz, Galvin and Gagne ©2009
Many-to-Many Model
Operating System Concepts – 8th Edition 4.17 Silberschatz, Galvin and Gagne ©2009
Two-level Model
Operating System Concepts – 8th Edition 4.18 Silberschatz, Galvin and Gagne ©2009
Two-level Model
Operating System Concepts – 8th Edition 4.19 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 – 8th Edition 4.20 Silberschatz, Galvin and Gagne ©2009
Pthreads
May be provided either as user-level or kernel-level
Operating System Concepts – 8th Edition 4.21 Silberschatz, Galvin and Gagne ©2009
Pthreads Example
Operating System Concepts – 8th Edition 4.22 Silberschatz, Galvin and Gagne ©2009
Pthreads Example (Cont.)
Operating System Concepts – 8th Edition 4.23 Silberschatz, Galvin and Gagne ©2009
End of Chapter 4
Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne ©2009