Systems Programming,
Edition 1
Designing and Developing Distributed Applications
Editors:
By Richard Anthony
Publication Date:
02 Mar 2015
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.
DedicationPrefaceThe Origin and Purpose of This BookThe Intended AudienceThe Organization of the BookHow to Use the BookThe Support MaterialsAcknowledgments1: IntroductionAbstract1.1 Rationale1.2 The Significance of Networking and Distributed Systems in Modern Computing—A Brief Historical Perspective1.3 Introduction to Distributed Systems1.4 Introduction to the Case Studies1.5 Introduction to Supplementary Material and Exercises1.6 The Workbenches Suite of Interactive Teaching and Learning Tools1.7 Sample Code and Related Exercises2: The Process ViewAbstract2.1 Rationale and Overview2.2 Processes2.3 Process Scheduling2.4 Scheduling for Real-Time Systems2.5 Specific Scheduling Algorithms and Variants, Used in Modern Operating Systems2.6 Interprocess Communication2.7 Threads: An Introduction2.8 Other Roles of the Operating System2.9 Use of Timers Within Programs2.10 Transparency from the Process Viewpoint2.11 The Case Study from the Process Perspective2.12 End-of-Chapter Exercises3: The Communication ViewAbstract3.1 Rationale and Overview3.2 The Communication View3.3 Communication Techniques3.4 Layered Models of Communication3.5 The TCP/IP Suite3.6 Addresses3.7 Sockets3.8 Blocking and Nonblocking Socket Behaviors3.9 Error Detection and Error Correction3.10 Application-Specific Protocols3.11 Integrating Communication with Business Logic3.12 Techniques to Facilitate Components Locating Each Other3.13 Transparency Requirements from the Communication Viewpoint3.14 The Case Study from the Communication Perspective3.15 End-of-Chapter ExercisesAppendix Socket API Reference4: The Resource ViewAbstract4.1 Rationale and Overview4.2 The CPU as a Resource4.3 Memory as a Resource for Communication4.4 Memory Management4.5 Resource Management4.6 The Network as a Resource4.7 Virtual Resources4.8 Distributed Application Design Influences on Network Efficiency4.9 Transparency from the Resource Viewpoint4.10 The Case Study from the Resource Perspective4.11 End-of-Chapter Exercises5: The Architecture ViewAbstract5.1 Rationale and Overview5.2 The Architecture View5.3 Heterogeneity5.4 Hardware and System-Level Architectures5.5 Software Architectures5.6 Taxonomy of Software Architecture Classes5.7 Client-Server5.8 Three-Tier and Multitier Architectures5.9 Peer-to-Peer5.10 Distributed Objects5.11 Middleware: Support for Software Architectures5.12 System Models of Collective Resources and Computation Resource Provision5.13 Software Libraries5.14 Hardware Virtualization5.15 Static and Dynamic Configurations5.16 Nonfunctional Requirements of Distributed Applications5.17 The Relationship Between Distributed Applications and Networks5.18 Transparency from the Architecture Viewpoint5.19 The Case Study from the Architectural Perspective5.20 End-of-Chapter ExercisesAppendix The Peer-to-Peer Application-Level Protocol Message Sequence6: Distributed SystemsAbstract6.1 Rationale and Overview6.2 Transparency6.3 Common Services6.4 Name Services6.5 Domain Name System (DNS)6.6 Time Services6.7 Election Algorithms6.8 Group Communications6.9 Notification Services6.10 Middleware: Mechanism and Operation6.11 Middleware Examples and Support Technologies6.12 Deterministic and Nondeterministic Aspects of Distributed Systems6.13 End of Chapter Exercises7: Case Studies: Putting It All TogetherAbstract7.1 Rationale and Overview7.2 Introduction to the Use Cases7.3 Case Study #1: Time Service Client (with Library)7.4 Case Study #2: Event Notification Service7.5 Good Design Practice for Distributed Applications7.6 End of Chapter Programming Exercises7.7 List of Accompanying ResourcesIndex
ISBN:
9780128007297
Page Count: 548
Retail Price
:
£78.99
9780123749574; 9780123858801; 9780123747501
Access to teacher/student resources is available to registered users with approved inspection copies or confirmed adoptions. To review this material, please request an inspection copy.
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
Related Titles