Schema di blocco di recupero
The recovery block scheme is a software fault-tolerance technique based on design diversity and backward error recovery. It structures a program as a series of blocks, each with a primary module, an acceptance test, and one or more alternate modules. If the primary module’s output fails the acceptance test, the system state is restored, and an alternate module is executed.
Il concetto di blocco di ripristino, introdotto da Brian Randell, è un approccio strutturato per ottenere la tolleranza ai guasti del software. Si basa sul principio di fornire moduli software ridondanti, noti come alternative, per una data operazione, abbinati a un meccanismo per verificare la correttezza del risultato dell'operazione. I componenti chiave sono: il test di accettazione (AT), l'alternativa primaria (P) e una sequenza di alternative secondarie (Q1, Q2, ...). Prima di eseguire l'alternativa primaria, il sistema salva un checkpoint del suo stato corrente. Al termine di P, viene eseguito il test di accettazione sull'output. L'AT è un elemento logico cruciale che verifica che il risultato sia accettabile; non deve dimostrare la correttezza assoluta, ma piuttosto che il risultato sia ragionevole e coerente.
Se il risultato supera l'AT, il checkpoint viene scartato e il programma prosegue. Tuttavia, se l'AT fallisce, o se l'alternativa primaria stessa non riesce a essere eseguita (ad esempio, a causa di un errore di runtime), il sistema esegue un rollback. Ripristina lo stato dal checkpoint salvato ed esegue quindi l'alternativa successiva nella sequenza (Q1). L'output di Q1 viene quindi sottoposto allo stesso test di accettazione. Questo processo continua finché un'alternativa non produce un risultato che supera il test, o finché tutte le alternative non sono state esaurite, momento in cui viene dichiarato un errore a livello di sistema.
L'efficacia dei blocchi di ripristino dipende dalla diversità delle alternative. I moduli primario e secondario dovrebbero essere progettati e implementati in modo indipendente, idealmente da team diversi che utilizzano algoritmi o linguaggi di programmazione diversi. Ciò riduce al minimo la possibilità che un difetto di progettazione comune (un bug) esista in tutte le alternative, il che le porterebbe tutte a fallire il test di accettazione allo stesso modo. Il test di accettazione stesso è un singolo punto di errore e deve essere più semplice e affidabile dei moduli che sta testando. Rispetto alla programmazione N-version, un'altra tecnica di tolleranza agli errori del software, i blocchi di ripristino possono essere più efficienti in quanto eseguono un solo modulo alla volta, ma introducono latenza a causa del potenziale rollback e della riesecuzione.
UNESCO Nomenclature: 1203
- Informatica
Interruzione
Incrementale
Utilizzo
Nicchia/Specializzato
Precursori
- Concetti di gestione delle eccezioni nei linguaggi di programmazione
- Meccanismi di transazione e rollback del database
- Primi lavori sulla verifica e la correttezza del programma
- Principi generali di ridondanza dall'ingegneria hardware
Applicazioni
- software critici per la sicurezza nei sistemi di segnalamento ferroviario
- sistemi di protezione dei reattori nucleari
- applicazioni aerospaziali in cui il guasto del software è catastrofico
- sistemi operativi sperimentali tolleranti agli errori
Idee e potenziali innovazioni
A causa dell'eliminazione del traffico generato dai bot, che attualmente supera i 40.000 al giorno, questo contenuto è riservato ai membri della community.
> Accedi O > Registrati L'accesso a questo contenuto, così come a tutti gli altri contenuti e strumenti riservati, è (100% gratuito).
Argomenti correlati: blocchi di ripristino, tolleranza ai guasti del software, diversità di progettazione, test di accettazione, ripristino degli errori a ritroso, checkpointing, Brian Randell, software critico per la sicurezza, moduli ridondanti, programmazione a N versioni.