You are on page 1of 19

Chapter 4: Threads

Operating System Concepts – 9th Edition Silberschatz, Galvin and Gagne ©2013
Introduction
 Multitasking is the feature that allows your computer to run two or more programs
concurrently and Multithreading is a specialized form of multitasking
 Two types of multitasking:
 process-based  handles the concurrent execution of programs
 thread-based handles concurrent execution of pieces of the same program
 A thread is also called a lightweight process. Threads provide a way to improve
application performance through parallelism.
 A multithreaded program contains two or more parts that can run concurrently.
 Each part of such a program is called a thread, and each thread defines a
separate path of execution.
 A thread is a semi-process, that has its own stack, and executes a given piece of
code
 Unlike a real process, the thread normally shares its memory with other threads

Operating System Concepts – 9th Edition 4.2 Silberschatz, Galvin and Gagne ©2013
Threads
 Thread vs process:
 Thread is the segment of a process means a process can have
multiple threads and these multiple threads are contained within
a process.
 a Thread of execution is the smallest sequence of programmed instructions that
can be managed independently
 Thread- a light-weight process executing in the address space of the process
 Thread – a separately schedulable sequential execution stream within a
process
 A Thread Group is a set of threads all executing inside the same process
 Multiple threads can run in same address space so can access the same global
variables, same heap memory, same set of file descriptors, etc.
 Why threads?
 Process creation is expensive
 Save memory space

Operating System Concepts – 9th Edition 4.3 Silberschatz, Galvin and Gagne ©2013
Threads…

Single-threaded Process Multiplethreaded Process


Threads of
Execution

Single instruction stream Multiple instruction stream


Common
Address Space

Operating System Concepts – 9th Edition 4.4 Silberschatz, Galvin and Gagne ©2013
Threads…
• Thread-control-block

Operating System Concepts – 9th Edition 4.5 Silberschatz, Galvin and Gagne ©2013
Single and Multithreaded Processes

Operating System Concepts – 9th Edition 4.6 Silberschatz, Galvin and Gagne ©2013
Motivation

 Most modern applications are multithreaded


 Threads run within 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

Operating System Concepts – 9th Edition 4.7 Silberschatz, Galvin and Gagne ©2013
Multithreaded Server Architecture

Operating System Concepts – 9th Edition 4.8 Silberschatz, Galvin and Gagne ©2013
Benefits

 Responsiveness – may allow continued execution if part of


process is blocked, especially important for user interfaces
 Resource Sharing – threads share resources of process, easier
than shared memory or message passing
 Economy – cheaper than process creation, thread switching
lower overhead than context switching
 Scalability – process can take advantage of multiprocessor
architectures – Single threaded can run only on one core
irrespective of no. of processors

Operating System Concepts – 9th Edition 4.9 Silberschatz, Galvin and Gagne ©2013
Multicore Programming

 Multicore or multiprocessor systems putting pressure on


programmers, challenges include:
 Dividing activities
 Balance
 Data splitting
 Data dependency
 Testing and debugging
 Parallelism implies a system can perform more than one task
simultaneously
 Concurrency supports more than one task making progress
 Single processor / core, scheduler providing concurrency

Operating System Concepts – 9th Edition 4.10 Silberschatz, Galvin and Gagne ©2013
Concurrency vs. Parallelism
 Concurrent execution on single-core system:

 Parallelism on a multi-core system:

Operating System Concepts – 9th Edition 4.11 Silberschatz, Galvin and Gagne ©2013
Multicore Programming (Cont.)

 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

Operating System Concepts – 9th Edition 4.12 Silberschatz, Galvin and Gagne ©2013
User Threads and Kernel Threads
 User threads - management done by user- without kernel support
 Three primary thread libraries:
 POSIX Pthreads
 Windows threads
 Java threads
 Kernel threads - Supported and managed directly by the Kernel
 Examples – virtually all general purpose operating systems, including:
 Windows
 Solaris
 Linux
 Tru64 UNIX
 Mac OS X
 Solaris 2 supports both

Operating System Concepts – 9th Edition 4.13 Silberschatz, Galvin and Gagne ©2013
Kernel Level Thread User Level Thread

Operating System Concepts – 9th Edition 4.14 Silberschatz, Galvin and Gagne ©2013
Multithreading Models

 Many-to-One

 One-to-One

 Many-to-Many

Operating System Concepts – 9th Edition 4.15 Silberschatz, Galvin and Gagne ©2013
Many-to-One

 Many user-level threads mapped to


single kernel thread
 One thread blocking causes all to block
 Multiple threads may not run in parallel
on multicore system because only One
thread can access the kernel at a time
 Scheduling is fair among processes
 Few systems currently use this model
 Examples:
 POSIX pthread
 Solaris Green Threads
 GNU Portable Threads

Operating System Concepts – 9th Edition 4.16 Silberschatz, Galvin and Gagne ©2013
One-to-One
 Each user-level thread maps to kernel thread
 Creating a user-level thread creates a kernel
thread
 More concurrency than one-to-many if one
thread makes a blocking call
 Number of threads per process sometimes
restricted due to overhead
 Examples
 Windows
 Linux
 Solaris 9 and later

Operating System Concepts – 9th Edition 4.17 Silberschatz, Galvin and Gagne ©2013
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
 Number of Kernal level threads are <=
number of user level threads
 No true concurrency
 Kernel schedule another thread if a
user level thread makes a blocking
system call
 Solaris prior to version 9
 Windows with the ThreadFiber
package

Operating System Concepts – 9th Edition 4.18 Silberschatz, Galvin and Gagne ©2013
Operations on threads
 Creating Threads
 pthread_create (thread, attr, start_routine, arg)
 Attrstack size and scheduling information
 Terminating Thread Execution
 pthread_exit (status)
 Passing Arguments to Threads
 Joining Threads
 pthread_join (threadid, status)  blocks the calling thread until the specified threadid
thread terminates
 Detaching / Undetaching Threads
 pthread_detach (threadid)

 POSIX is a standardized programming interface


 POSIX threads or pthreads
 Pthreads are defined as a set of C language programming types and procedure calls

Operating System Concepts – 9th Edition 4.19 Silberschatz, Galvin and Gagne ©2013

You might also like