Systems Designing and Developing Distributed Applications explains how the development of distributed applications depends on a foundational understanding of the relationship among operating systems, networking, distributed systems, and programming. Uniquely organized around four viewpoints (process, communication, resource, and architecture), the fundamental and essential characteristics of distributed systems are explored in ways which cut across the various traditional subject area boundaries. The structures, configurations and behaviours of distributed systems are all examined, allowing readers to explore concepts from different perspectives, and to understand systems in depth, both from the component level and holistically.
concepts and examples are quite easy to relate to if you've ever worked on a distributed system which requires strict/optimal resource allocation (using IPC, scheduling algo, etc). quite enlightening. only catch is the exercises/examples are for the windows platform.