
Practical Distributed Processing
by Brooke, Philip J.; Paige, Richard F.-
This Item Qualifies for Free Shipping!*
*Excludes marketplace orders.
Rent Textbook
Rent Digital
New Textbook
We're Sorry
Sold Out
Used Textbook
We're Sorry
Sold Out
How Marketplace Works:
- This item is offered by an independent seller and not shipped from our warehouse
- Item details like edition and cover design may differ from our description; see seller's comments before ordering.
- Sellers much confirm and ship within two business days; otherwise, the order will be cancelled and refunded.
- Marketplace purchases cannot be returned to eCampus.com. Contact the seller directly for inquiries; if no response within two days, contact customer service.
- Additional shipping costs apply to Marketplace purchases. Review shipping costs at checkout.
Summary
Author Biography
Table of Contents
Preface | p. v |
Contents | p. ix |
What is Distributed Processing? | p. 1 |
Overview | p. 1 |
Evolution of computing and networking | p. 2 |
Distributed processing | p. 3 |
Application areas | p. 4 |
Models | p. 4 |
Mobile code | p. 5 |
Challenges with distributed systems | p. 6 |
Summary | p. 7 |
Exercises | p. 8 |
Concepts of Concurrency | p. 11 |
Overview | p. 11 |
Architectures in concurrency | p. 12 |
Naming and addressing | p. 12 |
Examples of names and addresses | p. 13 |
Address mapping mechanisms | p. 14 |
Sharing and synchronisation | p. 16 |
Allocation of resources | p. 17 |
Example: File synchronisation | p. 17 |
Low-level synchronisation | p. 18 |
Race conditions | p. 18 |
Mutual exclusion | p. 19 |
Semaphores | p. 20 |
Monitors | p. 23 |
Rendezvous | p. 25 |
Timing and real-time systems | p. 26 |
Dependability | p. 26 |
Types of faults and failures | p. 27 |
Responding to failure | p. 28 |
Server types | p. 28 |
Clusters, load-balancing and Grids | p. 29 |
Summary | p. 30 |
Exercises | p. 31 |
Models of Concurrency | p. 33 |
Overview | p. 33 |
State machines and automata | p. 34 |
SPIN and Promela | p. 35 |
Process algebras | p. 36 |
Communicating Sequential Processes | p. 37 |
¿-calculus and mobility | p. 39 |
Linda | p. 41 |
JavaSpaces | p. 42 |
Deadlock revisited | p. 43 |
Summary | p. 45 |
Exercises | p. 47 |
Concurrency in Operating Systems | p. 49 |
Overview | p. 49 |
Why use operating systems? | p. 50 |
Processes and threads | p. 51 |
Concept of a process | p. 51 |
User and supervisor modes in CPUs | p. 52 |
Multitasking | p. 52 |
Threads and lightweight processes | p. 54 |
Process and thread examples in Linux | p. 54 |
Fork | p. 54 |
Pthreads | p. 56 |
Tasking in Ada | p. 58 |
Summary | p. 60 |
Exercises | p. 60 |
Interprocess Communication | p. 63 |
Overview | p. 63 |
Pthreads IPC examples in Linux | p. 64 |
Mutexes and shared memory | p. 64 |
Semaphores | p. 66 |
Condition variables | p. 68 |
Mutual exclusion in Ada | p. 71 |
BSD sockets | p. 74 |
TCP client-server example | p. 75 |
A simple TCP server | p. 75 |
String termination and networks | p. 80 |
A simple TCP client | p. 81 |
TCP client with name lookup | p. 85 |
UDP client-server example | p. 85 |
UDP server | p. 85 |
UDP client | p. 87 |
Two-way communications | p. 89 |
A forking TCP server | p. 91 |
Blocking and select | p. 94 |
Select for two-way communications | p. 95 |
Select for serving multiple connections | p. 97 |
Fault tolerance and IPC timing | p. 97 |
Summary | p. 98 |
Exercises | p. 98 |
Protocols | p. 101 |
Overview | p. 101 |
Purpose of protocols | p. 102 |
Issues in protocols | p. 102 |
High- and low-level protocols | p. 102 |
Messages | p. 105 |
Platform dependence | p. 106 |
Fault tolerance | p. 107 |
Defining protocols | p. 109 |
Encoding | p. 111 |
Notation | p. 112 |
Example: HTTP | p. 112 |
Example: SMTP | p. 113 |
Example: Alternating bit protocol | p. 114 |
Summary | p. 117 |
Exercises | p. 117 |
Security | p. 121 |
Overview | p. 121 |
Definitions, concepts and terminology | p. 122 |
Risk, threat and vulnerability | p. 122 |
Objectives of security | p. 122 |
Design | p. 123 |
Security issues in distributed systems | p. 124 |
Cryptography | p. 126 |
Cryptography example: Digital signatures | p. 128 |
Key management | p. 128 |
Matching a public key to a user | p. 129 |
Case study: Needham-Schroeder | p. 129 |
Practical issues | p. 131 |
C programming | p. 131 |
Web applications | p. 132 |
Operating system and network issues | p. 133 |
SSL | p. 133 |
Using SSL | p. 134 |
Summary | p. 136 |
Exercises | p. 136 |
Languages and Distributed Processing | p. 139 |
Overview | p. 139 |
Suitability of languages | p. 140 |
Distributed processing in C | p. 141 |
C generally | p. 141 |
Debugging C | p. 142 |
Distributed processing in Java | p. 143 |
Overview: the RMI model | p. 144 |
Example | p. 145 |
Alternatives | p. 147 |
Distributed processing in Ada | p. 148 |
Distributed processing in Eiffel and SCOOP | p. 149 |
SCOOP: A concurrency model for Eiffel | p. 151 |
Related work and prototypes | p. 152 |
Comparison of languages | p. 153 |
Language paradigm | p. 155 |
Typing discipline | p. 156 |
Networking support | p. 156 |
Concurrency support | p. 157 |
Interprocess communication support | p. 158 |
Summary | p. 158 |
Exercises | p. 159 |
Building Distributed Systems | p. 161 |
Overview | p. 161 |
Method | p. 162 |
Case study: Email | p. 163 |
Typical use and requirements | p. 163 |
Platform and language requirements | p. 164 |
Architecture | p. 165 |
Protocols and formats | p. 165 |
Example: Sending email using PHP | p. 168 |
Case study: Secure shell | p. 170 |
Typical use and requirements | p. 171 |
Platform requirements | p. 172 |
Architecture | p. 172 |
Protocols | p. 173 |
Case study: Version control and synchronisation | p. 174 |
Typical use and requirements | p. 175 |
Platform requirements | p. 176 |
Architecture | p. 177 |
Protocols | p. 178 |
Case study: Web applications | p. 178 |
Summary | p. 180 |
Exercises | p. 180 |
Case Study: A Networked Game | p. 183 |
Motivation and organisation | p. 183 |
Outline structure and basic requirements | p. 184 |
Analysis and design | p. 185 |
Outline use cases | p. 186 |
Detailed design issues | p. 189 |
Security | p. 190 |
Protocol | p. 191 |
Protocol messages | p. 191 |
Client login | p. 192 |
Map server start-up and shutdown | p. 192 |
UDP messages | p. 194 |
Remarks on protocol | p. 196 |
Data view | p. 197 |
Implementation | p. 198 |
Admin server | p. 199 |
Map server | p. 200 |
Player client | p. 200 |
Running the example | p. 201 |
Testing | p. 202 |
Summary | p. 202 |
Exercises | p. 203 |
The End | p. 205 |
Summary | p. 205 |
Suggestions | p. 207 |
Future directions | p. 209 |
Interesting projects | p. 210 |
Exercises: Hints and Comments | p. 213 |
About the Example Code | p. 245 |
Bibliography | p. 247 |
Glossary | p. 253 |
Index | p. 267 |
Table of Contents provided by Publisher. All Rights Reserved. |
An electronic version of this book is available through VitalSource.
This book is viewable on PC, Mac, iPhone, iPad, iPod Touch, and most smartphones.
By purchasing, you will be able to view this book online, as well as download it, for the chosen number of days.
Digital License
You are licensing a digital product for a set duration. Durations are set forth in the product description, with "Lifetime" typically meaning five (5) years of online access and permanent download to a supported device. All licenses are non-transferable.
More details can be found here.
A downloadable version of this book is available through the eCampus Reader or compatible Adobe readers.
Applications are available on iOS, Android, PC, Mac, and Windows Mobile platforms.
Please view the compatibility matrix prior to purchase.