Swappa : Uni / Sistemi Operativi - Strutture dei sistemi distribuiti
Creative Commons License

Torna alla pagina di Sistemi Operativi


 :: Appunti 2.0 ::

Strutture dei sistemi distribuiti

Concetti di base

Un sistema distribuito è un insieme di sistemi di elaborazione che non condividono memorie o orologi e che sono connessi tra loro mediante una rete di comunicazione. Ognuno dei singoli sistemi può essere chiamato con molti nomi, ad esempio host o macchina, e mentre le sue risorse interne sono definite locali, quelle che può raggiungere attraverso la rete sono dette remote.

Obiettivo dei sistemi distribuiti è fornire un ambiente efficace e conveniente per la condivisione di risorse tra macchine diverse.

Vantaggi dei sistemi distribuiti

I principali motivi per costruire sistemi distribuiti sono:

Tutti questi fattori hanno fatto sì che le industrie si orientassero verso i sistemi distribuiti e allo stesso tempo verso un downsizing dei sistemi di calcolo, dal momento che reti di macchine a medio-basse prestazioni hanno nell'insieme ottime funzionalità e costi ridotti.

Tipi di sistemi distribuiti

Esistono due grandi categorie di sistemi orientati alle reti e li vedremo nei prossimi capitoli.

Sistemi operativi di rete

Un sistema operativo di rete fornisce un ambiente in cui gli utenti, che sono consapevoli della molteplicità delle macchine, possono accedere a risorse remote.

Tre importanti funzioni di questo sistema sono:

Notare che ogni computer conserva il proprio file system locale e (molto importante) la posizione dei file non è trasparente agli utenti, che devono sapere esattamente dove si trovano. Abbiamo già detto infatti che non avviene una vera condivisione di dati: l'utente può solo copiarli da un host all'altro.

Sistemi operativi distribuiti

In un sistema operativo distribuito gli utenti accedono alle risorse remote nello stesso modo in cui accedono a quelle locali, e la migrazione dei processi e dei dati da un host all'altro avviene sotto il controllo del sistema operativo distribuito.

La migrazione dei dati può avvenire in due modi:

  1. quando un utente richiede un file su una macchina remota, questo viene interamente trasferito così da potervi accedere in locale. A elaborazione compiuta, se è stato modificato, viene interamente ricopiato nella macchina di origine
  2. simile al precedente, ma a differenza dell'intero file vengono trasferite solo le parti effettivamente necessarie al processo in quel preciso momento

In entrambi i metodi il sistema non si limita a trasferire, ma fa anche le traduzioni opportune se le rappresentazioni dei dati (big endian, little endian) non sono compatibili.
Qual è la tecnica migliore? Dipende dalle porzioni di file che vengono mediamente richieste.

In alcuni casi è preferibile trasferire la computazione piuttosto che i dati, scelta particolarmente saggia se il tempo di trasferimento è più lungo del tempo di esecuzione di un comando remoto. Il tutto può essere realizzato con una RPC o con l'attivazione di un processo remoto per mezzo di scambio di messaggi.

Una logica estensione della migrazione della computazione è quella dei processi, dove l'esecuzione di questi ultimi non avviene interamente nell'host in cui sono stati attivati. Ci sono due tecniche per spostarli, una che prevede la migrazione in modo tatalmente trasparente all'utente (più rapida su sistemi omogenei), l'altra che invece permette o richiede le modalità di migrazione (più portabile e configurabile). Alcuni motivi per la migrazione dei processi sono il bilanciamento del carico, una maggiore velocità di calcolo, maggiore compatibilità dell'hardware o del software, accesso ai dati, ecc.

Topologia

I vari host in un sistema distribuito possono essere connessi fisicamente in molti modi diversi, e le configurazioni ottenute si possono valutare in base al costo dell'installazione e della comunicazione (tempo + soldi) e dalla disponibilità, ovvero dall'ampiezza della zona in cui si può accedere ai dati malgrado il guasto di alcuni collegamenti o macchine.

Le reti completamente connesse sono molto performanti e affidabili, ma hanno costi d'installazione spesso insostenibili; gli si preferisce quelle parzialmente connesse, nelle quali vanno però fornite informazioni d'instradamento a quegli host che non sono direttamente collegati.

La scelta della configurazione migliore dipende dal sistema che si vuole ottenere e dalla situazione ambientale, non esiste una topologia migliore in assoluto.

Comunicazione

Attribuzione e risoluzione dei nomi

Per identificare in modo certo i siti di una rete e i loro processi è necessario dare loro un nome univoco. I processi su sistemi remoti vengono usualmente identificati dalla coppia <nome host, identificatore>, dove nome host è unico nella rete e l'identificatore è il comune id del processo.

La risoluzione dei nomi deve tradurre il nome di una macchina in un valore numerico che descriva il sistema di destinazione all'hardware della rete. Ciò avviene o per mezzo di una lista mantenuta in locale da ogni host che riporta tutte le corrispondenze tra nomi e indirizzi (soluzione onerosa), o distribuendo tali informazioni tra i computer della rete ed utilizzando un protocollo per la risoluzione. Questo secondo sistema è quello del server dei nomi del dominio (DNS), reso nel tempo sempre più efficiente e sicuro grazie a numerosi raffinamenti.

Strategie di instradamento

Se in un sistema distribuito esistono più percorsi per collegare due host, allora ci sono diverse opzioni di instradamento. Ogni sito ha una tabella di instradamento mantenuta aggiornata che indica i vari percorsi alternativi per la trasmissione di un messaggio, e che può contenere informazioni aggiuntive come velocità e costi.

Sono tre gli schemi di instradamento più comuni:

L'instradamento dinamico è il più complicato da organizzare e gestire, ma è il più efficace in ambienti complessi data l'adattabilità alle variazioni di carico e di gestione dei guasti.

Il gateway è un dispositivo hardware dedicato che collega la rete locale ad altre reti, gestendo l'eventuale cambiamento di protocollo di comunicazione. Gli host si collegano al gateway con instradamento statico, mentre quest'ultimo si collega alla rete con schema dinamico. Un altro dispositivo molto importante in una rete è il router, responsabile dell'instradamento dei messaggi tra due reti.

Strategie di pacchetto

I messaggi di per sé non hanno una lunghezza standard, ma per semplificare la progettazione del sistema si preferisce realizzare comunicazioni con messaggi a dimensione fissa chiamati pacchetti (o frame o datagram). La comunicazione implementata a pacchetti può avvenire mediante messaggi senza connessione inaffidabili (senza garanzia di ricezione, esempio l'UDP) o affidabili (esempio TCP).

Strategie di connessione

Una volta che i messaggi sono in grado di arrivare a destinazione i processi possono istituire delle sessioni di comunicazione per scambiarsi le informazioni. Ne vengono comunemente usate di tre tipi:

Gestione dei conflitti

Le collisioni in un sistema distribuito avvengono quando a un host arrivano contemporaneamente due messaggi, che diventano entrambi indecifrabili. Esistono molte tecniche per evitarlo, tra cui ricordiamo:

Protocolli di comunicazione

Nella progettazione di una rete di comunicazione i fattori critici da tenere in considerazione sono le comunicazioni asincrone, le interazioni tra ambienti non omogenei e la probabilità di avere errori. L'obiettivo che ci si prefigge è dunque creare un ambiente omogeneo di comunicazione che la astragga e virtualizzi così da semplificare la progettazione e avere una gestione efficiente del sistema.
La soluzione è l'adozione di protocolli di comunicazione da applicare a strati distinti del sistema, utilizzati un po' come se fossero i driver della rete. La comunicazione avviene ovviamente solo tra strati equivalenti.

Il modello teorico standard è l'ISO/OSI, che divide il sistema in:

Questo è un buon modello, ma storicamente si è preferito adottarne uno più semplice ed efficiente: il TCP/IP, detto anche modello reale. Il protocollo TCP corrisponde allo strato di trasporto, è orientato alle connessioni ed è affidabile (l'opposto dell'UDP). Il protocollo IP è invece responsabile dell'instradamento dei pacchetti attraverso Internet.

Robustezza

In un sistema distribuito sono molti i tipi di guasti in cui si può incorrere, ma per garantire la robustezza bisogna comunque individuarli, rinconfigurare il sistema per poter continuare la computazione e infine recuperare la configurazione iniziale a guasto riparato.

Individuazione dei guasti

In un ambiente senza memoria condivisa è di solito impossibile distinguere le tipologie di guasto, se hardware o software ad esempio, ma ci si deve accontentare di rilevarli (che è già tanto). Tra le tecniche di rilevamento le più utilizzate sono il monitoraggio periodico con handshaking, l'impostazione di un time-out (superato il quale viene sollevato un errore) e la computazione duplicata con confronto dei risultati (che oltre a rilevare il guasto offre una controprova della correttezza dei risultati).

Riconfigurazione del sistema

Una volta rilevato che un certo host è guasto, bisogna anzitutto aggiornare tutte le tabelle di instradamento della rete affinché la comunicazione non passi da lì. Bisogna poi fare in modo che siano tutti informati del fatto che i servizi erogati da quella macchina non sono temporaneamente disponibili, e anzi bisogna cercare di far migrare tali servizi su altri siti.

Recupero di un guasto

A guasto riparato la macchina deve essere reintegrata nel sistema in modo che gli altri host possano essere informati (tramite handshaking) del suo ripristino. Le tabelle interne della macchina verranno quindi ripristinate e aggiornate, e gli verranno recapitati i messaggi pendenti.

Problemi progettuali

L'obiettivo principale di un progettista di sistemi distribuiti è renderli del tutto trasparenti agli utenti, dando l'illusione che stiano operando su un sistema centralizzato convenzionale.

Altri aspetti che vanno tenuti in considerazione sono:


Torna alla pagina di Sistemi Operativi

(Printable View of http://www.swappa.it/wiki/Uni/SO-StruttureDeiSistemiDistribuiti)