The first three problems in this Exercise refer to a critical section of the form lock(lk);

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 shvar using the local (nonshared) variable x as follows:a. shvar=max(shvar,x); b. if(shvar>0) shvar=max(shvar,x); Operation

Explain why in your code from 2.29.2 register $a1 contains the address of variable shvar and not the value of that variable, and why register $a2 contains the value of variable x and not its address.

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:a. shvar=max(shvar,x); b. if(shvar>0) shvar=max(shvar,x); Operation

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.

Fantastic news! We've Found the answer you've been seeking!

Step by Step Answer:

Related Book For  answer-question

Computer Organization And Design The Hardware Software Interface

ISBN: 9780123747501

4th Revised Edition

Authors: David A. Patterson, John L. Hennessy

Question Posted: