Sistema distribuito

Da Wikipedia, l'enciclopedia libera.

La locuzione sistema distribuito, in informatica, indica genericamente una tipologia di sistema informatico costituito da un insieme di processi interconnessi tra loro in cui le comunicazioni avvengono solo esclusivamente tramite lo scambio di opportuni messaggi. [1] Con il termine processo si indica, in genere, una qualsiasi entità capace di comunicare con un qualsiasi altro processo e di eseguire un algoritmo distribuito. A differenza di un algoritmo tradizionale è necessario includere nella definizione di algoritmo distribuito anche i messaggi che vengono scambiati tra i vari processi, poiché anch'essi sono essenziali nell'esecuzione e nella terminazione dell'algoritmo.

Caratteristiche[modifica | modifica sorgente]

Tra le caratteristiche di un sistema distribuito possiamo citare:

  • L'essere eterogeneo, poiché i vari processi possono essere fisicamente diversi. Infatti questi possono utilizzare diversi sistemi operativi, software scritti con differenti linguaggi di programmazione o utilizzare molteplici dispositivi hardware.
  • La mancanza di un clock globale. In questo contesto infatti è impossibile riuscire a sincronizzare perfettamente gli orologi di tutti i processi e questo comporta l'impossibilità di ordinare, in modo preciso ed univoco, tutti gli eventi che occorrono all'interno del sistema. Tale risultato è dovuto alle differenze strutturali, di natura per lo più elettronica, dei vari dispositivi per la generazione del segnale di clock all'interno dei microprocessori. Differenze dovute anche a parametri fisici come la temperatura relativa al dispositivo, allo stato di utilizzo o all'età del dispositivo.
  • La scalabilità, cioè la capacità di erogare le medesime prestazioni, in termini di throughtput e latenza, rispetto agli utilizzatori nonostante l'aumento del carico operativo sul sistema.
  • La possibilità di fallimenti indipendenti ai processi. I fallimenti che possono affliggere i processi possono essere di varia natura, ma tipicamente è possibile raggrupparli in due categorie: fallimenti di tipo crash e fallimenti bizantini. Nel primo caso abbiamo che il processo che va in crash smette improvvisamente di funzionare mentre nel secondo caso è impossibile, in genere, fare qualsiasi tipo di assunzione sulla causa o sugli effetti del fallimento. In quest'ultimo caso infatti il comportamento del processo che fallisce in modo bizantino è tipicamente arbitrario.
  • L'essere sincrono o asincrono. Questa distinzione è essenziale poiché alcune problematiche nell'ambito dei sistemi distribuiti possono essere risolte o meno proprio in base a queste caratteristiche. Un sistema distribuito si dice sincrono quando è possibile calcolare le seguenti proprietà, altrimenti di dice asincrono:
    1. L'intervallo di tempo massimo e minimo per l'esecuzione di un'istruzione da parte di un processo.
    2. L'intervallo di tempo massimo per la trasmissione di un messaggio dalla sorgente alla destinazione.
    3. E la massima deviazione del valore di ciascun orologio locale (clock drift rate) rispetto al tempo reale.

Esempi[modifica | modifica sorgente]

Un'altra applicazione tipica dei sistemi distribuiti sono i sistemi di elaborazione distribuiti (computer cluster) a livello locale o geografico (ad es. per il calcolo distribuito) all'interno di un sistema informatico e connessi tra loro tramite rete locale o geografica.

Un altro esempio di sistema distribuito è la rete Internet stessa, che si estende a livello mondiale comprendendo risorse fisicamente molto distanti tra loro, in cui processi con funzioni diverse e connessi da reti di vario tipo si scambiano messaggi informativi basati su disparati protocolli di comunicazione.

Bibliografia[modifica | modifica sorgente]

  • George Coulouris, Jean Dollimore, Tim Kindberg, Distributed Systems, 3ª ed., Addison-Wesley [1988], 2001, ISBN 0-201-61918-0.

Note[modifica | modifica sorgente]

  1. ^ Coulouris et al., op. cit., p. 1

Voci correlate[modifica | modifica sorgente]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica