Programming Distributed Computing Systems: A Foundational Approach (MIT Press)


Philipp Meier rated it really liked it Dec 06, Maurice Peters rated it really liked it Sep 10, Martin Podval rated it it was ok Jan 02, Alex rated it liked it May 03, Karthikeyan Balasubramanian rated it really liked it Mar 26, Athanasios rated it really liked it Jan 21, John rated it really liked it Jan 18, Vladimir rated it really liked it Aug 26, Dan rated it liked it Mar 30, Tyler Weir rated it liked it Dec 19, Mohsen Shahmoradi rated it it was amazing Oct 01, Sophie Smithburg rated it it was amazing Nov 27, Zeeshan Lakhani rated it it was amazing Dec 20, H rated it it was amazing Jun 01, Chris rated it liked it Mar 04, Eloi Pereira rated it really liked it Sep 22, Padraic rated it liked it Aug 06, Colin Jones added it Jun 22, Thomas marked it as to-read Jun 22, Alex Ott marked it as to-read Jun 22, Andy Legkiy marked it as to-read Jun 23, Rustem Suniev marked it as to-read Jun 23, Kirill marked it as to-read Jun 23, Proctor marked it as to-read Jun 23, Tim Cowlishaw marked it as to-read Aug 16, Goncalo marked it as to-read Aug 16, Robin Liu marked it as to-read Aug 27, Milan Aleksic marked it as to-read Sep 12, Jason Webb added it Sep 16, Maarten marked it as to-read Sep 19, Tom marked it as to-read Sep 23, Mattias Lundell marked it as to-read Oct 15, Kydos marked it as to-read Oct 16, Seyi Ogunyemi marked it as to-read Oct 24, Zoli marked it as to-read Nov 18, Michalis added it Nov 22, Svraghavan marked it as to-read Nov 29, Stefan marked it as to-read Dec 06, Hokanson marked it as to-read Dec 26, A student or instructor wishing to focus on the theoretical aspects can skip part II.

Programming Distributed Computing Systems A Foundational Approach MIT Press

A student or instructor wishing to focus on the pragmatic aspects of distributed computing can skip sections x. An alternative way to study the book is to consider only a subset of the com- putation models and languages. A student wishing to focus on the actor model can read chapters 1, 4, 9, and 11, skipping sections A student wishing to focus on the join calculus can read chapters 1, 5, 10, and 11, skipping sections A student wishing to focus on the ambient calculus can read chapters 1 and 6.

Acknowledgments Gul Agha, my former Ph.

Account Options

Indeed, many of the ideas behind studying and organizing theories of concurrent programming started shaping in my mind after his Concur- rent Object Oriented Programming graduate seminar at the University of Illinois at Urbana-Champaign back in the twentieth century.

Carolyn Talcott has also always been a source of inspiration with her formal mathematical approach to studying concurrent computation. She provided invalu- able timely feedback on early drafts of this book. I expect that future versions of this book or further manuscripts will include some of our ongoing work.

I would like to especially thank my former Ph. My interaction with colleagues in distributed computing projects has also been very valuable. I would especially like to thank Jeff Baumes for typing out the initial lecture notes on the lambda calculus and Joshua Taylor for excellent comments throughout the book, in particular on part I.

I would like to acknowledge the can- did support and excellent working environment provided by my colleagues Kenjiro Taura and Rajkumar Buyya during my sabbatical year. Please excuse any omissions.

In any event, without their work, this book would not have been possible. Last but not least, I want to thank my family for all their support and en- couragement. My wife Adriana and my daughters Tatiana and Catalina have been a constant source of love, inspiration and motivation.

  1. Cervello (Italian Edition)?
  2. Frequently bought together.
  3. Programming Distributed Computing Systems: A Foundational Approach (The MIT Press)?
  4. Programming Distributed Computing Systems: A Foundational Approach by Carlos A. Varela?
  5. Programming Distributed Computing Systems: A Foundational Approach.

I want to thank my parents Carlos and Flor Alba, my brothers Javier and Leonardo, and my extended family and friends, for their understanding when I could not be there. I dedicate this book to Tatiana and Catalina: Let the new generations make the world a better place!

Programming Distributed Computing Systems 1 Introduction 1. We have witnessed and enjoyed hardware development technologies that for a long time have improved processor, network, and storage performance exponentially. Data processing, communication, and storage capabilities have improved by six orders of magnitude in only four decades.

Account Options

Concurrency can be regarded as potential parallelism. Computing activities can be executed in parallel provided there are no data or control dependencies that require them to be executed sequentially. However, a concurrent computer program can also be executed on a single processor by distributing its activities over time, also 2 1 Introduction known as interleaving. When multiple processors are used to execute a concurrent application, we say that it is a parallel execution of the concurrent program.

If the processors are separated geographically, we say that it is a distributed execution of the concurrent program. If the location of the activities can change dynamically, we say it is a mobile execution of the concurrent program. There are several advantages and disadvantages associated with writing concur- rent computer programs. In the best case scenario, subactivities are completely independent from each other, and applications scale up to the availability of computing resources.

Applica- tions in this category are often called massively parallel applications. Most applications lie in the middle. For example, a web server may be able to service client requests in parallel, but a database service component may have to serialize writing requests for consistency. Concurrent software enables better human-computer interaction.

Follow the Author

Concurrent software also enables better resource utilization. For example, a network interface card can send and receive data from other computers while the processor is busy computing application functions and the graphical coprocessor is busy rendering images for data visualization. As opposed to sequential programs, concurrent programs are typically not deterministic: Different executions of the same program can produce different results. The combi- natorial explosion of possible execution orders makes reasoning about correctness and termination harder than it is for sequential code.

Programming abstractions de- signed to help tackle the inherent complexity of concurrent execution can be misused, producing deadlocks. Beyond having to consider application safety—that is, ensure data consistency—and liveness—that is, ensure computation progress—it is not al- ways trivial to obtain high performance due to the additional resources required to schedule multiple activities and enable their communication and synchronization.

Distributed computing refers to computation that spreads over space and time. As an example, geographically separated database servers may each contain part of the distributed state of an application. Banking transactions started by the user of an 1. Internet computing, web computing, grid computing, and cloud computing are all forms of distributed computing.

MIT Press - Programming Distributed Computing www.farmersmarketmusic.com

As a consequence, the need to scale data analyses to large data sets requires ever larger computing infrastructures that can be provided only by multiple geographically distributed data and computing centers. Standards are often required to enable components developed by independent parties to interact.

The heterogene- ity inherent in geographically distributed computing infrastructures makes resource scheduling and allocation critical to provide a reasonable quality of service to appli- cation users. The open nature of the Internet and the World Wide Web make security a key aspect of distributed systems. The mobility of code enables dynamic application extensibility—for example, web browsers automatically downloading applets or plug-ins—to augment their behavior or to enable viewing of heterogeneous data types.

Mobility of code also enables distributed applications to adapt to changing network conditions. The mobility of data, including its potential replication, enables faster access by both human users and computer applications. Data replication also enables fault tolerance. Sensor and actuator networks more and more often produce data at different scales 4 1 Introduction continuously.