0% found this document useful (0 votes)
38 views22 pages

Unit II Threads

This chapter discusses threads and multithreading. It covers thread models like many-to-one, one-to-one, and many-to-many. It also covers thread libraries like Pthreads, Win32, and Java threads. Finally, it discusses issues with multithreaded programming like concurrency, parallelism, and load balancing.

Uploaded by

Jaswanth Kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
38 views22 pages

Unit II Threads

This chapter discusses threads and multithreading. It covers thread models like many-to-one, one-to-one, and many-to-many. It also covers thread libraries like Pthreads, Win32, and Java threads. Finally, it discusses issues with multithreaded programming like concurrency, parallelism, and load balancing.

Uploaded by

Jaswanth Kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 22

Chapter 4: Threads

Operating System Concepts – 8th Edition 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 – 8th Edition 4.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 – 8th Edition 4.3 Silberschatz, Galvin and Gagne ©2009
Motivation
 Threads run within application
 Basic unit of CPU Utilization
 It comprises of Thread Id,PC, register set, stack
 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
Single and Multithreaded Processes

Operating System Concepts – 8th Edition 4.5 Silberschatz, Galvin and Gagne ©2009
Benefits
 Responsiveness:
 Multithreading an interactive application may allow a program to
continue running even if part of it is blocked or is performing a
lengthy operation, thereby increasing responsiveness to the user

 Resource Sharing
 The benefit of sharing code and data is that it allows an
application to have several different threads of activity within the
same address space.
 Economy
 threads share the resources of the process to which they belong,
it is more economical to create and context-switch threads.

 Scalability : Multi Threading on multiple CPU increases parallelism

Operating System Concepts – 8th Edition 4.6 Silberschatz, Galvin and Gagne ©2009
Multicore Programming
 Multicore systems putting pressure on programmers, challenges
include:
 Dividing activities: identifying areas that can be divided into
separate concurrent tasks.
 Balance: while identifying look for equal work equal value
tasks
 Data splitting: data accessed and manipulated by the tasks
must be divided
 Data dependency: should look for data dependencies
 Testing and debugging:

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

Operating System Concepts – 8th Edition 4.8 Silberschatz, Galvin and Gagne ©2009
Concurrent Execution on a
Single-core System

Operating System Concepts – 8th Edition 4.9 Silberschatz, Galvin and Gagne ©2009
Parallel Execution on a
Multicore System

Operating System Concepts – 8th Edition 4.10 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.11 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.12 Silberschatz, Galvin and Gagne ©2009
Multithreading Models
 Many-to-One

 One-to-One

 Many-to-Many

Operating System Concepts – 8th Edition 4.13 Silberschatz, Galvin and Gagne ©2009
Many-to-One
 Many user-level threads mapped to single kernel thread
 Thread management is done by the thread library in the user space
 The entire process will block if a thread makes a blocking system
call
 Because only one thread can access the kernel at a time, multiple
threads are unable to run in parallel on multiprocessor system.

 Examples:
 Solaris Green Threads
 GNU Portable Threads

Operating System Concepts – 8th Edition 4.14 Silberschatz, Galvin and Gagne ©2009
Many-to-One Model

Operating System Concepts – 8th Edition 4.15 Silberschatz, Galvin and Gagne ©2009
One-to-One
 Each user-level thread maps to kernel thread
 Provides more concurrency than many to one, by allowing another
thread to run when a thread make a blocking system call
 Allows multiple threads to run in parallel on multiprocessor system.

 Creating a user thread requires creating a corresponding kernel


thread.
 Because the overhead of creating the kernel thread can burden the
performance of the application most implementations of this model
restrict the number of threads supported by the system
 Examples
 Windows NT/XP/2000
 Linux
 Solaris 9 and later

Operating System Concepts – 8th Edition 4.16 Silberschatz, Galvin and Gagne ©2009
One-to-one Model

Operating System Concepts – 8th Edition 4.17 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

 When a thread performs a blocking system call, the kernel can


schedule another thread for execution.

 Solaris prior to version 9

 Windows NT/2000 with the ThreadFiber package

Operating System Concepts – 8th Edition 4.18 Silberschatz, Galvin and Gagne ©2009
Many-to-Many Model

Operating System Concepts – 8th Edition 4.19 Silberschatz, Galvin and Gagne ©2009
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

Operating System Concepts – 8th Edition 4.20 Silberschatz, Galvin and Gagne ©2009
Two-level Model

Operating System Concepts – 8th Edition 4.21 Silberschatz, Galvin and Gagne ©2009
Consider three processes, all arriving at time zero,
with total execution time of 10, 20 and 30 units,
respectively. Each process spends the first 20% of
execution time doing I/O, the next 70% of time
doing computation, and the last 10% of time doing
I/O again. The operating system uses a shortest
remaining compute time first scheduling algorithm
and schedules a new process either when the
running process gets blocked on I/O or when the
running process finishes its compute burst. Assume
that all I/O operations can be overlapped as much
as possible. For what percentage of time does the
CPU remain idle?

Operating System Concepts – 8th Edition 4.22 Silberschatz, Galvin and Gagne ©2009

You might also like