1 shared memory. 2 processes 3 types of shared variables read/write test & set read-modify-write
TRANSCRIPT
![Page 1: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/1.jpg)
1
Shared Memory
![Page 2: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/2.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/3.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/4.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/5.jpg)
5
1p write 10
![Page 6: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/6.jpg)
6
1p write 1010
![Page 7: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/7.jpg)
7
1p write 1010
2pread
![Page 8: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/8.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/9.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/10.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/11.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/12.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/13.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/14.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/15.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/16.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/17.jpg)
17
0
![Page 18: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/18.jpg)
18
1p test&set0
![Page 19: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/19.jpg)
19
1p test&set0 1
![Page 20: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/20.jpg)
20
2ptest&set
1
![Page 21: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/21.jpg)
21
2ptest&set
1 1
![Page 22: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/22.jpg)
22
1
![Page 23: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/23.jpg)
23
3p reset0
![Page 24: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/24.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/25.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/26.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/27.jpg)
27
0
![Page 28: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/28.jpg)
28
1p RMW(+5)0
![Page 29: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/29.jpg)
29
1p0 5
RMW(+5)
![Page 30: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/30.jpg)
30
2pRMW(+8)
5
![Page 31: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/31.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/32.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/33.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/34.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/35.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/36.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/37.jpg)
37
Mutual Exclusion
![Page 38: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/38.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/39.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/40.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/41.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/42.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/43.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/44.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/45.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/46.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/47.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/48.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/49.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/50.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/51.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/52.jpg)
52
1
1pcritical section
v0
![Page 53: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/53.jpg)
53
0
1pexit
vreset
![Page 54: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/54.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/55.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/56.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/57.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/58.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/59.jpg)
59
1
1p
criticalsection
v0
![Page 60: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/60.jpg)
60
0
1pexit
vreset
![Page 61: 1 Shared Memory. 2 processes 3 Types of Shared Variables Read/Write Test & Set Read-Modify-Write](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/61.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/62.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/63.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/64.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/65.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/66.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/67.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/68.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/69.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/70.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/71.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/72.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/73.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/74.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/75.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/76.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/77.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/78.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/79.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/80.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/81.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/82.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/83.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/84.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/85.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/86.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/87.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062423/5697bfb91a28abf838c9fb63/html5/thumbnails/88.jpg)
88
Solution: a circular queue
……1 2 n
(for n processes)
v.first v.last-1
Only n different values are needed