Lecture 4
Lecture 4
Concurrency Models
(code don’t need to
remember)
Threads
• Overview
• Multicore Programming
• Multithreading Models
• Thread Libraries
• Implicit Threading
• Threading Issues
• Operating System Examples
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, Windows, and Java
thread libraries
• To explore several strategies that provide implicit threading
• To examine issues related to multithreaded programming
• To cover operating system support for threads in Windows
and Linux
Motivation
• Types of parallelism
• Data parallelism – distributes subsets of the same data across
multiple cores, same operation on each
• Task parallelism – distributing threads across cores, each thread
performing unique operation
• As # of threads grows, so does architectural support for
threading
• CPUs have cores as well as hardware threads
• Consider Oracle SPARC T4 with 8 cores, and 8 hardware threads per
core
Concurrency vs. Parallelism
Concurrent execution on single-core system:
• That is, if application is 75% parallel / 25% serial, moving from 1 to 2 cores
results in speedup of 1.6 times
• As N approaches infinity, speedup approaches 1 / S
• But does the law take into account contemporary multicore systems?
User Threads and Kernel Threads
• Many-to-One
• One-to-One
• Many-to-Many
Many-to-One
• Windows Threads
• Linux Threads
Windows Threads