Remoto
- componenti locali/remote
- componenti potenzialmente localizzate su macchine diverse
Concorrenza
- un sistema distribuito è per sua stessa natura concorrente
- contemporanea esclusione di due (o più) istruzioni è possibile, su macchine diverse
- non esistono strumenti come lock e semafori che sulle architetture multiprocessore (multicore) permettono di gestire in maniera più semplice la sincronizzazione
Assenza di uno stato globale
- non esiste una maniera per poter determinare lo stato globale del sistema
- in quanto la distanza e la eterogeneità del sistema non permette di definire con certezza lo stato in cui si trova ciascun nodo
Malfunzionamenti parziali
- ogni componente di un sistema distribuito può smettere di funzionare correttamente, in maniera indipendente dalle altre componenti
- questo fallimento non deve inficiare le funzionalità che sono localizzate altrove
Eterogeneità
- un sistema distribuito per definizione è eterogeneo per tecnologia sia hardware che software
- l’eterogeneità si realizza in tutti i contesti
- hardware
- sistema operativo
- rete di comunicazione
- protocolli di rete
- linguaggi di programmazione
- applicazioni, ecc
Autonomia
- un sistema distribuito non ha un singolo punto dal quale esso può essere controllato, coordinato e gestito
- la collaborazione va ottenuta mediando le richieste del sistema distribuito con quelle del sistema che gestisce ciascun nodo
- tramite politiche di condivisione e di accesso, formalmente specificate e rigidamente applicate
Evoluzione
- i sistemi distribuiti devono assecondare l’evoluzione dell’ambiente all’interno del quale vengono realizzati e forniscono le loro funzionalità
- un sistema distribuito può cambiare anche in maniera sostanziale durante la sua vita, sia perchè cambia l’ambiente sia perchè cambia la tecnologia utilizzata