5 - Programming of Microprocessor
5 - Programming of Microprocessor
Analysis Techniques
Project Presentation
17-654: Analysis of Software Artifacts
t u v
t:Fork(u)
t:Lock(a) u:Lock(a)
t:Write(x) u:Write(x)
t:Unlock(a) u:Unlock(a)
t:Join(u)
t:Write(x)
t:Fork(v)
t:Lock(a) v:Lock(a)
t:Write(x) v:Write(x)
t:Unlock(a) v:Unlock(a)
t:Join(v)
Variable name
...
marbury = 5;
madison = 5;
makeStuffHappen();
...
... Held
roe = 5; Locks:
wade = 5; my_objec
synchronize(my_object) { t
... (0x34EFF
0)
...
brown = 43;
board = “yes”; Held
} // end synch Locks:
...
Candidate
Set: Held
rob_fros Locks:
t lock1
...
rob_frost = false; (0xFFFF0
(0xFFFF0 1)
...
1) lock2
(0xFFFF0 (0xFFFF08)
8)
t:Lock(a) u:Lock(a)
t:Write(x) 1
u:Write(x)
2 t:Unlock(a) u:Unlock(a)
t:Join(u)
t:Write(x)
t:Fork(v)
t:Lock(a) u:Lock(a)
t:Write(x) 1
u:Write(x)
2 t:Unlock(a) u:Unlock(a)
t:Join(u)
t:Write(x)
t:Fork(v)
Clock value.
t:Lock(a) u:Lock(a)
t:Write(x) 1
u:Write(x)
2 t:Unlock(a) u:Unlock(a)
t:Join(u)
t:Write(x) x:
t:Fork(v) u-1
t-2
Each variable stores the thread clock value for the
most recent access of each thread.
t:Lock(a) u:Lock(a)
t:Write(x) 1
u:Write(x)
2 t:Unlock(a) u:Unlock(a)
t:Join(u)
t:Write(x) t: x:
t:Fork(v) self-2 u-1
u-1 t-2
Also, threads learn about and store the clock values
of other threads through synchronization activities.
t:Lock(a) 1
t:Write(x) …
2 t:Unlock(a) 32
t:Join(u)
t:Write(x) t: x:
t:Fork(v) self-2 u-32
u-32 t-2
If u were to go off, incrementing its count and
accessing variables, t would find out after the join.
t:Join(u)
t:Write(x) t: x:
t:Fork(v) self-2 u-32
u-32 t-2