Distributed Operating Systems: Concepts and Practice