1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit....

63
1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote for the assignment.

Transcript of 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit....

Page 1: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

1

Announcements

• The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit.

• Comments for the code should be on the parts you wrote for the assignment.

Page 2: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

2

Concurrency: Deadlock and Starvation

Chapter 6

Page 3: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

3

Page 4: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

4

Deadlock

• Permanent blocking of a set of processes that either compete for system resources or communicate with each other

• No efficient solution

• Involve conflicting needs for resources by two or more processes

Page 5: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

5

Deadlock Example

P1 P2 . . Get A Get B

. . Get B Get A . .

Release A Release BRelease B Release A

Page 6: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

6

Page 7: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

7

Deadlock Example

P1 P2 . .

Get A Get B . .Release A Get A . .Get B Release BRelease B Release A

Page 8: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

8

Page 9: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

9

Deadlock Environment

• Mutual exclusion– Only one process may use a resource at a

time

• Hold-and-wait– A process may hold allocated resources

while awaiting assignment of others

• No preemption– No resource can be forcibly removed form a

process holding it

Page 10: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

10

Condition for Deadlock

• Circular wait– A closed chain of processes exists, such that each

process holds at least one resource needed by the next process in the chain

Page 11: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

11

Deadlock Prevention

• Mutual Exclusion– Must be supported by the operating system

• Hold and Wait– Require a process request all of its required

resources at one time

Page 12: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

12

Deadlock Prevention

• No Preemption– Process must release resource and request

again– Operating system may preempt a process to

require it releases its resources

• Circular Wait– Define a linear ordering of resource types

Page 13: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

13

Deadlock Avoidance

• A decision is made dynamically whether the current resource allocation request will, if granted, potentially lead to a deadlock

• Requires knowledge of future process request

Page 14: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

14

Two Approaches to Deadlock Avoidance

• Do not start a process if its demands might lead to deadlock

• Do not grant an incremental resource request to a process if this allocation might lead to deadlock

Page 15: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

15

Determination of a Safe StateInitial State

Page 16: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

16

Determination of a Safe StateP2 Runs to Completion

Page 17: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

17

Determination of a Safe StateP1 Runs to Completion

Page 18: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

18

Determination of a Safe StateP3 Runs to Completion

Page 19: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

19

Resource Allocation Denial

• Referred to as the banker’s algorithm

• State of the system is the current allocation of resources to process

• Safe state is where there is at least one sequence that does not result in deadlock

• Unsafe state is a state that will lead to deadlock if no resources released and rest requested.

Page 20: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

20

Reusable Resources

• Used by only one process at a time and not depleted by that use

• Processes obtain resources that they later release for reuse by other processes

• Processors, I/O channels, main and secondary memory, devices, and data structures such as files, databases, and semaphores

• Deadlock occurs if each process holds one resource and requests the other

Page 21: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

21

Consumable Resources

• Created (produced) and destroyed (consumed)

• Interrupts, signals, messages, and information in I/O buffers

• Deadlock may occur if a Receive message is blocking

• May take a rare combination of events to cause deadlock

Page 22: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

22

Example of Reusable Deadlock

• Deadlock occurs if receive is blocking

P1. . .

. . .Receive(P2);

Send(P2, M1);

P2. . .

. . .Receive(P1);

Send(P1, M2);

Page 23: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

23

Deadlock AvoidanceSummary

• Maximum resource requirement must be stated in advance

• Processes under consideration must be independent; no synchronization requirements

• There must be a fixed number of resources to allocate

• No process may exit while holding resources

Page 24: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

24

Sites on Deadlock

• http://access1.sun.com/techarticles/CAT/deadlock.html

• http://www.javaspecialists.co.za/archive/Issue093.html

• http://news.zdnet.com/2100-9595_22-982905.html

Page 25: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

25

Deadlock Detection

Page 26: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

26

Strategies once Deadlock Detected

• Abort all deadlocked processes• Back up each deadlocked process to

some previously defined checkpoint, and restart all process– Original deadlock may occur

• Successively abort deadlocked processes until deadlock no longer exists

• Successively preempt resources until deadlock no longer exists

Page 27: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

27

Selection Criteria Deadlocked Processes

• Least amount of processor time consumed so far

• Least number of lines of output produced so far

• Most estimated time remaining

• Least total resources allocated so far

• Lowest priority

Page 28: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

28

Strengths and Weaknesses of the Strategies

Page 29: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

29

Real World Solutions

• Integrated Deadlock Strategy– Group resources into different classes and

enforce a linear ordering strategy.• Prevention (avoiding circular waits)

• Within classes can still have multiple access.

Page 30: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

30

Example Classes

• Swappable space : Virtual Memory– Must make all requests at the same time.

(Avoiding the Hold-and-Wait problem)

• Process Resources : Assignable devices (ex: tape drives and files)– Know ahead of time (avoidance)– Linear ordering (circular wait nullified)

• Main Memory : – Preemption -> swap out to virtual memory

Page 31: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

31

Example Classes

• Internal Resources : I/O channels– Resource ordering.

Page 32: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

32

Dining Philosophers Problem

Page 33: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

33

Dining Philosophers Problem

Page 34: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

34

Dining Philosophers Problem

Page 35: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

35

Dining Philosophers Problem

Page 36: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

36

Dining Philosophers Problem

Page 37: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

37

Deadlock in OS

• Most Operating Systems assume deadlock won’t occur.– Within the kernel processes.

• Make all kernel level resource allocations deadlock free.– Get all.– Preemption.– Linear ordering.

• Side Note: Interrupts can play havok in OS design.• How does the kernel determine what is a resource

to be concerned about?

Page 38: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

38

UNIX Concurrency Mechanisms

• Shared memory– Block of memory that both processes have access

to. Similar to a pipe, with fewer built in controls.

• Pipes– Sending messages but a fixed byte size to store the

message.

• Messages (msgsnd and msgrcv)– Able to store messages in a queue.

– Blocks on send when queue full and on a read when queue empty.

Page 39: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

39

UNIX Concurrency Mechanisms

• Semaphores (semWait and semSignal)– Can be managed in sets

• semctl : Used to initialize all semaphores in the set to the same value at the same time.

• sem_op : Pass in a set of individual operations to be performed in order.

• Signals– Very similar to an interrupt, but all signals have the

same priority level.– Type determines what happens when received.

• SIGKILL : Kill the process• SIGCHLD : Inform process on the death of a child

Page 40: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

40

Linux Kernel Concurrency Mechanisms

• Has a set of atomic operations. (atomic_t)– Operations execute without interruption and

without interference.

– atomic_dec_and_test : Subtract a 1 from the variable and return 1 if equals 0.

– atomic_int_and_test : Add a 1 to the variable and return 1 if equals 0.

– atomic_read : Gets the value of the atomic variable.

– atomic_set : Sets the value of the atomic variable to the specified value.

Page 41: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

41

Linux Kernel Concurrency Mechanisms

• Spinlocks– Very similar to semaphores but designed for shorts

waits.

– Doesn’t put the thread to sleep while waiting for the spinlock to release.

– Can be done with interrupts enabled or disabled.

• Semaphores– Puts the thread to sleep if semaphore unavailable.

– Can be done with interrupts enabled or disable.

Page 42: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

42

Linux Kernel Concurrency Mechanisms

Used when code is reordered to optimize processor efficiency.

a = 1;b = 1;

Page 43: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

43

Solaris Thread Synchronization Primitives

• Mutual exclusion (mutex) locks– Basically a binary semaphore.

• Semaphores– Basic counting semaphore.

• Condition variables– Allows a thread to wait until a specific

condition occurs.– Used with a mutex lock.

Page 44: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

44

Condition Example

mutex_enter(&m)

while (some_condition) {

cv_wait(&cv,&m);

}

mutex_exit(&m)

Page 45: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

45

Page 46: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

46

Extra Slides

Page 47: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

47

Example of Deadlock

Page 48: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

48

Another Example of Deadlock

• Space is available for allocation of 200Kbytes, and the following sequence of events occur

• Deadlock occurs if both processes progress to their second request

P1

. . .

. . .Request 80 Kbytes;

Request 60 Kbytes;

P2

. . .

. . .Request 70 Kbytes;

Request 80 Kbytes;

Page 49: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

49

Page 50: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

50

Possibility of Deadlock

• Mutual Exclusion

• No preemption

• Hold and wait

Page 51: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

51

Existence of Deadlock

• Mutual Exclusion

• No preemption

• Hold and wait

• Circular wait

Page 52: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

52

Determination of an Unsafe State

Page 53: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

53

Determination of an Unsafe State

Page 54: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

54

Resource Allocation Graphs

• Directed graph that depicts a state of the system of resources and processes

Page 55: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

55

Resource Allocation Graphs

Page 56: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

56

Banker’s Algorithm

Page 57: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

57

Banker’s Algorithm

Page 58: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

58

Page 59: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

59

Linux Atomic Operations

Page 60: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

60

Linux Atomic Operations

Page 61: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

61

Linux Kernel Concurrency Mechanisms

• Spinlocks– Used for protecting a critical section

Page 62: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

62

Page 63: 1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.

63