In informatica, i sistemi possono essere centralizzati o distribuiti, ciascuno con architetture, vantaggi e limiti specifici. In questo articolo analizziamo le differenze, la classificazione di Flynn, la legge di Moore e le principali caratteristiche dei sistemi moderni.
La Legge di Moore e l’Evoluzione dei Transistor
La Legge di Moore afferma che il numero di transistor su un microchip raddoppia circa ogni due anni, aumentando la potenza di calcolo dei computer. Negli ultimi anni, l’attenzione si è spostata dall’incremento dei transistor all’ottimizzazione dell’architettura dei chip.
Le principali aziende produttrici e designer di chip includono:
- AMD – nota per l’overclocking e le prestazioni “da forza bruta”.
- Intel – all’avanguardia nella tecnologia dei processori.
- Apple, Samsung, NVIDIA, Huawei, Broadcom – leader nella produzione e design di componenti avanzati.
Classificazione di Flynn
La tassonomia di Flynn classifica le architetture dei computer in base al numero di flussi di istruzioni e dati processati simultaneamente:
- SISD (Single Instruction, Single Data) – un processore esegue un solo flusso di dati. Tipico dei vecchi PC a singolo core.
- SIMD (Single Instruction, Multiple Data) – una sola istruzione applicata a più dati contemporaneamente. Le GPU moderne sono un esempio.
- MISD (Multiple Instruction, Single Data) – poco diffusa, praticamente inesistente.
- MIMD (Multiple Instruction, Multiple Data) – architettura più comune oggi, dove diversi core gestiscono istruzioni e dati differenti.
La Macchina di Von Neumann descrive il modello classico di un computer: CPU, memoria centrale e periferiche connesse tramite un bus di sistema.
Sistemi Centralizzati vs Distribuiti
Sistemi Centralizzati
Nei sistemi centralizzati, dati e applicazioni risiedono su un singolo nodo di elaborazione. I sistemi legacy rientrano spesso in questa categoria, pur essendo datati, ma ancora utilizzati.
Sistemi Distribuiti
Un sistema distribuito è composto da più processi cooperanti, eseguiti in parallelo su unità autonome. Si parla di sistema distribuito se soddisfa almeno una di queste condizioni:
- Calcolo distribuito
- Database distribuiti
Tipologie di Sistemi Distribuiti
- Cluster Computing – un nodo principale coordina i nodi “worker”, creando una macchina virtuale unica.
- Grid Computing – macchine eterogenee che collaborano per eseguire calcoli complessi.
- Sistemi Pervasivi – dispositivi smart come smartwatch, elettrodomestici e IoT.
- Sistemi Informativi – applicazioni web e servizi su larga scala (ad esempio Netflix), che richiedono database distribuiti.
Vantaggi dei Sistemi Distribuiti
- Affidabilità – guasti su un nodo non compromettono l’intero sistema.
- Integrazione – combinazione di hardware e software diversi, ottimizzando i costi.
- Trasparenza – l’utente percepisce un unico sistema, nonostante la distribuzione dei componenti:
- Accesso – risorse disponibili allo stesso modo ovunque.
- Localizzazione – non serve sapere dove si trovano le risorse.
- Concorrenza – più utenti possono usare la stessa risorsa contemporaneamente (es. Google Docs).
- Replica – le risorse multiple appaiono come una sola.
- Guasti – errori nascosti all’utente.
- Migrazione – spostamento di risorse invisibile all’utente.
- Scalabilità – facile espansione senza interrompere il sistema.
- Economicità – rapporto qualità-prezzo migliore rispetto ai sistemi centralizzati.
- Apertura – semplice integrazione di nuovo hardware o software.
Svantaggi dei Sistemi Distribuiti
- Produzione del Software – inizialmente richiedeva modifiche al modo di programmare, nuovi standard e linguaggi.
- Complessità – gestione di un gran numero di computer distribuiti.
- Sicurezza – maggiore esposizione a minacce informatiche.
- Comunicazione – necessita di reti veloci e affidabili, con continui miglioramenti tecnologici.
Altri Concetti Chiave
- Middleware – software “collante” tra sistema operativo e applicazioni, che facilita comunicazione e gestione dati.
- Architettura Client/Server – il client richiede servizi al server.
- Fat Client – client che esegue parte dei calcoli localmente.
- Actor – nodo che funge sia da client sia da server.