The most obvious characteristic of a distributed system is distribution. A distributed system consists of many computers, distributed over many location, with remote communications. There are many different kinds of remote communications in a distributed system ranging from remote access of terminal devices to dynamically allocated IPs of mobile computer systems.
There may be distributed data access from one computer to another. Data may be vertically or horizontally distributed across many computers and disk farms. Peripheral devices may be network mounted allowing access from many locations. The application may be divided into many functional layers, or tiers, with each tier potentially on different computer systems thus building the popular client-server application architecture. Parallel algorithms may be distributed across many systems.
Distribution is a general terminology which includes the case of a occasionally connected computer or nomadic computing where systems frequently are disconnecting and rejoining the environment. New partitions are being formed on a regular bases affecting data, locks, networks, and applications. Dynamic changes in the routing tables are needed as mobile IPs become available to the general user. A disconnected customer must still be able to work, though in a limited fashion, using a self contained environment provided on his personal machine. When the disconnected system rejoins the distributed system environment it will have to be brought up to consistent status with the rest of the environment. This might include data, messages, locks, and application updates. Asynchronous and persistent messaging as well as data caches become more important in supporting the partitioning demanded by nomadic computing.