A shared-memory computer can also run software designed for a distributed-memory computer (e.g., use the memory bus/interconnection network to carry the data normally sent across a network). Specifically, a network send/receive can be implemented (via an abstraction layer) using a series of load/stores (aka reads/writes to shared memory) so that the distributed-memory software can run without any modifications.
What are two significant advantages and two significant disadvantages of running distributed-memory software on shared-memory hardware? Explain briefly. Consider the points of view of economics, performance, energy, etc.