ABSTRACT

With the increasing use of computer networks, the software architecture has changed radically. From a relatively simple architecture (

centralized system

) where all the software components are executed on a single machine, new software architectures (

distributed systems

) have been developed where software is organized into different modules distributed to different

elaboration nodes

, and data is exchanged by means of a communication network. In a centralized system, an application runs on a single node and constitutes a single process; the workstation is the only

active

component of the system because it hosts the application itself. Terminals share the resources of the workstation in such a way that different users can use the application. Terminals can even exist without a CPU, being equipped instead with a communication interface only for sending commands to the running application on the workstation. To summarize, in such a system the communication network is used to interconnect

stupid

nodes (

terminals

) with the

elaboration

node, as depicted in Figure 7.1. In a distributed system an application is composed of more processes

running on different nodes of the network. All the processes are cooperating closely, and they execute in parallel. So, a characteristic of distributed systems is that the processes do not share memory but instead rely on message exchange, thus introducing delay during the computation. The reference architecture changes, as depicted in Figure 7.2.