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.