Distributed systems : an algorithmic approach /: an algorithmic approach. (©2007)