0% found this document useful (0 votes)
12 views34 pages

TFCS 4

This document discusses threads and multithreading. It covers thread models like many-to-one, one-to-one and many-to-many. It also discusses thread libraries like Pthreads, Win32 API and Java threads. It describes concepts like thread cancellation, signal handling, thread pools and scheduler activations. The overall purpose is to introduce threads and examine issues in multithreaded programming.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views34 pages

TFCS 4

This document discusses threads and multithreading. It covers thread models like many-to-one, one-to-one and many-to-many. It also discusses thread libraries like Pthreads, Win32 API and Java threads. It describes concepts like thread cancellation, signal handling, thread pools and scheduler activations. The overall purpose is to introduce threads and examine issues in multithreaded programming.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 34

Balkh University

Computer science Faculty


Technical Foundation of
Computer science-1 (TFCS-1)
Chapter 4: Thread

Nasratullah Walizada Balkh university 2023


Chapter 4: Threads

 Overview
 Multithreading Models
 Thread Libraries
 Threading Issues
 Operating System Examples
 Windows XP Threads
 Linux Threads

Nasratullah Walizada Balkh university 2023


2
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

Nasratullah Walizada Balkh university 2023


3
Motivation

 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
 Kernels are generally multithreaded Nasratullah Walizada Balkh university 2023
4
Single and Multithreaded Processes

Nasratullah Walizada Balkh university 2023


5
Benefits

 Responsiveness

 Resource Sharing

 Economy

 Scalability

Nasratullah Walizada Balkh university 2023


6
Multicore Programming

 Multicore systems putting pressure on programmers, challenges include:


 Dividing activities
 Balance
 Data splitting
 Data dependency
 Testing and debugging

Nasratullah Walizada Balkh university 2023


7
Multithreaded Server Architecture

Nasratullah Walizada Balkh university 2023


8
Concurrent Execution on a
Single-core System

Nasratullah Walizada Balkh university 2023


9
Parallel Execution on a Multicore System

Nasratullah Walizada Balkh university 2023


10
Multithreading Models

 Many-to-One

 One-to-One

 Many-to-Many

Nasratullah Walizada Balkh university 2023


11
Many-to-One
 Many user-level threads mapped to single kernel thread

 Examples:
 Solaris Green Threads
 GNU Portable Threads

Nasratullah Walizada Balkh university 2023


12
Many-to-One Model

Nasratullah Walizada Balkh university 2023


One-to-One
 Each user-level thread maps to kernel thread

 Examples
 Windows NT/XP/2000
 Linux
 Solaris 9 and later

Nasratullah Walizada Balkh university 2023


14
One-to-one Model

Nasratullah Walizada Balkh university 2023


15
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

Nasratullah Walizada Balkh university 2023


16
Many-to-Many Model

Nasratullah Walizada Balkh university 2023


17
Two-level Model
 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

Nasratullah Walizada Balkh university 2023


18
Two-level Model

Nasratullah Walizada Balkh university 2023


19
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

Nasratullah Walizada Balkh university 2023


20
Pthreads
 May be provided either as user-level or kernel-level

 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 (Solaris, Linux, Mac OS X)

Nasratullah Walizada Balkh university 2023


21
Pthreads Example

Nasratullah Walizada Balkh university 2023


22
Pthreads Example (Cont.)

Nasratullah Walizada Balkh university 2023


23
Win32 API Multithreaded C Program

Nasratullah Walizada Balkh university 2023


24
Win32 API Multithreaded C Program (Cont.)

Nasratullah Walizada Balkh university 2023


25
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
Nasratullah Walizada Balkh university 2023
26
Java Multithreaded Program

Nasratullah Walizada Balkh university 2023


27
Java Multithreaded Program (Cont.)

Nasratullah Walizada Balkh university 2023


28
Thread Cancellation

 Terminating a thread before it has finished

 Two general approaches:


 Asynchronous cancellation terminates the target thread
immediately.
 Deferred cancellation allows the target thread to periodically
check if it should be cancelled.

Nasratullah Walizada Balkh university 2023


29
Signal Handling
 Signals are used in UNIX systems to notify a process that a
particular event has occurred.

 A signal handler is used to process signals


 Signal is generated by particular event
 Signal is delivered to a process
 Signal is handled

 Options:
 Deliver the signal to the thread to which the signal applies
 Deliver the signal to every thread in the process
 Deliver the signal to certain threads in the process
 Assign a specific thread to receive all signals for the
process
Nasratullah Walizada Balkh university 2023
30
Thread Pools
 Create a number of threads in a pool
where they await work

 Advantages:
 Usually slightly faster to service a
request with an existing thread than
create a new thread
 Allows the number of threads in the
application(s) to be bound to the
size of the pool

Nasratullah Walizada Balkh university 2023


31
Scheduler Activations

 Both M:M and Two-level models require communication to


maintain the appropriate number of kernel threads allocated
to the application

 Scheduler activations provide upcalls - a communication


mechanism from the kernel to the thread library

 This communication allows an application to maintain the


correct number kernel threads

Nasratullah Walizada Balkh university 2023


32
Lightweight Processes

Nasratullah Walizada Balkh university 2023


33
End of Chapter 4

Nasratullah Walizada Balkh university 2023


34

You might also like