Chapter 1

Definition of a distributed system:

A distributed system is a collection of independent computers that appears to its users as a single coherent (connected) system.

bulletHardware: Easy to expand and scale (independant computers),
bulletSoftware:  Users and applications interact with a distributed system in a uniform way.

Distributed systems uses middleware between the different operating systems and the distributed applications.

Goals:

bulletEasy access for users to remote resources
bulletTransparency (able to present itself as if it is a single computer)

bulletOpenness (interoperability, portability )
bulletScalability (size, geographically and administratively)(distributing, replication/caching and hiding communication latencies)

Hardware concepts:

bulletMultiprocessors (all CPUs have direct access to the shared memory)
bulletHomo/Hetero Multicomputer (each CPU has direct connection with its own local memory)

Software concepts:

bullet1: Distributed operating systems (uniprocessor, multiprocessor and multicomputer). Same OS distributed on the different machines.  Communicating with messages. CLOSED.
bullet2: Network Operating systems (collection of uniprocessor systems, each with its own OS). rlogin.  communicating with shared files. OPEN

NEITHER OF THESE TWO QUALIFIES AS DITRIBUTED SYSTEMS.  WE NEED AN ADITIONAL LAYER OF SOFTWARE!!

Middleware:

Sits between the application and the operating software.

bulletMiddleware models: 1: All IO as keyboard are treated like files (UNIX), 2: RPC(remote procedure call), 3: Distributed objects.
bulletMiddleware services:  naming, persistence (storage), distributed transactions (multiple read and write automatically), its OPEN(interfaces are complete).

The client-server model:

bulletClient: A process that requests a service from a server by sending and then waiting.
bulletServer:  A process implementing a specific service like a file system service or a database service.

Application layering:

bulletUser interface level
bulletProcessing level (core functionality of an application)
bulletData level (database)

Cient-server architectures:

bulletClient machine only containing the programs implementing the user-interface level
bulletA server machine with the programs implementing the processing and datalevel
bulletMultitired Architectures (GUI, Application and database divided not stricktly in 3). Vertical.
bulletHorizontal distribution (webservers replicated across several machines)