Characterization of Distributed Systems

As part of my MSc in Computer Engineering I have to study all over again some introductory books to several subjects.

These books are often way too boring for all of us which have been working in the IT world for several years because they are focused mainly to undergraduate students.

But I like to think that I can always learn new stuff or remember things read in the past from these kind of books, even reading the same topic from a different point of view is always interesting.

I have forced my self to write a post summarizing the content of these books to help study for the exams. This, and the following post, are about “Distributed Systems, Concepts and Design. George Coulouris et at”, what I have read so far is too basic. I don’t really know why some can choose such an introductory book for a MSc, this really frustrates me… but I can’t do anything else that reading it and literally learning some stuff just to pass the exam, so here we go.


Distributed System: Hardware of Software Components located at networked computers communicate and coordinate their actions only by passing messages.

A Distributed System has the following consequences:

  • Concurrency
  • No Global Clock
  • Independent Failures: All computers can fail, computers can become isolated but keep running.

In this chapter the authors explain what Internet and Intranet are, at least authors focus on security.

Ubiquitous Computing:  Suggests small devices will become so pervasive that they are scarcely noticed.

Ubiquitous vs Mobile: Overlap but differ in that the first will benefit the user while remaining in a single environment (e.g. Hospital, home) and the second has advantages even it only involves laptops, mobile phones, etc

Service: Distinct part of a computer system that manages a collection of related resources and presents their functionality to users and applications.

Is this stuff about WWW and few crappy HTML examples really needed? Seriously?

Web problems: dangling links, scale problems, despite the use of cache/proxy no efficient means to keep users up-to-date, UI.

Heterogeneity applies to:

  • Networks
  • Computer Hardware
  • Operating Systems
  • Programming Languages
  • Implementations by different developers

Middleware: masks heterogeneity of the underlying above. e.g. CORBA, Java RMI. Includes computational models e.g. remote object invokation, remote SQL, etc

Mobile code: Code sent from one computer and run in another e.g. Java applets


  • Key interfaces are published
  • Open Distributed Systems are based on uniform communication mechanism and published interfaces
  • Heterogeneity but all work together thanks to published standards.

Security: These guys fix everything with a firewall…

  • Confidentiality
  • Integrity
  • Availability

Scalability: A systems is scalable if will remain effective when significant increase in the number of resources and the number of users.

  • physical resources: grow at O(n)
  • Performance loss: no worse than O(log n)
  • Preventing software resources running out: IPv4
  • Avoid bottlenecks: DNS vs host file

Failure Handling:

  • Detecting Failures: Checksum and suppose remote failures, such as timeout.
  • Masking Failures: Retransmitting, redundancy.
  • Tolerate failures: video stream
  • Recovery from Failures:  permanent data
  • Redundancy: at least 2 paths between computers, dns/DB replicated.

Concurrency: alright you don’t say anything at all

Transparency: System perceived as a whole rather than a collection of independent components.

  • Network transparency: access and location transparency. Lack of it, you must use ftp instead of the application.
  • Mobility transparency: URLs can’t move with its content, phones can move physically.
  • Failure transparency: mail failures are masked