Fundamentals of Fault Tolerance