Professional Documents
Culture Documents
Process Synchronization
Process Synchronization
Process-Synchronization
Process Synchronization
• A cooperating process is one that can affect or be
affected by other processes executing in the
system.
• Cooperating processes can either directly share a
logical address space (that is, both code and data)
or be allowed to share data only through files or
messages.
• Concurrent access to shared data may result in data
inconsistency, however.
• So we discuss various mechanisms to ensure the
orderly execution of cooperating processes that
share a logical address space, so that data
consistency is maintained.
In process P1 In process P2
counter=counter+1 counter=counter-1
counter 5
In process P1 In process P2
counter=counter+1 counter=counter-1
In process P1 In process P2
register1 = counter register2 = counter
register1 = register1 + 1 register2 = register2 − 1
counter = register1 counter = register2
counter 4
In process P1 In process P2
register1 = counter register2 = counter
register1 = register1 + 1 register2 = register2 − 1
counter = register1 counter = register2
Case-1
T0:P1 execute register1 = counter {register1 = 5}
T1: P1 execute register1 = register1 + 1 {register1 = 6}
T2: P2 execute register2 = counter {register2 = 5}
T3: P2 execute register2 = register2 − 1 {register2 = 4}
T4: P1 execute counter = register1 {counter = 6}
T5: P2 execute counter = register2 {counter = 4}
Dr.B.Hemantha Kumar. RVR&JC CE 5
Process Synchronization
What is data inconsistency?:
counter 6
In process P1 In process P2
register1 = counter register2 = counter
register1 = register1 + 1 register2 = register2 − 1
counter = register1 counter = register2
Case-2
T0:P1 execute register1 = counter {register1 = 5}
T1: P1 execute register1 = register1 + 1 {register1 = 6}
T2: P2 execute register2 = counter {register2 = 5}
T3: P2 execute register2 = register2 − 1 {register2 = 4}
T5: P2 execute counter = register2 {counter = 4}
T4: P1 execute counter = register1 {counter = 6}
Dr.B.Hemantha Kumar. RVR&JC CE 6
Process Synchronization
What is data inconsistency?:
counter 5
In process P1 In process P2
register1 = counter register2 = counter
register1 = register1 + 1 register2 = register2 − 1
counter = register1 counter = register2
Case-3
T0:P1 execute register1 = counter {register1 = 5}
T1: P1 execute register1 = register1 + 1 {register1 = 6}
T4: P1 execute counter = register1 {counter = 6}
T2: P2 execute register2 = counter {register2 = 6}
T3: P2 execute register2 = register2 − 1 {register2 = 5}
T5: P2 execute counter = register2 {counter = 5}
Dr.B.Hemantha Kumar. RVR&JC CE 7
Process Synchronization
What is data inconsistency?:
Case-1 T0:P1 execute register1 = counter
counter 4
T0,T1,T2,T3,T4,T5 T1: P1 execute register1=register1 + 1
Case-2 T2: P2 execute register2 = counter
counter 6 T3: P2 execute register2=register2 − 1
T0,T1,T2,T3,T5,T4
T4: P1 execute counter = register1
Case-3 T5: P2 execute counter = register2
counter 5
T0,T1,T4,T2,T3,T5
critical section
exit section Release
remainder section
} while (true);
do {
flag[i] = true;
turn = j; Request
while (flag[j] && turn == j);
critical section
flag[i] = false; Release
remainder section
} while (true);
do {
flag[j] = true;
turn = i; Request
while (flag[i] && turn == i);
critical section
flag[j] = false; Release
remainder section
} while (true);
do { do {
flag[0] = true; flag[1] = true;
turn = 1; turn = 0;
while (flag[1] && turn == 1); while (flag[0] && turn == 0);
process P0 process P1
flag[0] = true;
turn = 1;
while (flag[1] && turn == 1);
flag[j] = false;
do {
while ( TestAndSet (&lock )) ; // do nothing
// critical section
lock = FALSE;
// remainder section
} while (TRUE);
do {
key = TRUE;
while ( key == TRUE)
swap (&lock, &key );
// critical section
lock = FALSE;
// remainder section
} while (TRUE);