This document discusses load balancing in distributed systems. It provides definitions of static and dynamic load balancing, compares their approaches, and describes several dynamic load balancing algorithms. Static load balancing assigns tasks at compile time without migration, while dynamic approaches migrate tasks at runtime based on current system state. Dynamic approaches have overhead from migration but better utilize resources. Specific dynamic algorithms discussed include nearest neighbor, random, adaptive contracting with neighbor, and centralized information approaches.