Cover image for Practical distributed processing
Title:
Practical distributed processing
Personal Author:
Series:
Undergraduate topics in computer science,
Publication Information:
New York : Springer-Verlag, 2008
Physical Description:
xiv, 270 p. : ill. ; 24 cm.
ISBN:
9781846288401
Added Author:

Available:*

Library
Item Barcode
Call Number
Material Type
Item Category 1
Status
Searching...
30000010184057 QA76.9.D5 B76 2008 Open Access Book Book
Searching...

On Order

Summary

Summary

Distributed processing has a strong theoretical foundation, but many day-to-day practitioners make limited use of the advantages this theory can give them. The result includes unreliable systems with obscure and intermittent failures, that can cost time, money and in extreme cases, lives. Reliable construction of distributed and concurrent systems must incorporate theory in practice.

This book provides a concise presentation of the theory closely linked to the practical realisation of these concepts. Practical presentation is given with examples from C, Java and Eiffel in this comprehensive textbook which contains all the elements needed for a complete development of a distributed system. Theoretical models of concurrency are linked with practical realisation of systems, providing an integrated approach to the field.

Written with undergraduates in mind, especially relevant for intermediate level students, this textbook will prove a comprehensive guide to the topic. Example code will be provided on a website.


Reviews 1

Choice Review

Brooke (Univ. of Teesside, UK) and Paige (Univ. of York, UK) attempt to summarize the most relevant theoretical and practical aspects of distributed computing in an accessible book written for upper-level undergraduate students in software-related studies. The book is certainly comprehensive enough to meet the breadth goal, but as a result, much of its content is presented at a high level, and students may find that they lack the detailed information to fully understand and practice the concepts introduced. To make full use of this work, it is essential to read the additional material cited in the bibliography. The presence of case studies thus becomes not only a welcome addition, but a necessary (and mandatory) section, which allows one to witness meaningful examples of the application of distributed processing concepts. The addition of hints and solutions to the exercises helps students better understand the concepts presented, although not enough for self-learning. The examples and case studies are modern and appropriate. Summing Up: Recommended. Upper-division undergraduate through researchers and faculty. L. Benedicenti University of Regina


Table of Contents

Prefacep. v
Contentsp. ix
1 What is Distributed Processing?p. 1
1.1 Overviewp. 1
1.2 Evolution of computing and networkingp. 2
1.3 Distributed processingp. 3
1.4 Application areasp. 4
1.5 Modelsp. 4
1.6 Mobile codep. 5
1.7 Challenges with distributed systemsp. 6
1.8 Summaryp. 7
Exercisesp. 8
2 Concepts of Concurrencyp. 11
2.1 Overviewp. 11
2.2 Architectures in concurrencyp. 12
2.3 Naming and addressingp. 12
2.3.1 Examples of names and addressesp. 13
2.3.2 Address mapping mechanismsp. 14
2.4 Sharing and synchronisationp. 16
2.4.1 Allocation of resourcesp. 17
2.4.2 Example: File synchronisationp. 17
2.5 Low-level synchronisationp. 18
2.5.1 Race conditionsp. 18
2.5.2 Mutual exclusionp. 19
2.5.3 Semaphoresp. 20
2.5.4 Monitorsp. 23
2.5.5 Rendezvousp. 25
2.6 Timing and real-time systemsp. 26
2.7 Dependabilityp. 26
2.7.1 Types of faults and failuresp. 27
2.7.2 Responding to failurep. 28
2.8 Server typesp. 28
2.9 Clusters, load-balancing and Gridsp. 29
2.10 Summaryp. 30
Exercisesp. 31
3 Models of Concurrencyp. 33
3.1 Overviewp. 33
3.2 State machines and automatap. 34
3.3 SPIN and Promelap. 35
3.4 Process algebrasp. 36
3.4.1 Communicating Sequential Processesp. 37
3.4.2 ¿-calculus and mobilityp. 39
3.5 Lindap. 41
3.5.1 JavaSpacesp. 42
3.6 Deadlock revisitedp. 43
3.7 Summaryp. 45
Exercisesp. 47
4 Concurrency in Operating Systemsp. 49
4.1 Overviewp. 49
4.2 Why use operating systems?p. 50
4.3 Processes and threadsp. 51
4.3.1 Concept of a processp. 51
4.3.2 User and supervisor modes in CPUsp. 52
4.3.3 Multitaskingp. 52
4.3.4 Threads and lightweight processesp. 54
4.4 Process and thread examples in Linuxp. 54
4.4.1 Forkp. 54
4.4.2 Pthreadsp. 56
4.5 Tasking in Adap. 58
4.6 Summaryp. 60
Exercisesp. 60
5 Interprocess Communicationp. 63
5.1 Overviewp. 63
5.2 Pthreads IPC examples in Linuxp. 64
5.2.1 Mutexes and shared memoryp. 64
5.2.2 Semaphoresp. 66
5.2.3 Condition variablesp. 68
5.3 Mutual exclusion in Adap. 71
5.4 BSD socketsp. 74
5.5 TCP client-server examplep. 75
5.5.1 A simple TCP serverp. 75
5.5.2 String termination and networksp. 80
5.5.3 A simple TCP clientp. 81
5.5.4 TCP client with name lookupp. 85
5.6 UDP client-server examplep. 85
5.6.1 UDP serverp. 85
5.6.2 UDP clientp. 87
5.7 Two-way communicationsp. 89
5.8 A forking TCP serverp. 91
5.9 Blocking and selectp. 94
5.9.1 Select for two-way communicationsp. 95
5.9.2 Select for serving multiple connectionsp. 97
5.10 Fault tolerance and IPC timingp. 97
5.11 Summaryp. 98
Exercisesp. 98
6 Protocolsp. 101
6.1 Overviewp. 101
6.2 Purpose of protocolsp. 102
6.3 Issues in protocolsp. 102
6.3.1 High- and low-level protocolsp. 102
6.3.2 Messagesp. 105
6.3.3 Platform dependencep. 106
6.3.4 Fault tolerancep. 107
6.4 Defining protocolsp. 109
6.4.1 Encodingp. 111
6.4.2 Notationp. 112
6.5 Example: HTTPp. 112
6.6 Example: SMTPp. 113
6.7 Example: Alternating bit protocolp. 114
6.8 Summaryp. 117
Exercisesp. 117
7 Securityp. 121
7.1 Overviewp. 121
7.2 Definitions, concepts and terminologyp. 122
7.2.1 Risk, threat and vulnerabilityp. 122
7.2.2 Objectives of securityp. 122
7.2.3 Designp. 123
7.3 Security issues in distributed systemsp. 124
7.4 Cryptographyp. 126
7.4.1 Cryptography example: Digital signaturesp. 128
7.4.2 Key managementp. 128
7.4.3 Matching a public key to a userp. 129
7.5 Case study: Needham-Schroederp. 129
7.6 Practical issuesp. 131
7.6.1 C programmingp. 131
7.6.2 Web applicationsp. 132
7.6.3 Operating system and network issuesp. 133
7.6.4 SSLp. 133
7.6.5 Using SSLp. 134
7.7 Summaryp. 136
Exercisesp. 136
8 Languages and Distributed Processingp. 139
8.1 Overviewp. 139
8.2 Suitability of languagesp. 140
8.3 Distributed processing in Cp. 141
8.3.1 C generallyp. 141
8.3.2 Debugging Cp. 142
8.4 Distributed processing in Javap. 143
8.4.1 Overview: the RMI modelp. 144
8.4.2 Examplep. 145
8.4.3 Alternativesp. 147
8.5 Distributed processing in Adap. 148
8.6 Distributed processing in Eiffel and SCOOPp. 149
8.6.1 SCOOP: A concurrency model for Eiffelp. 151
8.6.2 Related work and prototypesp. 152
8.7 Comparison of languagesp. 153
8.7.1 Language paradigmp. 155
8.7.2 Typing disciplinep. 156
8.7.3 Networking supportp. 156
8.7.4 Concurrency supportp. 157
8.7.5 Interprocess communication supportp. 158
8.8 Summaryp. 158
Exercisesp. 159
9 Building Distributed Systemsp. 161
9.1 Overviewp. 161
9.2 Methodp. 162
9.3 Case study: Emailp. 163
9.3.1 Typical use and requirementsp. 163
9.3.2 Platform and language requirementsp. 164
9.3.3 Architecturep. 165
9.3.4 Protocols and formatsp. 165
9.3.5 Example: Sending email using PHPp. 168
9.4 Case study: Secure shellp. 170
9.4.1 Typical use and requirementsp. 171
9.4.2 Platform requirementsp. 172
9.4.3 Architecturep. 172
9.4.4 Protocolsp. 173
9.5 Case study: Version control and synchronisationp. 174
9.5.1 Typical use and requirementsp. 175
9.5.2 Platform requirementsp. 176
9.5.3 Architecturep. 177
9.5.4 Protocolsp. 178
9.6 Case study: Web applicationsp. 178
9.7 Summaryp. 180
Exercisesp. 180
10 Case Study: A Networked Gamep. 183
10.1 Motivation and organisationp. 183
10.2 Outline structure and basic requirementsp. 184
10.3 Analysis and designp. 185
10.3.1 Outline use casesp. 186
10.3.2 Detailed design issuesp. 189
10.3.3 Securityp. 190
10.4 Protocolp. 191
10.4.1 Protocol messagesp. 191
10.4.2 Client loginp. 192
10.4.3 Map server start-up and shutdownp. 192
10.4.4 UDP messagesp. 194
10.4.5 Remarks on protocolp. 196
10.4.6 Data viewp. 197
10.5 Implementationp. 198
10.5.1 Admin serverp. 199
10.5.2 Map serverp. 200
10.5.3 Player clientp. 200
10.5.4 Running the examplep. 201
10.6 Testingp. 202
10.7 Summaryp. 202
Exercisesp. 203
11 The Endp. 205
11.1 Summaryp. 205
11.2 Suggestionsp. 207
11.2.1 Future directionsp. 209
11.2.2 Interesting projectsp. 210
A Exercises: Hints and Commentsp. 213
B About the Example Codep. 245
Bibliographyp. 247
Glossaryp. 253
Indexp. 267