The word distributed in terms such as "distributed system", "distributed programming" and "distributed algorithm" originally referred to computer networks in which individual computers were physically distributed within a geographical area. The terms are used today in a much broader sense, even referring to autonomous processes running on the same physical computer and interacting with one another by the passage of messages.
Although there is no single definition of a distributed system, the following defining properties are commonly used:
• There are several autonomous computing entities (computers or nodes), each of which has its own local memory.
• Entities communicate with each other by message passing.
A distributed system may have a common goal, such as solving a large computational problem; the user then perceives the collection of autonomous processors as a unit. Alternatively, each computer can have its own user with individual needs and the purpose of the distributed system is to coordinate the use of shared resources or provide communication services to users.
Other typical properties of distributed systems are as follows:
• The system must tolerate faults in individual equipment.
• The system structure (network topology, network latency, number of computers) is not known in advance, the system may consist of different types of computers and network links, and the system may change during the execution of a distributed program .
• Each computer has a limited and incomplete view of the system. Each computer can know only part of the input.