Systems Programming
Designing and Developing Distributed Applications
- 1st Edition - February 25, 2015
- Author: Richard Anthony
- Language: English
- Paperback ISBN:9 7 8 - 0 - 1 2 - 8 0 0 7 2 9 - 7
- eBook ISBN:9 7 8 - 0 - 1 2 - 8 0 0 8 1 7 - 1
Systems Programming: Designing and Developing Distributed Applications explains how the development of distributed applications depends on a foundational understanding of the re… Read more
Purchase options
Institutional subscription on ScienceDirect
Request a sales quoteSystems 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.
- 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
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
- No. of pages: 548
- Language: English
- Edition: 1
- Published: February 25, 2015
- Imprint: Morgan Kaufmann
- Paperback ISBN: 9780128007297
- eBook ISBN: 9780128008171
RA
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 systemsRead Systems Programming on ScienceDirect