Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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