Obiettivi della lezione:
- Comprendere le diverse architetture distribuite hardware. Gli studenti impareranno a identificare e descrivere le varie architetture hardware, dalla Single Instruction Single Data (SISD) ai cluster.
- Analizzare le architetture distribuite software. Gli studenti acquisiranno conoscenze sulle architetture software, dai terminali remoti alle architetture completamente distribuite.
- Valutare i vantaggi e le applicazioni delle diverse architetture. Gli studenti saranno in grado di analizzare criticamente i vantaggi e le applicazioni pratiche di ciascun tipo di architettura.
Introduzione ai modelli architetturali
I modelli architetturali sono fondamentali per comprendere come i sistemi distribuiti sono progettati e implementati. Questi modelli possono essere suddivisi in due categorie principali: architetture distribuite hardware e architetture distribuite software. Comprendere queste architetture è cruciale per progettare sistemi informativi e di telecomunicazione efficaci e efficienti.
Architetture distribuite hardware
Dal SISD al cluster
- SISD (Single Instruction Single Data): Questa è l’architettura più semplice dove un singolo processore esegue una singola istruzione su un singolo dato alla volta. È utilizzata nei tradizionali computer monoprocessore.
- Esempio: Un classico computer desktop.
- SIMD (Single Instruction Multiple Data): Questa architettura permette a un singolo istruttore di essere eseguito simultaneamente su più dati. È utilizzata nelle applicazioni di elaborazione parallela come l’elaborazione di immagini e grafica.
- Esempio: GPU (Graphics Processing Unit) che elabora pixel multipli in parallelo.
- MIMD (Multiple Instruction Multiple Data): In questa architettura, più processori eseguono istruzioni diverse su dati diversi simultaneamente. È utilizzata nei sistemi multiprocessore.
- Esempio: Sistemi di server moderni che eseguono applicazioni diverse contemporaneamente.
- Cluster computing: Un gruppo di computer collegati tramite una rete che lavorano insieme come un singolo sistema coerente. I cluster possono essere utilizzati per l’alta disponibilità e l’elaborazione ad alte prestazioni. In un cluster, ciascun nodo esegue una parte del lavoro complessivo, permettendo di affrontare problemi che richiederebbero tempi di elaborazione proibitivi su un singolo computer.
- Esempio: Cluster di server utilizzati per il calcolo scientifico e le simulazioni complesse.
- Grid computing: Simile al cluster computing, ma con un’enfasi sulla condivisione delle risorse tra organizzazioni diverse. Il grid computing permette l’accesso remoto e la gestione delle risorse computazionali distribuite su un’ampia area geografica.
- Esempio: Iniziative come il CERN Grid per l’elaborazione dei dati provenienti dagli esperimenti dell’LHC (Large Hadron Collider).
Architetture distribuite software
Dai terminali remoti alle architetture completamente distribuite
- Terminali remoti: In questo modello, i terminali remoti si collegano a un server centrale per l’elaborazione. Questo modello era comune nei primi sistemi mainframe.
- Esempio: Terminali utilizzati per accedere a un mainframe aziendale negli anni ’70 e ’80.
- Client-Server: Una delle architetture più comuni dove i client richiedono servizi e i server forniscono questi servizi. È utilizzata in molte applicazioni web e di rete.
- Esempio: Applicazioni web moderne dove i browser fungono da client e i server web forniscono contenuti.
- Peer-to-Peer (P2P): Ogni nodo nel sistema può agire sia da client che da server. È utilizzata in reti di condivisione di file come BitTorrent.
- Esempio: Reti di condivisione di file come BitTorrent.
- Architetture completamente distribuite: In questi sistemi, non c’è un server centrale e tutti i nodi collaborano per fornire servizi e condividere risorse.
- Esempio: Blockchain e reti di criptovalute come Bitcoin.
- Sistemi distribuiti informativi: Questi sistemi distribuiti sono progettati per gestire informazioni e fornire servizi di informazione in modo distribuito. Esempi includono i sistemi di gestione dei contenuti distribuiti e i database distribuiti.
- Esempio: MongoDB, un database NoSQL distribuito che consente la scalabilità orizzontale.
- Sistemi pervasivi: Sistemi distribuiti che integrano dispositivi e sensori in vari ambienti per raccogliere dati e fornire servizi in modo continuo e ubiquitario. Sono spesso utilizzati in applicazioni di Internet delle Cose (IoT) e smart cities.
- Esempio: Sensori ambientali distribuiti in una smart city per monitorare la qualità dell’aria.
Vantaggi e applicazioni delle diverse architetture
Vantaggi
- SISD: Semplicità di progettazione e implementazione.
- SIMD: Elevate prestazioni in applicazioni parallele.
- MIMD: Flessibilità e capacità di eseguire compiti complessi simultaneamente.
- Cluster computing: Scalabilità e tolleranza ai guasti.
- Grid computing: Condivisione delle risorse su vasta scala e utilizzo efficiente delle risorse computazionali.
- Terminali remoti: Centralizzazione delle risorse e facile manutenzione.
- Client-Server: Struttura ben definita e gestione semplice.
- P2P: Scalabilità e distribuzione del carico.
- Architetture completamente distribuite: Decentralizzazione e sicurezza.
- Sistemi distribuiti informativi: Gestione efficiente dei dati e accesso distribuito.
- Sistemi pervasivi: Monitoraggio e risposta in tempo reale.
Applicazioni
- SISD: Utilizzo in computer desktop e laptop tradizionali.
- SIMD: Utilizzo in grafica computerizzata e elaborazione di immagini.
- MIMD: Utilizzo in server e data center.
- Cluster computing: Utilizzo in calcolo scientifico e simulazioni complesse.
- Grid computing: Utilizzo nella ricerca scientifica collaborativa.
- Terminali remoti: Utilizzo in vecchi sistemi mainframe.
- Client-Server: Utilizzo in applicazioni web e aziendali.
- P2P: Utilizzo in reti di condivisione di file e comunicazione.
- Architetture completamente distribuite: Utilizzo in criptovalute e tecnologie blockchain.
- Sistemi distribuiti informativi: Utilizzo in grandi database distribuiti e sistemi di gestione dei contenuti.
- Sistemi pervasivi: Utilizzo in applicazioni IoT e smart cities.
Esercitazioni pratiche
- Esercizio di classificazione delle architetture hardware:
- Presentare agli studenti diversi scenari di utilizzo e chiedere loro di classificare ciascuno scenario come SISD, SIMD, MIMD, cluster o grid computing.
- Esercizio di analisi delle architetture software:
- Presentare casi di studio di diverse applicazioni software e chiedere agli studenti di identificare l’architettura distribuita utilizzata e di spiegare i motivi della scelta.
- Progetto pratico di implementazione:
- Dividere la classe in gruppi e assegnare a ciascun gruppo il compito di progettare un sistema distribuito utilizzando uno dei modelli architetturali studiati. Gli studenti dovranno presentare il loro progetto e giustificare le scelte fatte.