1 shared memory. 2 processes 3 types of shared variables read/write test & set read-modify-write

88
1 Shared Memory

Upload: angel-craig

Post on 18-Jan-2016

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

1

Shared Memory

Page 2: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

2

Shared Memory

1p

3p

2p

4p

processes

Page 3: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

3

Types of Shared Variables

•Read/Write

•Test & Set

•Read-Modify-Write

Page 4: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

4

Read/Write Variables

Read(v) Write(v,a)

return(v); v = a;

Or simpler:

x = v;

v = x;

(read v)

(write v)

Page 5: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

5

1p write 10

Page 6: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

6

1p write 1010

Page 7: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

7

1p write 1010

2pread

Page 8: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

8

1p write 1010

2pread

10

Page 9: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

9

1p write 10 2pwrite 20

Simultaneous writes

Page 10: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

10

1p write 10 2pwrite 20

Slower process

Possibility 1

20

Simultaneous writes

Page 11: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

11

1p write 10 2pwrite 20Slower process

Possibility 2

10

Simultaneous writes

Page 12: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

12

1p write 2pwrite

In general:

1a2a

3pwrite 3a

ipwrite ia

x

Simultaneous writes

Page 13: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

13

1p write 2pwrite

Slower process:

1a2a

3pwrite 3a

ipwrite ia

ka

kpSimultaneous writes

Page 14: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

14

1p read 2pread

Simultaneous Reads

a

Page 15: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

15

1p read 2pread

Simultaneous Reads

aa a

All read the same value

Page 16: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

16

Test&Set Variables

Test&Set(v)temp = v;v = 1;return (temp);

Reset(v)v = 0;

v is a binary variable

Page 17: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

17

0

Page 18: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

18

1p test&set0

Page 19: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

19

1p test&set0 1

Page 20: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

20

2ptest&set

1

Page 21: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

21

2ptest&set

1 1

Page 22: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

22

1

Page 23: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

23

3p reset0

Page 24: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

24

1p test&set0

2ptest&set

simultaneous accesses

3ptest&set

Page 25: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

25

1p test&set1

simultaneous accesses

0

2ptest&set

3ptest&set

11

Faster process

Page 26: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

26

Read-Modify-Write Variables

RMW(v, f)temp = v;v = f(v);return (temp);

function on v

Page 27: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

27

0

Page 28: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

28

1p RMW(+5)0

Page 29: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

29

1p0 5

RMW(+5)

Page 30: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

30

2pRMW(+8)

5

Page 31: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

31

2p

13 5

RMW(+8)

Page 32: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

32

1p0

2p

simultaneous accesses

RMW(+5) RMW(+8)

Page 33: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

33

1p13

2p

simultaneous accesses

RMW(+5) RMW(+8)

8 0

Faster process

Page 34: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

34

1p0

2p

simultaneous accesses

RMW(+5) RMW(+8)

2pRMW(+10)

Page 35: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

35

1p23

2p

simultaneous accesses

RMW(+5) RMW(+8)

2pRMW(+10)

08 13

fastestmiddle

slower

Page 36: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

36

RMW(v, f)temp = v;v = f(v);return (temp);

RMW simulate Test&Set

Test&Set(v)temp = v;v = 1;return (temp);

Reset(v)v = 0;

(f(v) = 1)

RMW(v, f)temp = v;v = f(v);return (temp);

(f(v) = 0)

Page 37: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

37

Mutual Exclusion

Page 38: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

38

Process 1 - program

V = 1;For (x = 10; x< y; x++) { cout << “hello”;}

If (t > 10) then while (x < 100) m = 20;

……

Page 39: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

39

Process 1 - program

Remainder code

Critical Section

Remainder Code

Process 2 - program

Remainder code

Critical Section

Remainder Code

Only one process can enter the critical section

Critical Section

Page 40: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

40

Process 1 - program

Remainder code

Critical Section

Remainder Code

Process 2 - program

Remainder code

Critical Section

Remainder Code

Processes may update the same variables in the critical section

Critical Section

v = v+10; v = v+10;

Page 41: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

41

Process 1

Remainder codeEntry codeCritical SectionExit codeRemainder Code

Process 2

Remainder codeEntry CodeCritical SectionExit CodeRemainder Code

Mutual Exclusion

Entry/Exit code guaranty that onlyone process is in the critical section

Page 42: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

42

Process 1

Remainder codeEntry codeCritical SectionExit codeRemainder Code

Process 2

Remainder codeEntry CodeCritical SectionExit CodeRemainder Code

Mutual Exclusion

Page 43: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

43

Process 1

Remainder codeEntry codeCritical SectionExit codeRemainder Code

Process 2

Remainder codeEntry CodeCritical SectionExit CodeRemainder Code

Mutual Exclusion

Page 44: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

44

Process 1

Remainder codeEntry codeCritical SectionExit codeRemainder Code

Process 2

Remainder codeEntry CodeCritical SectionExit CodeRemainder Code

Mutual Exclusion

Page 45: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

45

Process 1

Remainder codeEntry codeCritical SectionExit codeRemainder Code

Process 2

Remainder codeEntry CodeCritical SectionExit CodeRemainder Code

Mutual Exclusion

Page 46: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

46

Process 1

Remainder codeEntry codeCritical SectionExit codeRemainder Code

Process 2

Remainder codeEntry CodeCritical SectionExit CodeRemainder Code

Mutual Exclusion

Page 47: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

47

Mutual Exclusion

Critical

Exit

Remainder

Entry

Page 48: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

48

Attributes of mutual exclusion algorithms

No Deadlock: if some process is in the entry section then some process will enter the critical region

No Lockout: if some process is in the entry section then the same process will enter the critical region

Page 49: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

49

Mutual Exclusion

test&set variables

Page 50: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

50

While (test&set(v) = 1)

Critical section

Reset (v)

Entry:

Exit:

Page 51: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

51

0

1p test&setentry

v

Page 52: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

52

1

1pcritical section

v0

Page 53: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

53

0

1pexit

vreset

Page 54: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

54

0

1p test&setentry

v

Two processors

2pentry

test&set

Page 55: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

55

1

1pentry

v 2p

critical section

01

Page 56: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

56

1

1pentry

v 2p

critical section

0test&set

Page 57: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

57

1

1pentry

v 2p

critical section

01

Page 58: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

58

0

1pentry

v 2pexit

resettest&set

Page 59: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

59

1

1p

criticalsection

v0

Page 60: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

60

0

1pexit

vreset

Page 61: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

61

1

1pentry

v 2p

critical section

test&set

Problem: the algorithm doesn’t guaranty no lockout, a process may starve

Example: may never enter the critical section1p

Page 62: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

62

1

1pentry

v

3p

critical section

test&set

Example: may never enter the critical section1p

Page 63: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

63

1

1pentry

v 4p

critical section

test&set

Example: may never enter the critical section1p

432 ,, ppp : faster than 1p

Page 64: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

64

Mutual exclusion

read-modify-write variables

Page 65: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

65

v.first

v.last

Ticket of current process in critical section

Ticket of last processwaiting in entry section

Shared variable v

Page 66: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

66

p = RMW(v, (v.first, v.last +1))

Repeat

q = RMW(v,v)

Until q.first = p.last

Critical section

RMV(v, (v.first+1, v.last))

Entry:

Exit:

(p and q are local variables)

Page 67: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

67

v.first 1

v.last1

Page 68: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

68

v.first 1

v.last1

p.last 1p

Page 69: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

69

v.first 1

v.last2

entry

p.last 1 1p

Page 70: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

70

v.first 1

v.last2

critical section

p.last 1 1p

Page 71: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

71

v.first 2

v.last2

exit

p.last 1 1p

Page 72: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

72

v.first 1

v.last1

Four processes

p.last 1p 2p 3p 4p

Page 73: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

73

v.first 1

v.last2

p.last 1 1p 2p 3p 4pentry

Page 74: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

74

v.first 1

v.last2

p.last 1 1p 2p 3p 4pentry

Page 75: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

75

v.first 1

v.last3

p.last 1 1p 2 2p 0 3p 0 4pentry entry

Page 76: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

76

v.first 1

v.last3

p.last 1 1p 2 2p 0 3p 0 4pentry entry

Page 77: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

77

v.first 1

v.last4

p.last 1 1p 2 2p 3 3p 0 4pentry entry entry

Page 78: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

78

v.first 1

v.last4

p.last 1 1p 2 2p 3 3p 0 4pentry entry entry

Page 79: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

79

v.first 1

v.last5

p.last 1 1p 2 2p 3 3p 4 4pentry entry entry entry

Page 80: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

80

v.first 1

v.last5

p.last 1 1p 2 2p 3 3p 4 4p

criticalsection entry entry entry

Page 81: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

81

v.first 2

v.last5

p.last 1 1p 2 2p 3 3p 4 4pentry entry entryexit

Page 82: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

82

v.first 2

v.last5

2 2p 3 3p 4 4p

criticalsection entry entry

Page 83: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

83

v.first 3

v.last5

2 2p 3 3p 4 4pentry entryexit

Page 84: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

84

v.first 3

v.last4

3 3p 4 4pentry entry

Page 85: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

85

v.first i

v.last-1i+k

i 1ip

i+k 1kip

criticalsection entry

i+1 2ip

entry

The behavior is similar with a queue

……

(head) (tail)

Page 86: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

86

Good features of algorithm:

• Guarantees no lockout (any process will eventually enter the critical section)

• Uses only one shared variable (v)

Page 87: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

87

A problem:

values can grow unbounded

i i+1 … i+k …

Page 88: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write

88

Solution: a circular queue

……1 2 n

(for n processes)

v.first v.last-1

Only n different values are needed