Distributed Operating Systems and Algorithms by Randy Chow