Question: 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
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:
Using your code from 2.29.2 as an example, explain what happens when two processors begin to execute this critical section at the same time, assuming that each processor executes exactly one instruction per cycle.
Problem 2.29.2
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:
Repeat problem 2.29.1, but this time use ll/sc to perform an atomic update of the shvar variable directly, without using lock() and unlock(). Note that in this problem there is no variable lk.
problem 2.29.1
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.
a. shvar=max(shvar,x); b. if(shvar>0) shvar=max(shvar,x); Operation
Step by Step Solution
3.48 Rating (165 Votes )
There are 3 Steps involved in it
Potential issues Race condition If the processors dont acquire the lock locklk atomically ie in a single indivisible step its possible for both to ent... View full answer
Get step-by-step solutions from verified subject matter experts
