Systems Programming

Systems Programming

Designing and Developing Distributed Applications

1st Edition - February 25, 2015

Write a review

  • Author: Richard Anthony
  • eBook ISBN: 9780128008171
  • Paperback ISBN: 9780128007297

Purchase options

Purchase options
DRM-free (PDF, Mobi, EPub)
Sales tax will be calculated at check-out

Institutional Subscription

Free Global Shipping
No minimum order


Systems Programming: 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.

Key Features

  • Explains key ideas from the ground up, in a self-contained style, with material carefully sequenced to make it easy to absorb and follow.
  • Features a detailed case study that is designed to serve as a common point of reference and to provide continuity across the different technical chapters.
  • Includes a ‘putting it all together’ chapter that looks at interesting distributed systems applications across their entire life-cycle from requirements analysis and design specifications to fully working applications with full source code.
  • Ancillary materials include problems and solutions, programming exercises, simulation experiments, and a wide range of fully working sample applications with complete source code developed in C++, C# and Java.
  • Special editions of the author’s established ‘workbenches’ teaching and learning tools suite are included. These tools have been specifically designed to facilitate practical experimentation and simulation of complex and dynamic aspects of systems.


Professional programmers who need to learn or understand distributed application development, and undergraduate or graduate students studying distributed systems, networking, operating systems, or application development.

Table of Contents

    • Dedication
    • Preface
      • The Origin and Purpose of This Book
      • The Intended Audience
      • The Organization of the Book
      • How to Use the Book
      • The Support Materials
    • Acknowledgments
    • Chapter 1: Introduction
      • Abstract
      • 1.1 Rationale
      • 1.2 The Significance of Networking and Distributed Systems in Modern Computing—A Brief Historical Perspective
      • 1.3 Introduction to Distributed Systems
      • 1.4 Introduction to the Case Studies
      • 1.5 Introduction to Supplementary Material and Exercises
      • 1.6 The Workbenches Suite of Interactive Teaching and Learning Tools
      • 1.7 Sample Code and Related Exercises
    • Chapter 2: The Process View
      • Abstract
      • 2.1 Rationale and Overview
      • 2.2 Processes
      • 2.3 Process Scheduling
      • 2.4 Scheduling for Real-Time Systems
      • 2.5 Specific Scheduling Algorithms and Variants, Used in Modern Operating Systems
      • 2.6 Interprocess Communication
      • 2.7 Threads: An Introduction
      • 2.8 Other Roles of the Operating System
      • 2.9 Use of Timers Within Programs
      • 2.10 Transparency from the Process Viewpoint
      • 2.11 The Case Study from the Process Perspective
      • 2.12 End-of-Chapter Exercises
    • Chapter 3: The Communication View
      • Abstract
      • 3.1 Rationale and Overview
      • 3.2 The Communication View
      • 3.3 Communication Techniques
      • 3.4 Layered Models of Communication
      • 3.5 The TCP/IP Suite
      • 3.6 Addresses
      • 3.7 Sockets
      • 3.8 Blocking and Nonblocking Socket Behaviors
      • 3.9 Error Detection and Error Correction
      • 3.10 Application-Specific Protocols
      • 3.11 Integrating Communication with Business Logic
      • 3.12 Techniques to Facilitate Components Locating Each Other
      • 3.13 Transparency Requirements from the Communication Viewpoint
      • 3.14 The Case Study from the Communication Perspective
      • 3.15 End-of-Chapter Exercises
      • Appendix Socket API Reference
    • Chapter 4: The Resource View
      • Abstract
      • 4.1 Rationale and Overview
      • 4.2 The CPU as a Resource
      • 4.3 Memory as a Resource for Communication
      • 4.4 Memory Management
      • 4.5 Resource Management
      • 4.6 The Network as a Resource
      • 4.7 Virtual Resources
      • 4.8 Distributed Application Design Influences on Network Efficiency
      • 4.9 Transparency from the Resource Viewpoint
      • 4.10 The Case Study from the Resource Perspective
      • 4.11 End-of-Chapter Exercises
    • Chapter 5: The Architecture View
      • Abstract
      • 5.1 Rationale and Overview
      • 5.2 The Architecture View
      • 5.3 Heterogeneity
      • 5.4 Hardware and System-Level Architectures
      • 5.5 Software Architectures
      • 5.6 Taxonomy of Software Architecture Classes
      • 5.7 Client-Server
      • 5.8 Three-Tier and Multitier Architectures
      • 5.9 Peer-to-Peer
      • 5.10 Distributed Objects
      • 5.11 Middleware: Support for Software Architectures
      • 5.12 System Models of Collective Resources and Computation Resource Provision
      • 5.13 Software Libraries
      • 5.14 Hardware Virtualization
      • 5.15 Static and Dynamic Configurations
      • 5.16 Nonfunctional Requirements of Distributed Applications
      • 5.17 The Relationship Between Distributed Applications and Networks
      • 5.18 Transparency from the Architecture Viewpoint
      • 5.19 The Case Study from the Architectural Perspective
      • 5.20 End-of-Chapter Exercises
      • Appendix The Peer-to-Peer Application-Level Protocol Message Sequence
    • Chapter 6: Distributed Systems
      • Abstract
      • 6.1 Rationale and Overview
      • 6.2 Transparency
      • 6.3 Common Services
      • 6.4 Name Services
      • 6.5 Domain Name System (DNS)
      • 6.6 Time Services
      • 6.7 Election Algorithms
      • 6.8 Group Communications
      • 6.9 Notification Services
      • 6.10 Middleware: Mechanism and Operation
      • 6.11 Middleware Examples and Support Technologies
      • 6.12 Deterministic and Nondeterministic Aspects of Distributed Systems
      • 6.13 End of Chapter Exercises
    • Chapter 7: Case Studies: Putting It All Together
      • Abstract
      • 7.1 Rationale and Overview
      • 7.2 Introduction to the Use Cases
      • 7.3 Case Study #1: Time Service Client (with Library)
      • 7.4 Case Study #2: Event Notification Service
      • 7.5 Good Design Practice for Distributed Applications
      • 7.6 End of Chapter Programming Exercises
      • 7.7 List of Accompanying Resources
    • Index

Product details

  • No. of pages: 548
  • Language: English
  • Copyright: © Morgan Kaufmann 2015
  • Published: February 25, 2015
  • Imprint: Morgan Kaufmann
  • eBook ISBN: 9780128008171
  • Paperback ISBN: 9780128007297

About the Author

Richard Anthony

Richard John Anthony has been a university lecturer for over 20 years with teaching focusing on operating systems, networking, distributed systems, programming and embedded systems; and he has considerable experience in curriculum design in these areas. He also works in commercial projects as a technology consultant and systems developer. Other previous roles include microprocessor technician, network manager, database administrator and senior software developer in a commercial role. This rich mix of experience gives him a good insight across all aspects of computer systems and technology, and the ability to see the big picture view as well as the low-level technology focus. He’s also an established and active researcher, having over 90 academic publications in autonomic computing, smart embedded systems and distributed systems, and currently leads a research group in autonomic computing and smart embedded systems. His research is underpinned by strong software design and developmental skills, giving a highly empirical flavor to his work.

Affiliations and Expertise

Lecturer, University of Greenwich (UK), focusing on operating systems, networking, distributed systems, programming and embedded systems

Ratings and Reviews

Write a review

There are currently no reviews for "Systems Programming"