In questo articolo spiego in che modo l’evoluzione dei sistemi distribuiti ha portato a un significativo progresso nell’architettura hardware, consentendo un aumento della potenza di calcolo senza dover spingere al limite la velocità delle singole CPU

Indice dei contenuti

In questo articolo spiego in che modo l’evoluzione dei sistemi distribuiti ha portato a un significativo progresso nell’architettura hardware, consentendo un aumento della potenza di calcolo senza dover spingere al limite la velocità delle singole CPU. Questa evoluzione ha portato allo sviluppo di sistemi con più unità di elaborazione, noti come macchine parallele o sistemi ad architettura parallela.

Evoluzione dell’architettura hardware

Per superare i limiti imposti dall’aumento della velocità di una singola CPU, si è optato per l’integrazione di più processori all’interno di un sistema. Ciò ha permesso di distribuire il carico computazionale e migliorare le prestazioni complessive del sistema.

Uno dei principali criteri per classificare le architetture hardware è stato proposto da Michael J. Flynn nel 1972. La sua classificazione si basa sulla combinazione di due flussi di informazioni presenti nei calcolatori:

  • Flusso delle istruzioni: rappresenta l’insieme di operazioni eseguite dalla CPU.
  • Flusso dei dati: indica il modo in cui i dati vengono elaborati e trasferiti all’interno del sistema.

Classificazione di Flynn

Flynn ha identificato quattro categorie principali di architetture, basate sulla combinazione dei flussi di dati e istruzioni:

Tipo di ArchitetturaFlusso di IstruzioniFlusso di Dati
SISD (Single Instruction Single Data)SingoloSingolo
SIMD (Single Instruction Multiple Data)SingoloMultiplo
MISD (Multiple Instruction Single Data)MultiploSingolo
MIMD (Multiple Instruction Multiple Data)MultiploMultiplo

Descrizione delle architetture

  1. Macchine SISD (Single Instruction Single Data)
    • Questa è l’architettura tradizionale dei calcolatori sequenziali, dove un singolo processore esegue una singola istruzione su un singolo flusso di dati alla volta.
    • Esempio: i primi computer mainframe e molti microprocessori tradizionali.
  2. Macchine SIMD (Single Instruction Multiple Data)
    • Un’unica istruzione viene eseguita contemporaneamente su più flussi di dati. Questo tipo di architettura è particolarmente utilizzato nei supercomputer e nei processori grafici (GPU).
    • Esempio: elaborazione parallela nei moderni GPU per il rendering di immagini.
  3. Macchine MISD (Multiple Instruction Single Data)
    • Molteplici istruzioni vengono applicate simultaneamente su un unico flusso di dati. Questa configurazione è meno comune e spesso utilizzata per sistemi specializzati, come l’elaborazione di segnali o alcuni sistemi fault-tolerant.
    • Esempio: pipeline nei sistemi di crittografia.
  4. Macchine MIMD (Multiple Instruction Multiple Data)
    • Ogni processore esegue istruzioni indipendenti su diversi insiemi di dati. Questo tipo di architettura è alla base della maggior parte dei moderni sistemi multiprocessore e delle reti di calcolatori distribuiti.
    • Esempio: cluster di server, cloud computing, e supercomputer moderni.
tassonomia di Flynn
tassonomia di Flynn

Cluster Computing: Un’Evoluzione dei Sistemi Distribuiti

Il Cluster Computing rappresenta un sistema distribuito in cui più nodi ad alte prestazioni sono interconnessi attraverso una rete locale ad alta velocità. Questi nodi devono essere omogenei, ovvero avere un hardware simile, lo stesso sistema operativo e condividere la stessa rete.

Caratteristiche Distintive dei Cluster

Rispetto a una semplice rete di PC, un cluster si distingue per:

  • Alta potenza di calcolo (High Performance Computing – HPC): La potenza complessiva è teoricamente pari alla somma di quella dei singoli nodi.
  • Trasferimento dati ultra-veloce: Le connessioni raggiungono velocità superiori a 1 Gbit/s.
  • Centralizzazione fisica: I PC sono montati su un unico rack per ridurre la latenza di comunicazione.
  • Gestione centralizzata: Un’applicazione di management permette di monitorare i nodi, distribuire carichi di lavoro e ottimizzare le prestazioni.
cluster
cluster computing

Tipologie di Architettura nei Cluster

Esistono due principali modelli organizzativi per i cluster:

  1. Organizzazione Gerarchica con Nodo Principale (Beowulf)
    • Un nodo principale gestisce la comunicazione e il calcolo viene distribuito agli altri nodi.
    • Utilizza librerie di Message Passing Interface (MPI) per il calcolo parallelo.
  2. Single System Image (MOSIX)
    • Il cluster viene visto come un unico sistema operativo distribuito.
    • Un algoritmo automatico di bilanciamento del carico ottimizza le prestazioni, migrando i processi tra i nodi.

Grid Computing: Un Sistema Distribuito Decentralizzato

Il Grid Computing è un modello di calcolo distribuito altamente decentralizzato, costituito da una rete di nodi interconnessi in una griglia virtuale (grid). A differenza dei cluster di calcolo, i sistemi grid sono caratterizzati da un elevato grado di eterogeneità, poiché i nodi possono avere:

  • Hardware e architetture differenti
  • Diversi sistemi operativi e tecnologie di rete
  • Politiche di sicurezza indipendenti

Origine e Obiettivi del Grid Computing

Il concetto di griglia computazionale è stato introdotto a metà degli anni ’90 con l’obiettivo di consentire la condivisione coordinata delle risorse all’interno di organizzazioni virtuali (Virtual Organization – VO). L’idea principale non si limita allo scambio di file, ma estende la condivisione a:

  • Risorse di calcolo (potenza CPU e GPU)
  • Software e applicazioni
  • Storage e database
  • Reti e infrastrutture IT
grid
grid computing

Evoluzione verso un’Architettura Service-Oriented

Inizialmente, le grid erano strutturate su quattro livelli di specificità, ma con l’evoluzione tecnologica si è passati a un modello service-oriented noto come Open Grid Service Architecture (OGSA). In questo approccio, tutte le risorse—calcolo, storage, reti, programmi, database—sono trattate come grid services, migliorando l’accessibilità e la scalabilità.


Sistemi Distribuiti Pervasivi: L’Informatica Ovunque

I sistemi distribuiti pervasivi rappresentano una nuova generazione di tecnologie, caratterizzate da dispositivi piccoli, mobili e connessi via wireless. Questi sistemi sono spesso integrati in contesti più ampi, come:

  • Sistemi domestici (smart home, domotica)
  • Elettronica per l’assistenza sanitaria (telemedicina, dispositivi wearable)
  • Reti di sensori (monitoraggio ambientale, sicurezza)

Requisiti Chiave dei Sistemi Pervasivi

  1. Adattabilità al contesto: il sistema deve funzionare in ambienti dinamici con condizioni mutevoli.
  2. Composizione ad hoc: ogni nodo può essere utilizzato in modi diversi da utenti differenti.
  3. Facilità di configurazione: deve essere semplice da installare e gestire senza competenze tecniche avanzate.
  4. Condivisione come principio base: i nodi si attivano e si disattivano dinamicamente, fornendo informazioni e servizi condivisibili.

Uno dei problemi principali in questi sistemi è il compromesso tra pervasività e trasparenza: mentre i sistemi distribuiti tradizionali cercano di nascondere la distribuzione per semplificare l’uso, nei sistemi pervasivi è spesso preferibile renderla esplicita per garantire un maggiore controllo agli utenti.

Reti Domestiche e Domotica: L’Automazione della Vita Quotidiana

Le reti domestiche rappresentano l’infrastruttura di base per la connessione di dispositivi all’interno di un’abitazione. A differenza delle reti aziendali, queste sono progettate per essere auto-configuranti e autogestite, poiché la maggior parte degli utenti non possiede conoscenze avanzate di connettività.

Struttura delle Reti Domestiche

Una soluzione comune per semplificare la gestione della rete domestica è l’utilizzo di un home box centralizzato, ovvero un router o gateway che connette wireless tutti i dispositivi, inclusi:

  • PC, tablet e smartphone
  • Dispositivi smart home (termostati, videocamere, assistenti vocali)
  • Elettrodomestici connessi (frigoriferi intelligenti, lavatrici, sistemi di irrigazione)
  • Dispositivi ospiti (smart TV, console di gioco, sensori IoT)
rete domestica

L’Innovazione della Domotica

L’evoluzione tecnologica e l’integrazione sempre più stretta tra mondo fisico e digitale hanno spinto una forte crescita della domotica, un settore che si occupa dell’automazione degli ambienti domestici per migliorare la qualità della vita.

Il termine “domotica” nasce dalla fusione di “domus” (casa) e “automatica”, e si riferisce a un insieme di tecnologie che permettono il controllo intelligente della casa.

Le aspettative dei consumatori sono cambiate negli ultimi anni, con una crescente domanda di case più intelligenti e dotate di sistemi interattivi, simili a quelli presenti negli smartphone. Questo ha portato alla nascita del concetto di Ambient Intelligence (Intelligenza Ambientale), definito da D.J. Cook come:

“An Ambient Intelligence system is a digital environment that proactively, but sensibly, supports people in their lives.”
(Un sistema di intelligenza ambientale è un ambiente digitale che supporta le persone in modo proattivo ma ragionato nella loro vita.)

domotica

Wearable Computing: Tecnologia Indossabile e Monitoraggio Biometrico

Il Wearable Computing (calcolo indossabile) è un settore in continua evoluzione, con applicazioni che spaziano dall’assistenza sanitaria al fitness, dalla sicurezza al settore industriale. Questi dispositivi sono progettati per essere indossati dagli utenti e per raccogliere, elaborare e trasmettere dati in tempo reale.

Applicazioni Principali

Attualmente, i sistemi di wearable computing sono prevalentemente utilizzati in ambito sanitario e medico, dove permettono il monitoraggio continuo dei parametri vitali e la gestione remota delle informazioni cliniche. Possiamo distinguere due principali modalità operative:

  1. Memorizzazione locale dei dati – Il dispositivo raccoglie i dati e li archivia in un computer palmare (PDA, Personal Digital Assistant) o in uno smartphone.
  2. Trasmissione remota dei dati – I dati vengono inviati a un sistema di archiviazione remoto o a un’infrastruttura cloud, permettendo l’accesso in tempo reale da parte di operatori sanitari.
medical

Sfide Tecnologiche e di Sicurezza

Nonostante i progressi tecnologici, i dispositivi wearable presentano alcune sfide critiche:

  • Memorizzazione e gestione dei dati: i dispositivi devono garantire un’adeguata capacità di archiviazione senza compromettere le prestazioni.
  • Prevenzione della perdita di dati: meccanismi di backup e sincronizzazione sono fondamentali per evitare la perdita di informazioni cruciali.
  • Sicurezza e privacy: la trasmissione dei dati sanitari deve avvenire tramite protocolli criptati e con sistemi di autenticazione sicuri.
  • Gestione degli allarmi: in caso di rilevamento di valori anomali (es. battito cardiaco irregolare), il sistema deve attivare notifiche immediate per medici o familiari.

Reti di Sensori e Integrazione con il Wearable Computing

Le reti di sensori (Wireless Sensor Networks – WSN) sono un elemento chiave nei sistemi di wearable computing. Sono composte da numerosi nodi sensore (da 10 a 1000) che raccolgono informazioni sull’ambiente o sul corpo umano.

Due possibili approcci per la gestione dei dati raccolti dai sensori:

  1. Base di dati centralizzata: i dati vengono inviati a un server remoto o a un’infrastruttura cloud per essere elaborati.
  2. Memorizzazione distribuita: ogni nodo della rete può memorizzare parte delle informazioni, creando di fatto un database distribuito.

Questa seconda opzione è particolarmente utile in contesti in cui la connettività è intermittente o quando si vuole ridurre la dipendenza da un unico punto di raccolta dati.

Architetture Distribuite Software: Dai Terminali Remoti ai Sistemi Completamente Distribuiti

L’evoluzione delle architetture distribuite non ha riguardato solo l’hardware, ma anche il software, spesso anticipando i cambiamenti nei sistemi operativi e nelle infrastrutture tecnologiche. In questo articolo analizziamo le principali tappe dell’evoluzione del software nei sistemi distribuiti.

Architettura a Terminali Remoti

La prima forma di architettura distribuita era basata su terminali remoti connessi a un’unica entità centrale. In questo modello, tutti i processi di calcolo ed elaborazione erano eseguiti dal sistema centrale, mentre i terminali, privi di capacità computazionale, si limitavano a inviare e ricevere dati.

Caratteristiche principali:

  • Terminali omogenei con funzionalità limitate.
  • Elaborazione centralizzata con gestione dedicata della memoria per ogni terminale.
  • Bassa scalabilità e dipendenza da un unico punto di elaborazione.
rete-di-terminali
rete di terminali

Architettura Client-Server

L’architettura client-server rappresenta un’evoluzione rispetto al modello precedente. I client acquisiscono capacità di elaborazione e possono inviare richieste ai server, che forniscono risposte elaborate.

Vantaggi principali:

  • Maggiore scalabilità e flessibilità rispetto ai terminali remoti.
  • Possibilità di avere più server che offrono servizi specifici.
  • Compatibilità tra client e server con tecnologie diverse.

Un server può agire anche come client di un altro server, creando una rete di servizi interconnessi.

Client - Server
Client – Server

Architettura Web-Centric

Negli ultimi anni, la diffusione del Web ha portato allo sviluppo di architetture Web-centric. In questo modello, le applicazioni risiedono sui server e i client fungono da semplici interfacce utente.

Caratteristiche chiave:

  • Spostamento delle applicazioni lato server.
  • Accesso ai servizi tramite browser Web.
  • Migrazione delle applicazioni gestionali verso il Web.

Le architetture Web possono essere classificate in:

  • Architetture Web tradizionali: basate su pagine HTML e interazioni limitate.
  • Architetture Web multilivello: con separazione tra logica di presentazione, logica di elaborazione e gestione dei dati.
web-centric
web-centric

Architettura Cooperativa

L’architettura cooperativa rappresenta un’evoluzione del modello client-server, basandosi su entità autonome che offrono e richiedono servizi secondo un approccio a componenti software.

Principali vantaggi:

  • Superamento delle differenze tra hardware, software e protocolli di rete.
  • Introduzione di standard di comunicazione come CORBA (Common Object Request Broker Architecture).
  • Maggiore interoperabilità e modularità.

Architettura Completamente Distribuita

A differenza del modello Web-centric, l’architettura completamente distribuita prevede la cooperazione di entità paritetiche, come nei sistemi groupware, che comunicano direttamente tra loro.

Caratteristiche principali:

  • Assenza di un server centrale.
  • Ridondanza per garantire la tolleranza ai guasti.
  • Maggiore resilienza e distribuzione dei carichi.

Tecnologie associate:

  • OMG (Object Management Group): standard per la gestione delle architetture distribuite.
  • RMI (Remote Method Invocation): tecnologia per la comunicazione tra processi Java distribuiti.
  • DCOM (Distributed Component Object Model): tecnologia Microsoft per la comunicazione tra componenti distribuiti.

Architettura a livelli

Per alleggerire il carico elaborativo dei serventi, sono state introdotte le applicazioni multilivello, nelle quali avviene la separazione delle funzionalità logiche del software in più livelli.

Si introducono gli strumenti di middleware, ovvero uno strato software intermedio che si colloca sopra al sistema operativo ma sotto i programmi applicativi, rappresentando l’evoluzione dei sistemi operativi distribuiti.

Con middleware si intende una classe di tecnologie software sviluppate per assistere gli sviluppatori nella gestione della complessità e dell’eterogeneità presenti nei sistemi distribuiti (D.E. Bakken). Il middleware ha lo scopo di facilitare la comunicazione e le interazioni tra i diversi componenti software di un sistema distribuito.

Questo software si interpone negli elaboratori locali tra le applicazioni e il sistema operativo locale, creando un’architettura a tre livelli. Tale middleware può variare da host a host e sarà trattato in dettaglio nella prossima lezione.

Obiettivi del Middleware

Lo scopo principale del middleware è di garantire l’interoperabilità delle applicazioni su diversi sistemi operativi. Inoltre, permette la connettività tra servizi che devono interagire e collaborare su piattaforme distribuite, utilizzando meccanismi di programmazione e API relativamente semplici.

Grazie a questo strato intermedio, i sistemi distribuiti risultano più facilmente programmabili, offrendo una specifica modalità di interazione. Tale interazione può basarsi, ad esempio, su:

  • Chiamata di procedure remote (RPC, Remote Procedure Call)
  • Scambio di messaggi, secondo un paradigma di programmazione distribuita

Funzionalità del Middleware

Tra le principali funzionalità offerte dal middleware ricordiamo:

  • Servizi di astrazione e cooperazione
  • Servizi per le applicazioni
  • Servizi di amministrazione del sistema
  • Servizi di comunicazione
  • Ambiente di sviluppo applicativo

Un servizio di middleware è un servizio general-purpose che si colloca tra piattaforme e applicazioni (Bernstein).

Limitazioni del Middleware

Nonostante i numerosi vantaggi offerti dal middleware, esso non rappresenta una soluzione universale per tutti i problemi legati ai sistemi distribuiti. Le criticità derivano spesso da decisioni affrettate o da una progettazione approssimativa e poco competente degli sviluppatori.

Ad esempio, chi sviluppa applicazioni distribuite spesso non distingue chiaramente tra:

  • Chiamata di procedura remota
  • Chiamata locale

Inoltre, il middleware focalizzato esclusivamente sulla comunicazione tra componenti non ha responsabilità sulla gestione di errori o malfunzionamenti dell’applicazione. Non è nemmeno in grado di gestire fallimenti della rete o guasti nei server, rendendo necessaria un’ulteriore gestione degli errori a livello applicativo.

Conclusione

L’evoluzione delle architetture software nei sistemi distribuiti ha seguito un percorso che va dall’elaborazione centralizzata con terminali remoti fino a modelli distribuiti avanzati. Oggi, con l’avvento del cloud computing e delle tecnologie edge, i sistemi distribuiti continuano a evolversi per offrire maggiore efficienza, scalabilità e interoperabilità tra dispositivi eterogenei.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *