Tecniche di tolleranza ai guasti in un sistema informatico

Tecniche di tolleranza ai guasti in un sistema informatico

Inizialmente, le uniche tecniche di tolleranza ai guasti, adoperate nell’ingegneria del software, erano implementate a livello hardware e solo successivamente, quando il software divenne la componente principale del sistema, si intuì la necessità di dover dotare anche questo livello di misure di affidabilità. Si presentò quindi il problema di come realizzare queste tecniche; eseguire infatti una semplice trasposizione da un livello hardware ad un livello software delle tecniche già esistenti non sarebbe stata la soluzione adatta, poiché le stesse erano state progettate per far fronte a problemi di natura principalmente componentistica-ambientale e non software.

Nonostante questa fondamentale differenza, le tecniche di tolleranza ai guasti di livello software (software fault tolerance, SFT) realizzate per far fronte alle problematiche software, rimangono tutt’oggi molto simili alle tecniche hardware e sono spesso chiamate a rilevare e gestire anche guasti di livello hardware. Ciò che distingue la tolleranza ai guasti di livello software dalla tolleranza ai guasti di livello hardware è la necessitàdi ottenere non una indipendenza fisica tra le componenti hardware ma bensì una indipendenza logica tra i moduli software.

Possiamo quindi dare una prima classificazione delle tecniche di tolleranza ai guasti dividendole in due macrocategorie:

  • Tecniche di rilevamento. Tecniche atte principalmente al rilevamento dell’errore (sotto forma di input imprevisto o non corretto) ed al suo confinamento tramite opportune Segue poi la gestione delle eccezioni (siano esse interne, di interfaccia o dovute a malfunzionamento) e relativa notifica e propagazione. In queste tecniche non viene fatto uso della ridondanza.
  • Tecniche strutturate. Tecniche fondate sull’utilizzo della ridondanza al fine di rilevare gli errori, correggerli o o mascherarli. La correzione può essere realizzata nei seguenti modi: tramite recupero di uno stato di ripristino (checkpoint) salvato precedentemente all’ultima esecuzione; tramite trasformazioni dello stato del sistema atte al raggiungimento di uno stato corretto; tramite mascheramento ottenuto con il sistema del voting in grado di produrre un risultato finale corretto partendo da un insieme di risultati sia corretti che errati. I moduli software ridondanti possono essere eseguiti in modo distribuito su più componenti hardware oppure su una singola macchina. Possono inoltre essere eseguiti in parallelo oppure sequenzialmente.

Detto ciò, per le tecniche appartenenti alla seconda categoria, è possibile fornire una ulteriore classificazione sulla base dell’approccio utilizzato dalle tecniche al fine di contrastare il verificarsi di errori:

  • Versioni multiple del programma. Si basa sul concetto di diversità di disegno (Design Diversity), per cui vengono realizzate differenti copie del programma, implementate indipendentemente da team di sviluppo diversi ma programmate a svolgere la stessa funzione. Le principali tecniche che appartengono a questa categoria e che vedremo nel dettaglio in seguito sono: Recovery Blocks, N-Version Programming, Distributed Recovery Blocks, N Self-checking Programming, Consensus Recovery Block e Acceptance Voting.
  • Rappresentazioni multiple dei dati. Le tecniche di tolleranza ai guasti basate sulla diversità della rappresentazione dei dati (Data Diversity) fanno uso di differenti formati di input dei dati per verificare la correttezza dei Delle tecniche appartenenti a questa categoria tratteremo le tecniche chiamate Retry Blocks e N-Copy Programming.
  • Esecuzione ripetuta  in  momenti  diversi. Si  basa  sul  concetto di diversità temporale (Temporal Diversity) e consiste nell’eseguire il programma in momenti temporalmente distinti, oppure eseguendolo sulla base di input ottenuti in momenti diff Questo presuppone la presenza di guasti transienti che in un dato istante possono produrre un risultato errato mentre in un altro istante potrebbero non essere più presenti.
  • Riesecuzione in un ambiente diverso. Si basa sul concetto di diversità ambientale (Environment Diversity) e presuppone che la riesecuzione programmata del software in un ambiente diverso, inteso come stato del sistema, possa evitare il verificarsi di un numero di errori tale da portare il sistema al fallimento. Di questa categoria vedremo la tecnica chiamata Rejuvenation.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *