Distributed Programming is Hard!
- 1000's of processors require 1000's of programs.
- Need to keep processors busy.
- Processors must be synchronized so they do not
interfere with each other.
- Need to avoid bottlenecks (most of the processors waiting
for service from one processor).
- Some machines may become:
and they may change into these states while your application is running.
- If a machine does not have the data it needs, it must get the
data via the network.
- Many machines share one (slow) network.
- Parts of the network can fail too.