Mutual exclusion

70
1 Mutual exclusion read/write variables

description

Mutual exclusion. read/write variables. The Bakery Algorithm. The algorithm is similar with the read-modify-write algorithm. There is a queue: The process in the head is in critical section A new process is inserted in the tail. Algorithm outline. - PowerPoint PPT Presentation

Transcript of Mutual exclusion

Page 1: Mutual exclusion

1

Mutual exclusion

read/write variables

Page 2: Mutual exclusion

2

The Bakery Algorithm

The algorithm is similar with the read-modify-write algorithm

There is a queue: The process in the head is in critical section

A new process is inserted in the tail

Page 3: Mutual exclusion

3

Entry:

Algorithm outline

Exit:

t = tail;tail = tail + 1;Wait until t == head;

Critical section

head = head + 1;

(tail and head are shared variables, t is a local variable)

Page 4: Mutual exclusion

4

Entry: t = tail;tail = tail + 1;

Problem: this part of the code doesn’t behave correctly

//read tail//write tail

Page 5: Mutual exclusion

5

0

tail

A good scenario

Page 6: Mutual exclusion

6

1

1p0

tail

Read 0Write 1

A good scenario

(t=0)

Page 7: Mutual exclusion

7

2

1p0

2p1

tail

Read 1Write 2

A good scenario

(t=1)

Page 8: Mutual exclusion

8

3

1p0

2p1 3p

2

tail

Read 2Write 3

A good scenario(t=2)

Page 9: Mutual exclusion

9

0

1p0

tail

Read 0

A bad scenario

Page 10: Mutual exclusion

10

1

1p0

2p0

tail

Read 0Write 1

A bad scenario

Write 1(delayed)

Page 11: Mutual exclusion

11

2

1p0

2p0 3p

1

tail

Read 1Write 2

A bad scenario

Write 1(delayed)

Page 12: Mutual exclusion

12

3

1p0

2p0 3p

1

tail

Read 2Write 3

A bad scenario

Write 1(delayed)

4p2

Page 13: Mutual exclusion

13

1

1p0

2p0 3p

1

tail

A bad scenario

Write 1 Read 2Write 3

4p2

Wrong value!!!

Page 14: Mutual exclusion

14

1p0

A Solution: distributed counting

V[1]=0

We need an array of shared variables v[1], v[2], …, v[n]

Process has value v[i]ip

2p0

V[2]=0

3p0

V[3]=0

4p0

V[4]=0

Page 15: Mutual exclusion

15

1p0

V[1]=0

2p0

V[2]=0

3p0

V[3]=0

4p0

V[4]=0

In the entry code, a processreads the values of all other processes.

The new value is the maximum + 1

Page 16: Mutual exclusion

16

1p0

V[1]=0

2p1

V[2]=1

3p0

V[3]=0

4p0

V[4]=0

entry

Max = 0;Max + 1 = 1;

Page 17: Mutual exclusion

17

1p0

V[1]=0

2p1

V[2]=1

3p0

V[3]=0

4p2

V[4]=2

entry entry

Max = 1;Max + 1 = 2;

Page 18: Mutual exclusion

18

1p0

V[1]=0

2p1

V[2]=1

3p3

V[3]=3

4p2

V[4]=2

entry entry

Max = 2;Max + 1 = 3;

entry

Page 19: Mutual exclusion

19

1p4

V[1]=4

2p1

V[2]=1

3p3

V[3]=3

4p2

V[4]=2

entry entryentryentry

Max = 3;Max + 1 = 4;

Everybody gets a unique value(a unique position in the distributed queue)

Page 20: Mutual exclusion

20

1p4

V[1]=4

2p1

V[2]=1

3p3

V[3]=3

4p2

V[4]=2

entry entryentryentry

Then the processes compare their valueswith all the other values.

The lowest value enters the critical region(different than 0)

Page 21: Mutual exclusion

21

1p4

V[1]=4

2p1

V[2]=1

3p3

V[3]=3

4p2

V[4]=2

entry entryentrycriticalregion

2p reads all values

2p Realizes it has the lowest value

Page 22: Mutual exclusion

22

1p4

V[1]=4

2p0

V[2]=0

3p3

V[3]=3

4p2

V[4]=2

entry entryentryexit

2p sets value to 0

Page 23: Mutual exclusion

23

1p4

V[1]=4

2p0

V[2]=0

3p3

V[3]=3

4p2

V[4]=2

entry entry criticalregion

Page 24: Mutual exclusion

24

1p4

V[1]=4

2p0

V[2]=0

3p3

V[3]=3

4p0

V[4]=0

entry entry exit

Page 25: Mutual exclusion

25

And so on……

1p4

V[1]=4

2p0

V[2]=0

3p3

V[3]=3

4p0

V[4]=0

entry criticalregion

Page 26: Mutual exclusion

26

1p0

V[1]=0

2p0

V[2]=0

3p0

V[3]=0

4p0

V[4]=0

A problem:When two processes enterat the same time, they may choose the same value.

entry entry

Page 27: Mutual exclusion

27

1p0

V[1]=0

2p1

V[2]=1

3p0

V[3]=0

4p1

V[4]=1

entry entry

The maximum values they read are the same

Page 28: Mutual exclusion

28

1p0

V[1]=0

2p1, 2

V[2]=1

3p0

V[3]=0

4p1, 4

V[4]=1

entrycriticalsection

Solution: use ID’s to break symmetries

(lowest ID wins)

Page 29: Mutual exclusion

29

1p0

V[1]=0

2p0

V[2]=0

3p0

V[3]=0

4pV[4]=1

entryexit

1, 4

Page 30: Mutual exclusion

30

The Complete Bakery Algorithm

V[i] = 0; choosing[i] = false;

choosing[i] = true;V[i] = max(V[1], V[2], …, V[n])+1;

Process i:

choosing[i] = false;

for (k = 1; k <= n; k++)

Wait until choosing[k] == false;Wait until V[k] == 0 or (V[k],k) > (V[i],i)

Critical sectionV[i] = 0;

Entry:

Exit:

Page 31: Mutual exclusion

31

Advantages of the bakery algorithm:

•Uses Read/Write variables

•Satisfies no lockout property

Disadvantages:

•Uses n shared variables for n processes (actually, we cannot do better than that)

•The values can grow unbounded(we would like to find an algorithmwith bounded values)

Page 32: Mutual exclusion

32

Mutual Exclusion for 2 processes

Want[0] = 1;Wait until want[1]== 0;

Critical section

Want[0] = 0;

1: Want[1] = 0; Wait until want[0] ==0; Want[1] = 1; if (want[0] == 1) goto 1;

Critical section

Want[1] = 0;

high priority process low priority process

Entry:

Exit:

Good: Uses only bounded values on variablesProblem:low priority process may lockout

Page 33: Mutual exclusion

33

1: Want[0] = 0;Wait until (want[1]== 0 or Priority == 0);Want[0] = 1;if priority == 1 then if Want[1] == 1 then goto Line 1Else wait until Want[1]==0;Critical sectionPriority = 1;Want[0] = 0;

Process 0 Process 1

Entry:

Exit:

Good: Uses only bounded values on variables Supports no lockout

An equal priority algorithm

1: Want[1] = 0;Wait until (want[0]== 0 or Priority == 1);Want[1] = 1;if priority == 0 then if Want[0] == 1 then goto Line 1Else wait until Want[0]==0;Critical sectionPriority = 0;Want[1] = 0;

Page 34: Mutual exclusion

34

The Tournament Algorithm

We can implement a tournament mutualexclusion algorithm, using the equalpriority pairwise algorithm

1p 2p 3p 4p 5p 6p 7p 8p

Page 35: Mutual exclusion

35

1p 2p 3p 4p 5p 6p 7p 8p

Mutual exclusion for pairs of processes

1p 4p 5p 8pwinner

Page 36: Mutual exclusion

36

1p 2p 3p 4p 5p 6p 7p 8p

1p 4p 5p 8p

4p 8p

Page 37: Mutual exclusion

37

1p 2p 3p 4p 5p 6p 7p 8p

1p 4p 5p 8p

4p 8p

4pwinner

Critical section

Page 38: Mutual exclusion

38

Advantages of tournament algorithm

•Bounded values of variables

•O(n) variables

•Preserves no lockout (since each pair mutual exclusion is no lockout)

Page 39: Mutual exclusion

39

MCS Mutual Exclusion Algorithm

Lock=0next nil

Lock=0next

Lock=0next

Lock=1next

T

head tail

Process in criticalregion

Process waiting to get incritical region

Page 40: Mutual exclusion

40

Lock=0next nil

Lock=0next

Lock=0next

Lock=1next

T

head tail

Global Shared Memory

Local memories (for example cache)

ProcessesSpin on their own memories

Page 41: Mutual exclusion

41

Lock=0next nil

Lock=0next

Lock=0next

Lock=1next

T

head tail

Critical region

Page 42: Mutual exclusion

42

Lock=0next nil

Lock=0next

Lock=1next

Lock=1next

T

head tail

Critical region

Page 43: Mutual exclusion

43

Lock=0next nil

Lock=1next

Lock=1next

T

head tail

Critical region

Page 44: Mutual exclusion

44

Lock=1next nil

Lock=1next

T

headtail

Critical region

Page 45: Mutual exclusion

45

nil

T

Page 46: Mutual exclusion

46

Entry Code for processor i:

Qi = pointer to a new queuenode; // Qi, *Qi is in local memory

Qi->Lock = 0;Qi->Next = nil;Ti = Swap(T, Qi); //Ti is in local memory

If Ti nil then Ti -> next = Qi;else Qi->Lock =1; //it is at the head of the queue

Wait until Qi->lock = 1;

Page 47: Mutual exclusion

47

Swap(T,Qi){ x = T; //read T T = Qi; // swap T with Qi return x; // return old value of T}

Atomic operation

Page 48: Mutual exclusion

48

nil

T

Lock=0next nil

Qi is created

QiEmpty queue

Page 49: Mutual exclusion

49

nil

T

Lock=0next nil

After swap operation

Qi

Ti

Page 50: Mutual exclusion

50

T

Lock=1next nil

After if statement

Qi

in critical section

Page 51: Mutual exclusion

51

T

Lock=1next nil

Process j arrives

Qi

Lock=0next nil

Qj

critical section

Page 52: Mutual exclusion

52

T

Lock=1next nil

After swap operation

Qi

Lock=0next nil

Qj

Tj

critical section

Page 53: Mutual exclusion

53

T

Lock=1next

After if statement operation

Qi

Lock=0next nil

Qj

critical section

Page 54: Mutual exclusion

54

nil

T

Lock=0next nil

Processes i and jArrive simultaneously Qi

Lock=0next nil

Qj

Empty queue

Page 55: Mutual exclusion

55

nil

TiLock=0next nil

Execution of swap assigns an order

Qi

Lock=0next nil

Qj

Tj T

secondfirst

Page 56: Mutual exclusion

56

Lock=1next

Qi

Lock=0next nil

Qj

T

critical section

Page 57: Mutual exclusion

57

Exit Code for processor i:

Ti = Compare&Swap(T, Qi, nil); //Ti is in local memory

If Ti Qi then wait until (Qi->next nil) Ti -> next->lock = 1;Delete Qi and *Qi

Page 58: Mutual exclusion

58

Compare&Swap(T,Qi,nil){ x = T; //read value of T

If T == Qi then T = nil; //swap T with nil if T and Qi are same

return x; // return old value of T

}

Atomic operation

Page 59: Mutual exclusion

59

Lock=0next nil

Lock=0next

Lock=0next

Lock=1next

TCritical section

Qi

before compare&swap

Page 60: Mutual exclusion

60

Lock=0next nil

Lock=0next

Lock=1next

Lock=1next

T

Qi

after compare&swap

Critical section

Ti

Page 61: Mutual exclusion

61

Lock=0next nil

Lock=1next

Lock=1next

T

Critical section

Page 62: Mutual exclusion

62

Lock=1next nil

Lock=1next

T

Critical section

Page 63: Mutual exclusion

63

Lock=1next nil

T

Critical section

An extreme case

Page 64: Mutual exclusion

64

Lock=0next nil

Lock=1next nil

T

Critical section

An extreme case

A new node Will be insterted

will execute swapwill execute

Compare&swap

Page 65: Mutual exclusion

65

Lock=0next nil

Lock=1next nil

T

Case 1: swap executes first

Waits until next pointsto something

Page 66: Mutual exclusion

66

Lock=0next nil

Lock=1next

T

Case 1: swap executes first

Page 67: Mutual exclusion

67

Lock=1next nil

Lock=1next

T

Case 1: swap executes first

Critical section

Page 68: Mutual exclusion

68

Lock=0next nil

Lock=1next nil

T

Case 2: compare&swap executes first

nil

Page 69: Mutual exclusion

69

Lock=0next nil

Lock=1next nil

T

Case 2: compare&swap executes first

nil

Page 70: Mutual exclusion

70

Lock=1next nil

T

Case 2: compare&swap executes first

Critical section