2.29.1 The first three problems in this Exercise refer to a critical section of the form
lock(lk);
operation
unlock(lk);
where the “operation” updates the shared variable shvar using the local (nonshared)
variable x as follows:
Operation
a. shvar=max(shvar,x);
b. if(shvar>0)
shvar=max(shvar,x);
[10] <2.11> Write the MIPS assembly code for this critical section, assuming
that the address of the lk variable is in $a0, the address of the shvar variable
is in $a1, and the value of variable x is in $a2. Your critical section should not contain
any function calls, i.e., you should include the MIPS instructions for lock(),
unlock(), max(), and min() operations. Use ll/sc instructions to implement
the lock() operation, and the unlock() operation is simply an ordinary store
instruction.
 
 
View Solution
 
 
 
<< Back Next >>