Question:
(a) Describe blocking and non-blocking types of inter-process communication. What is easier to implement and why? Discuss their relative advantages and disadvantages.
(b) A spin lock is a boolean variable accessed via an atomic test-and-set instruction, which is used to obtain mutual exclusion. Would you use a spin lock to obtain mutual exclusion between threads on a single-processor computer?
(c) Explain what is meant by the load sharing components: transfer policy, selection policy, location policy, and information policy for dynamic load sharing.
(d) Caching is an important optimisation technique. Describe the three potential locations for caching in a distributed file system. Briefly discuss the advantages and disadvantages of each location.
(e) What is process migration? Why might you want to migrate a process?