Q1. Suppose two processes are using shared memory as shown below. Give the possi
ID: 3854939 • Letter: Q
Question
Q1. Suppose two processes are using shared memory as shown below. Give the possible values that can be printed for b and c by EACH process. Assume all C language assignment statements are atomic:
P0 executes: P1 executes:
shared int a; shared int a;
int b,c; int b,c;
b=1; a=100;
a=b; b=a;
c=a; c=b+a;
Print(b,c); Print(b,c);
Q2. You are asked to design concurrency control mechanisms for a two different hardware architectures: the first supports a Test-and-Set and the other supports a swap instruction, as follows:
int Test-and-Set( int target)
{
int temp=target;
target=true;
return(temp);
}
void Swap (int *a, *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
Does the swap works similarly as Test-and-set? why?
Explanation / Answer
"a" variable is of integer type and its shared between processes P0 and P1
i) P0 executes
shared int a;
int b,c
b = 1;
a=b; //Here value of a will be 1
c =a; //Here value of c will be 1
Print(b,c) //So it will print b as 1 and c as 1
ii) P1 executes
shared int a;
int b,c;
a = 100;
b = a; //Here value of b =1 because a is shared and its value is already set to 1 in P0 Process.
c = b +a; //Here value of c will be 2 (1 +1)
Print(b,c ) //So it will print b as 1 and c as 2
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.