177 views

The functionality of atomic TEST-AND-SET assembly language instruction is given by the following C function

int TEST-AND-SET (int *x)
{
int y;
A1: y=*x;
A2: *x=1;
A3: return y;
}
1. Complete the following C functions for implementing code for entering and leaving critical sections on the above TEST-AND-SET instruction.
2. int mutex=0;
void enter-cs()
{
while(......................);

}
void leave-cs()
{ .........................;

}
3. Is the above solution to the critical section problem deadlock free and starvation-free?


4. For the above solution, show by an example that mutual exclusion is not ensured if TEST-AND-SET instruction is not atomic?

entry condition : while( TESTANDSET(&mutex) )

exit condition : mutex=0;

yes above solution is deadlock free ony if reading and setting of mutex done atomically

1
2