A Distributed System (DS) is a collection of independent computers that appear to its users as a single coherent system.
There are two types of Distributed Systems:
- Tightly-coupled — a network of processors that share a single memory address space
- Loosely-coupled — processors with their own local memory that work together via a “communication network”
- Simple extension of centralised time-sharing systems
- Few minicomputers interconnected by communication network
- Each minicomputer has multiple users logged on
- Model used for remote resource sharing between users
- e.g. ARPAnet
- Several workstations connected by communication network
- Basic idea is to share processing power
- User logs onto home workstation and submits jobs for execution, system might transfer one or more processes to other workstations
- Issues: how to find an idle workstation, how to transfer processes, what happens to a remote process, etc
- e.g. Xerox PARC, Final Cut Pro render farm
- Consists of few minicomputers and several workstations
- Minicomputers are used for providing services
- For higher reliability and better scalability, multiple servers may be used for a purpose
- e.g. The V-System
- Sometimes, user needs no computing power, but once in a while needs a very large amount for a short period of time
- “Run” server manages and allocates processors to different users
- No concept of a home machine (i.e. user logs not into one machine but to system as a whole)
- Offers better utilisation of processing power compared to other models
- e.g. Amoeba, Plan9, Cambridge DCS
- To combine the advantages of both the Workstation-server and the Processor-pool model, a Hybrid model may be used
- It is based on the Workstation-server model but with the addition of a pool of processors
- Very expensive!
- Resources modelled as files
- Remote resources are accessed simply by accessing files
- Resource accesses are modelled as function calls
- Remote resources accessed by calling functions
- Resources are modelled as objects which are a set of data and functions to be performed on the data
- Remote resources are accessed as objects
- Reliability — only X% degradation if X% of machines go down (i.e. system as a whole does not go down)
- Incremental Growth — computing power can be added in small increments
- Sharing — allow many users access to a common database and peripherals
- Communication — makes human-to-human communication easier
- Effective Resource Utilisation — spread the workload over the available machines in the most cost-effective way
- Software — difficult to develop
- Networking — can saturate or cause other problems
- Security — easy access can also apply to secret data
- Heterogeneity — variety in networks, computer hardware, software, OS, programming languages, etc
- Openness — scalability and extensible can only be achieved through easy-to-use interfaces
- Transparency — system as a whole should look like a single computer
- Performance — achieving high performance out of cheap computers
- Scalability — system needs to work at large scales (e.g. hundreds, thousands, etc.)
- Failure Handling — the more parts, the more tendency to fail
- Security — authentication and data concealment
- Concurrency — programs need to run simultaneously and must not interfere with each other