operating system project

Description

This case study provides students with an opportunity to apply theoretical knowledge of operating systems concepts in real-world scenarios, while also emphasizing teamwork, communication, and ethical considerations in the field of computer science. It has 2 partsand you must divide the work into 5 students with the work. i will upload all the chapters I have macOS so choose this existing system

Don't use plagiarized sources. Get Your Custom Assignment on
operating system project
From as Little as $13/Page

Unformatted Attachment Preview

Chapter 7: Deadlocks
Operating System Concepts – 9th Edition
Silberschatz, Galvin and Gagne ©2013
Chapter 7: Deadlocks

System Model

Deadlock Characterization

Methods for Handling Deadlocks
 Deadlock Prevention

Deadlock Avoidance

Deadlock Detection

Recovery from Deadlock
Operating System Concepts – 9th Edition
7.2
Silberschatz, Galvin and Gagne ©2013
Chapter Objectives
 To develop a description of deadlocks, which prevent
sets of concurrent processes from completing their
tasks
 To present a number of different methods for
preventing or avoiding deadlocks in a computer
system
Operating System Concepts – 9th Edition
7.3
Silberschatz, Galvin and Gagne ©2013
System Model
 System consists of resources
 Resource types R1, R2, . . ., Rm
CPU cycles, memory space, I/O devices
 Each resource type Ri has Wi instances.
 Each process utilizes a resource as follows:

request

use

release
Operating System Concepts – 9th Edition
7.4
Silberschatz, Galvin and Gagne ©2013
Deadlock Characterization
Deadlock can arise if four conditions hold simultaneously.
 Mutual exclusion: only one process at a time can use a
resource
 Hold and wait: a process holding at least one resource is
waiting to acquire additional resources held by other
processes
 No preemption: a resource can be released only voluntarily
by the process holding it, after that process has completed
its task
 Circular wait: there exists a set {P0, P1, …, Pn} of waiting
processes such that P0 is waiting for a resource that is held
by P1, P1 is waiting for a resource that is held by P2, …, Pn–1
is waiting for a resource that is held by Pn, and Pn is waiting
for a resource that is held by P0.
Operating System Concepts – 9th Edition
7.5
Silberschatz, Galvin and Gagne ©2013
Deadlock with Mutex Locks
 Deadlocks can occur via system calls, locking, etc.
 See example box in text page 318 for mutex deadlock
Operating System Concepts – 9th Edition
7.6
Silberschatz, Galvin and Gagne ©2013
Resource-Allocation Graph
A set of vertices V and a set of edges E.
 V is partitioned into two types:

P = {P1, P2, …, Pn}, the set consisting of all the processes
in the system

R = {R1, R2, …, Rm}, the set consisting of all resource
types in the system
 request edge – directed edge Pi ® Rj
 assignment edge – directed edge Rj ® Pi
Operating System Concepts – 9th Edition
7.7
Silberschatz, Galvin and Gagne ©2013
Resource-Allocation Graph (Cont.)
 Process
 Resource Type with 4 instances
 Pi requests instance of Rj
Pi
Rj
 Pi is holding an instance of Rj
Pi
Rj
Operating System Concepts – 9th Edition
7.8
Silberschatz, Galvin and Gagne ©2013
Example of a Resource Allocation Graph
Operating System Concepts – 9th Edition
7.9
Silberschatz, Galvin and Gagne ©2013
Resource Allocation Graph With A Deadlock
Operating System Concepts – 9th Edition
7.10
Silberschatz, Galvin and Gagne ©2013
Graph With A Cycle But No Deadlock
Operating System Concepts – 9th Edition
7.11
Silberschatz, Galvin and Gagne ©2013
Basic Facts
 If graph contains no cycles Þ no deadlock
 If graph contains a cycle Þ

if only one instance per resource type, then deadlock

if several instances per resource type, possibility of
deadlock
Operating System Concepts – 9th Edition
7.12
Silberschatz, Galvin and Gagne ©2013
Methods for Handling Deadlocks
 Ensure that the system will never enter a deadlock
state:

Deadlock prevention

Deadlock avoidence
 Allow the system to enter a deadlock state and then
recover
 Ignore the problem and pretend that deadlocks never
occur in the system; used by most operating systems,
including UNIX
Operating System Concepts – 9th Edition
7.13
Silberschatz, Galvin and Gagne ©2013
Deadlock Prevention
Restrain the ways request can be made
 Mutual Exclusion – not required for sharable resources
(e.g., read-only files); must hold for non-sharable resources
 Hold and Wait – must guarantee that whenever a process
requests a resource, it does not hold any other resources

Require process to request and be allocated all its
resources before it begins execution, or allow process
to request resources only when the process has none
allocated to it.

Low resource utilization; starvation possible
Operating System Concepts – 9th Edition
7.14
Silberschatz, Galvin and Gagne ©2013
Deadlock Prevention (Cont.)
 No Preemption –

If a process that is holding some resources requests
another resource that cannot be immediately allocated to
it, then all resources currently being held are released

Preempted resources are added to the list of resources
for which the process is waiting

Process will be restarted only when it can regain its old
resources, as well as the new ones that it is requesting
 Circular Wait – impose a total ordering of all resource types,
and require that each process requests resources in an
increasing order of enumeration
Operating System Concepts – 9th Edition
7.15
Silberschatz, Galvin and Gagne ©2013
Deadlock Example
/* thread one runs in this function */
void *do_work_one(void *param)
{
pthread_mutex_lock(&first_mutex);
pthread_mutex_lock(&second_mutex);
/** * Do some work */
pthread_mutex_unlock(&second_mutex);
pthread_mutex_unlock(&first_mutex);
pthread_exit(0);
}
/* thread two runs in this function */
void *do_work_two(void *param)
{
pthread_mutex_lock(&second_mutex);
pthread_mutex_lock(&first_mutex);
/** * Do some work */
pthread_mutex_unlock(&first_mutex);
pthread_mutex_unlock(&second_mutex);
pthread_exit(0);
}
Operating System Concepts – 9th Edition
7.16
Silberschatz, Galvin and Gagne ©2013
Deadlock Example with Lock Ordering
void transaction(Account from, Account to, double amount)
{
mutex lock1, lock2;
lock1 = get_lock(from);
lock2 = get_lock(to);
acquire(lock1);
acquire(lock2);
withdraw(from, amount);
deposit(to, amount);
release(lock2);
release(lock1);
}
Transactions 1 and 2 execute concurrently. Transaction 1 transfers $25
from account A to account B, and Transaction 2 transfers $50 from account
B to account A
Operating System Concepts – 9th Edition
7.17
Silberschatz, Galvin and Gagne ©2013
Deadlock Avoidance
Requires that the system has some additional a priori information
available
 Simplest and most useful model requires that each process
declare the maximum number of resources of each type
that it may need
 The deadlock-avoidance algorithm dynamically examines
the resource-allocation state to ensure that there can never
be a circular-wait condition
 Resource-allocation state is defined by the number of
available and allocated resources, and the maximum
demands of the processes
Operating System Concepts – 9th Edition
7.18
Silberschatz, Galvin and Gagne ©2013
Safe State
 When a process requests an available resource, system must
decide if immediate allocation leaves the system in a safe state
 System is in safe state if there exists a sequence
of ALL the processes in the systems such that for each Pi, the
resources that Pi can still request can be satisfied by currently
available resources + resources held by all the Pj, with j < I  That is:  If Pi resource needs are not immediately available, then Pi can wait until all Pj have finished  When Pj is finished, Pi can obtain needed resources, execute, return allocated resources, and terminate  When Pi terminates, Pi +1 can obtain its needed resources, and so on Operating System Concepts – 9th Edition 7.19 Silberschatz, Galvin and Gagne ©2013 Basic Facts  If a system is in safe state Þ no deadlocks  If a system is in unsafe state Þ possibility of deadlock  Avoidance Þ ensure that a system will never enter an unsafe state. Operating System Concepts – 9th Edition 7.20 Silberschatz, Galvin and Gagne ©2013 Safe, Unsafe, Deadlock State Operating System Concepts – 9th Edition 7.21 Silberschatz, Galvin and Gagne ©2013 Avoidance Algorithms  Single instance of a resource type  Use a resource-allocation graph  Multiple instances of a resource type  Use the banker’s algorithm Operating System Concepts – 9th Edition 7.22 Silberschatz, Galvin and Gagne ©2013 Resource-Allocation Graph Scheme  Claim edge Pi ® Rj indicated that process Pj may request resource Rj; represented by a dashed line  Claim edge converts to request edge when a process requests a resource  Request edge converted to an assignment edge when the resource is allocated to the process  When a resource is released by a process, assignment edge reconverts to a claim edge  Resources must be claimed a priori in the system Operating System Concepts – 9th Edition 7.23 Silberschatz, Galvin and Gagne ©2013 Resource-Allocation Graph Operating System Concepts – 9th Edition 7.24 Silberschatz, Galvin and Gagne ©2013 Unsafe State In Resource-Allocation Graph Operating System Concepts – 9th Edition 7.25 Silberschatz, Galvin and Gagne ©2013 Resource-Allocation Graph Algorithm  Suppose that process Pi requests a resource Rj  The request can be granted only if converting the request edge to an assignment edge does not result in the formation of a cycle in the resource allocation graph Operating System Concepts – 9th Edition 7.26 Silberschatz, Galvin and Gagne ©2013 Banker’s Algorithm  Multiple instances  Each process must a priori claim maximum use  When a process requests a resource it may have to wait  When a process gets all its resources it must return them in a finite amount of time Operating System Concepts – 9th Edition 7.27 Silberschatz, Galvin and Gagne ©2013 Data Structures for the Banker’s Algorithm Let n = number of processes, and m = number of resources types.  Available: Vector of length m. If available [j] = k, there are k instances of resource type Rj available  Max: n x m matrix. If Max [i,j] = k, then process Pi may request at most k instances of resource type Rj  Allocation: n x m matrix. If Allocation[i,j] = k then Pi is currently allocated k instances of Rj  Need: n x m matrix. If Need[i,j] = k, then Pi may need k more instances of Rj to complete its task Need [i,j] = Max[i,j] – Allocation [i,j] Operating System Concepts – 9th Edition 7.28 Silberschatz, Galvin and Gagne ©2013 Safety Algorithm 1. Let Work and Finish be vectors of length m and n, respectively. Initialize: Work = Available Finish [i] = false for i = 0, 1, …, n- 1 2. Find an i such that both: (a) Finish [i] = false (b) Needi £ Work If no such i exists, go to step 4 3. Work = Work + Allocationi Finish[i] = true go to step 2 4. If Finish [i] == true for all i, then the system is in a safe state Operating System Concepts – 9th Edition 7.29 Silberschatz, Galvin and Gagne ©2013 Resource-Request Algorithm for Process Pi Requesti = request vector for process Pi. If Requesti [j] = k then process Pi wants k instances of resource type Rj 1. If Requesti £ Needi go to step 2. Otherwise, raise error condition, since process has exceeded its maximum claim 2. If Requesti £ Available, go to step 3. Otherwise Pi must wait, since resources are not available 3. Pretend to allocate requested resources to Pi by modifying the state as follows: Available = Available – Requesti; Allocationi = Allocationi + Requesti; Needi = Needi – Requesti;  If safe Þ the resources are allocated to Pi  If unsafe Þ Pi must wait, and the old resource-allocation state is restored Operating System Concepts – 9th Edition 7.30 Silberschatz, Galvin and Gagne ©2013 Example of Banker’s Algorithm  5 processes P0 through P4; 3 resource types: A (10 instances), B (5instances), and C (7 instances)  Snapshot at time T0: Allocation Max Available ABC ABC ABC P0 010 753 332 P1 200 322 P2 302 902 P3 211 222 P4 002 433 Operating System Concepts – 9th Edition 7.31 Silberschatz, Galvin and Gagne ©2013 Example (Cont.)  The content of the matrix Need is defined to be Max – Allocation Need ABC P0 743 P1 122 P2 600 P3 011 P4 431  The system is in a safe state since the sequence < P1, P3, P4, P2, P0>
satisfies safety criteria
Operating System Concepts – 9th Edition
7.32
Silberschatz, Galvin and Gagne ©2013
Example: P1 Request (1,0,2)
 Check that Request £ Available (that is, (1,0,2) £ (3,3,2) Þ true
Allocation
Need
Available
ABC
ABC
ABC
P0
010
743
230
P1
302
020
P2
302
600
P3
211
011
P4
002
431
 Executing safety algorithm shows that sequence < P1, P3, P4, P0, P2>
satisfies safety requirement
 Can request for (3,3,0) by P4 be granted?
 Can request for (0,2,0) by P0 be granted?
Operating System Concepts – 9th Edition
7.33
Silberschatz, Galvin and Gagne ©2013
Deadlock Detection
 Allow system to enter deadlock state
 Detection algorithm
 Recovery scheme
Operating System Concepts – 9th Edition
7.34
Silberschatz, Galvin and Gagne ©2013
Single Instance of Each Resource Type
 Maintain wait-for graph

Nodes are processes

Pi ® Pj if Pi is waiting for Pj
 Periodically invoke an algorithm that searches for a cycle in the
graph. If there is a cycle, there exists a deadlock
 An algorithm to detect a cycle in a graph requires an order of n2
operations, where n is the number of vertices in the graph
Operating System Concepts – 9th Edition
7.35
Silberschatz, Galvin and Gagne ©2013
Resource-Allocation Graph and Wait-for Graph
Resource-Allocation Graph
Operating System Concepts – 9th Edition
7.36
Corresponding wait-for graph
Silberschatz, Galvin and Gagne ©2013
Several Instances of a Resource Type
 Available: A vector of length m indicates the number of
available resources of each type
 Allocation: An n x m matrix defines the number of resources
of each type currently allocated to each process
 Request: An n x m matrix indicates the current request of
each process. If Request [i][j] = k, then process Pi is
requesting k more instances of resource type Rj.
Operating System Concepts – 9th Edition
7.37
Silberschatz, Galvin and Gagne ©2013
Detection Algorithm
1. Let Work and Finish be vectors of length m and n, respectively
Initialize:
(a) Work = Available
(b) For i = 1,2, …, n, if Allocationi ¹ 0, then
Finish[i] = false; otherwise, Finish[i] = true
2. Find an index i such that both:
(a) Finish[i] == false
(b) Requesti £ Work
If no such i exists, go to step 4
Operating System Concepts – 9th Edition
7.38
Silberschatz, Galvin and Gagne ©2013
Detection Algorithm (Cont.)
3. Work = Work + Allocationi
Finish[i] = true
go to step 2
4. If Finish[i] == false, for some i, 1 £ i £ n, then the system is in
deadlock state. Moreover, if Finish[i] == false, then Pi is
deadlocked
Algorithm requires an order of O(m x n2) operations to detect
whether the system is in deadlocked state
Operating System Concepts – 9th Edition
7.39
Silberschatz, Galvin and Gagne ©2013
Example of Detection Algorithm
 Five processes P0 through P4; three resource types
A (7 instances), B (2 instances), and C (6 instances)
 Snapshot at time T0:
Allocation
Request
Available
ABC
ABC
ABC
P0
010
000
000
P1
200
202
P2
303
000
P3
211
100
P4
002
002
 Sequence will result in Finish[i] = true for all i
Operating System Concepts – 9th Edition
7.40
Silberschatz, Galvin and Gagne ©2013
Example (Cont.)
 P2 requests an additional instance of type C
Request
ABC
P0
000
P1
202
P2
001
P3
100
P4
002
 State of system?

Can reclaim resources held by process P0, but insufficient
resources to fulfill other processes; requests

Deadlock exists, consisting of processes P1, P2, P3, and P4
Operating System Concepts – 9th Edition
7.41
Silberschatz, Galvin and Gagne ©2013
Detection-Algorithm Usage
 When, and how often, to invoke depends on:

How often a deadlock is likely to occur?

How many processes will need to be rolled back?
4 one for each disjoint cycle
 If detection algorithm is invoked arbitrarily, there may be many
cycles in the resource graph and so we would not be able to tell
which of the many deadlocked processes “caused” the
deadlock.
Operating System Concepts – 9th Edition
7.42
Silberschatz, Galvin and Gagne ©2013
Recovery from Deadlock: Process Termination
 Abort all deadlocked processes
 Abort one process at a time until the deadlock cycle is eliminated
 In which order should we choose to abort?
1.
Priority of the process
2.
How long process has computed, and how much longer to
completion
3.
Resources the process has used
4.
Resources process needs to complete
5.
How many processes will need to be terminated
6.
Is process interactive or batch?
Operating System Concepts – 9th Edition
7.43
Silberschatz, Galvin and Gagne ©2013
Recovery from Deadlock: Resource Preemption
 Selecting a victim – minimize cost
 Rollback – return to some safe state, restart process for that
state
 Starvation – same process may always be picked as victim,
include number of rollback in cost factor
Operating System Concepts – 9th Edition
7.44
Silberschatz, Galvin and Gagne ©2013
End of Chapter 7
Operating System Concepts – 9th Edition
Silberschatz, Galvin and Gagne ©2013
Chapter 4: Multithreaded
Programming
Operating System Concepts – 9th Edition
Silberschatz, Galvin and Gagne ©2013
Chapter 4: Multithreaded Programming
!
Overview
!
Multicore Programming
!
Multithreading Models
!
Thread Libraries
!
Implicit Threading
!
Threading Issues
!
Operating System Examples
Operating System Concepts – 9th Edition
4.2
Silberschatz, Galvin and Gagne ©2013
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
Operating System Concepts – 9th Edition
4.3
Silberschatz, Galvin and Gagne ©2013
Motivation
!
Thread is a basic unit of CPU utilization, it consists a thread ID, a program counter, a register set, and a stack.
!
It shares with other threads belonging to the same process its code section, data section, and other operating
system resources such as open files and signals
!
Traditional process (heavy-weigh) process has a single thread of control.
!
If a process has Multiple threads of control, it can perform more than one task at a time
!
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
Operating System Concepts – 9th Edition
4.4
Silberschatz, Galvin and Gagne ©2013
Single and Multithreaded Processes
code
registers
data
files
code
data
files
stack
registers
registers
registers
stack
stack
stack
thread
thread
single-threaded process
Operating System Concepts – 9th Edition
multithreaded process
4.5
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
Operating System Concepts – 9th Edition
4.6
Silberschatz, Galvin and Gagne ©2013
Multicore Programming
!
Single Chip contains multiple computing cores where each core appears as a separate processor
to the OS
!
Multithreaded programming provides a mechanism for more efficient use of multiple core and
provided concurrency.
!
!
System with a single computing core: concurrency mean execution of the threads will be
interleaved .
!
System with multiple cores: concurrency means that threads run in parallel.
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
!
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.7
Silberschatz, Galvin and Gagne ©2013
Concurrency vs. Parallelism
!
Concurrent execution on single-core system:
single core
T1
T2
T3
T4
T1
T2
T3
T4
T1

time
!
Parallelism on a multi-core system:
core 1
T1
T3
T1
T3
T1

core 2
T2
T4
T2
T4
T2

time
Operating System Concepts – 9th Edition
4.8
Silberschatz, Galvin and Gagne ©2013
User Threads and Kernel Threads
!
User threads – management done by user-level threads library
!
Three primary thread libraries:
!
POSIX Pthreads
!
Win32 threads
!
Java threads
!
Kernel threads – Supported by the Kernel
!
Examples – virtually all general purpose operating systems, including:
!
Windows
!
Solaris
!
Linux
!
Tru64 UNIX
!
Mac OS X
Operating System Concepts – 9th Edition
4.9
Silberschatz, Galvin and Gagne ©2013
Multithreading Models
!
Many-to-One
!
One-to-One
!
Many-to-Many
Operating System Concepts – 9th Edition
4.10
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 muticore system
because only one may be in kernel at a time
!
Few systems currently use this model
user thread
!
Examples:
!
Solaris Green Threads
!
GNU Portable Threads
k
Operating System Concepts – 9th Edition
4.11
kernel thread
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 many-to-one
!
Number of threads per process sometimes restricted due to overhead
!
Examples
!
Windows NT/XP/2000
!
Linux
!
Solaris 9 and later
user thread
k
Operating System Concepts – 9th Edition
k
k
k
4.12
kernel thread
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
!
Solaris prior to version 9
!
Windows NT/2000 with the ThreadFiber package
user thread
k
Operating System Concepts – 9th Edition
4.13
k
k
kernel thread
Silberschatz, Galvin and Gagne ©2013
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
user thread
k
Operating System Concepts – 9th Edition
4.14
k
k
k
kernel thread
Silberschatz, Galvin and Gagne ©2013
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 – 9th Edition
4.15
Silberschatz, Galvin and Gagne ©2013
Pthreads
!
May be provided either as user-level or kernel-level
!
A POSIX standard (IEEE 1003.1c) API for thread creation and synchronization
!
Specification, not implementation
!
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)
Operating System Concepts – 9th Edition
4.16
Silberschatz, Galvin and Gagne ©2013
Pthreads Example
Operating System Concepts – 9th Edition
4.17
Silberschatz, Galvin and Gagne ©2013
Pthreads Example (Cont.)
Operating System Concepts – 9th Edition
4.18
Silberschatz, Galvin and Gagne ©2013
Pthreads Code for Joining 10 Threads
Operating System Concepts – 9th Edition
4.19
Silberschatz, Galvin and Gagne ©2013
Win32 API Multithreaded C Program
Operating System Concepts – 9th Edition
4.20
Silberschatz, Galvin and Gagne ©2013
Win32 API Multithreaded C Program (Cont.)
Operating System Concepts – 9th Edition
4.21
Silberschatz, Galvin and Gagne ©2013
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
Operating System Concepts – 9th Edition
4.22
Silberschatz, Galvin and Gagne ©2013
Java Multithreaded Program
Operating System Concepts – 9th Edition
4.23
Silberschatz, Galvin and Gagne ©2013
Java Multithreaded Program (Cont.)
Operating System Concepts – 9th Edition
4.24
Silberschatz, Galvin and Gagne ©2013
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
!
Separating task to be performed from mechanics of creating task allows different strategies for
running task
4
!
i.e.Tasks could be scheduled to run periodically
Windows API supports thread pools:
Operating System Concepts – 9th Edition
4.25
Silberschatz, Galvin and Gagne ©2013
Threading Issues
!
Semantics of fork() and exec() system calls
!
Signal handling
!
!
Synchronous and asynchronous
Thread cancellation of target thread
!
Asynchronous or deferred
!
Thread-local storage
!
Scheduler Activations
Operating System Concepts – 9th Edition
4.26
Silberschatz, Galvin and Gagne ©2013
Semantics of fork() and exec()
!
Does fork()duplicate only the calling thread or all threads?
!
!
Some UNIXes have two versions of fork
Exec() usually works as normal – replace the running process including all threads
Operating System Concepts – 9th Edition
4.27
Silberschatz, Galvin and Gagne ©2013
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
!
!
1.
Signal is generated by particular event
2.
Signal is delivered to a process
3.
Signal is handled by one of two signal handlers:
1.
default
2.
user-defined
Every signal has default handler that kernel runs when handling signal
!
User-defined signal handler can override default
!
For single-threaded, signal delivered to process
Where should a signal be delivered for multi-threaded?
!
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
Operating System Concepts – 9th Edition
4.28
Silberschatz, Galvin and Gagne ©2013
Thread Cancellation
!
Terminating a thread before it has finished
!
Thread to be canceled is target thread
!
Two general approaches:
!
!
Asynchronous cancellation terminates the target thread immediately
!
Deferred cancellation allows the target thread to periodically check if it should be cancelled
Pthread code to create and cancel a thread:
Operating System Concepts – 9th Edition
4.29
Silberschatz, Galvin and Gagne ©2013
Scheduler Activations
!
Both M:M and Two-level models require communication to maintain the
appropriate number of kernel threads allocated to the application
!
Typically use an intermediate data structure between user and kernel
threads – lightweight process (LWP)
!
Appears to be a virtual processor on which process can schedule
user thread to run
!
Each LWP attached to kernel thread
!
How many LWPs to create?
!
Scheduler activations provide upcalls – a communication mechanism
from the kernel to the upcall handler in the thread library
!
This communication allows an application to maintain the correct
number kernel threads
Operating System Concepts – 9th Edition
4.30
Silberschatz, Galvin and Gagne ©2013
Operating System Examples
!
Windows XP Threads
!
Linux Thread
Operating System Concepts – 9th Edition
4.31
Silberschatz, Galvin and Gagne ©2013
Windows Threads
!
Windows implements the Windows API – primary API for Win 98, Win NT, Win 2000, Win XP, and Win 7
!
Implements the one-to-one mapping, kernel-level
!
Each thread contains
!
A thread id
!
Register set representing state of processor
!
Separate user and kernel stacks for when thread runs in user mode or kernel mode
!
Private data storage area used by run-time libraries and dynamic link libraries (DLLs)
!
The register set, stacks, and private storage area are known as the context of the thread
!
The primary data structures of a thread include:
!
ETHREAD (executive thread block) – includes pointer to process to which thread belongs and to
KTHREAD, in kernel space
!
KTHREAD (kernel thread block) – scheduling and synchronization info, kernel-mode stack, pointer
to TEB, in kernel space
!
TEB (thread environment block) – thread id, user-mode stack, thread-local storage, in user space
Operating System Concepts – 9th Edition
4.32
Silberschatz, Galvin and Gagne ©2013
Windows XP Threads Data Structures
ETHREAD
thread start
address
pointer to
parent process



KTHREAD
scheduling
and
synchronization
information
kernel
stack
TEB
thread identifier



user
stack
thread-local
storage



kernel space
Operating System Concepts – 9th Edition
user space
4.33
Silberschatz, Galvin and Gagne ©2013
Linux Threads
!
Linux refers to them as tasks rather than threads
!
Thread creation is done through clone() system call
!
clone() allows a child task to share the address space of the parent task (process)
!
!
Flags control behavior
flag
meaning
CLONE_FS
File-system information is shared.
CLONE_VM
The same memory space is shared.
CLONE_SIGHAND
Signal handlers are shared.
CLONE_FILES
The set of open files is shared.
struct task_struct points to process data structures (shared or unique)
Operating System Concepts – 9th Edition
4.34
Silberschatz, Galvin and Gagne ©2013
Chapter 3: Process Concept
Operating System Concepts – 9th Edition
Silberschatz, Galvin and Gagne ©2013
Chapter 3: Process Concept
!
Process Concept
!
Process Scheduling
!
Operations on Processes
!
Interprocess Communication
!
Examples of IPC Systems
!
Communication in Client-Server Systems
Operating System Concepts – 9th Edition
3.2
Silberschatz, Galvin and Gagne ©2013
Objectives
!
To introduce the notion of a process — a program in execution, which forms the basis of all
computation
!
To describe the various features of processes, including scheduling, creation and termination,
and communication
!
To explore interprocess communication using shared memory and mes- sage passing
!
To describe communication in client-server systems
Operating System Concepts – 9th Edition
3.3
Silberschatz, Galvin and Gagne ©2013
Process Concept
!
An operating system executes a variety of programs:
!
!
Batch system – jobs
Time-shared systems – user programs or tasks
!
Textbook uses the terms job and process almost interchangeably
Process – a program in execution; process execution must progress in sequential fashion
!
Multiple parts
!
!
The program code, also called text section
!
Current activity including program counter, processor registers
!
Stack containing temporary data
4
!
Function parameters, return addresses, local variables
!
Data section containing global variables
!
Heap containing memory dynamically allocated during run time
Program is passive entity stored on disk (executable file), process is active
!
Program becomes process when executable file loaded into memory
!
Execution of program started via GUI mouse clicks, command line entry of its name, etc
!
One program can be several processes
!
Consider multiple users executing the same program
Operating System Concepts – 9th Edition
3.4
Silberschatz, Galvin and Gagne ©2013
Process in Memory
Operating System Concepts – 9th Edition
3.5
Silberschatz, Galvin and Gagne ©2013
Process State
!
As a process executes, it changes state
!
new: The process is being created
!
running: Instructions are being executed
!
waiting: The process is waiting for some event to occur
!
ready: The process is waiting to be assigned to a processor
!
terminated: The process has finished execution
Operating System Concepts – 9th Edition
3.6
Silberschatz, Galvin and Gagne ©2013
Diagram of Process State
Operating System Concepts – 9th Edition
3.7
Silberschatz, Galvin and Gagne ©2013
Process Control Block (PCB)
Information associated with each process
(also called task control block)
!
Process state – running, waiting, etc
!
Program counter – location of instruction to next execute
!
CPU registers – contents of all process-centric registers
!
CPU scheduling information- priorities, scheduling queue
pointers
!
Memory-management information – memory allocated to
the process
!
Accounting information – CPU used, clock time elapsed
since start, time limits
!
I/O status information – I/O devices allocated to process, list
of open files
Operating System Concepts – 9th Edition
3.8
Silberschatz, Galvin and Gagne ©2013
CPU Switch From Process to Process
Operating System Concepts – 9th Edition
3.9
Silberschatz, Galvin and Gagne ©2013
Threads
!
So far, process has a single thread of execution
!
Consider having multiple program counters per process
!
M