Tolerância a Falhas
Carlos Oberdan Rolim
Ciência da Computação
Conteúdo
Conceitos básicos de segurança de
funcionamento (dependabilidade).
Aplicações de tolerância a falhas.
Técnicas para incremento de confiabilidade e
disponibilidade.
Identificação e seleção de técnicas de projeto
tolerante a falhas.
Tolerância a falhas em sistemas distribuídos e
arquiteturas paralelas.
Medidas e ferramentas para avaliação e
simulação de sistemas tolerantes
a falhas.
Arquiteturas de sistemas tolerantes a falhas.
Bibliografia
Pradhan, D. K. “Fault-Tolerant System Design”. Englewood
Cliffs:Prentice Hall, 1996.
SIEWIOREK and SWARZ. “Reliable Computer Systems:
Design and Evaluation”. Second Edition. Digital Press, 1992.
JALOTE, P. “Fault Tolerance in Distribuited Systems”.
Prentice-Hall. Englewood Cliffs, New Jersey, 1994.
ANDERSON, T and LEE. P.A. *Fault Tolerance - Principles
and Practice*. Second Edition. Springer-Verlag, 1990.
Mullender, S. “Distributed Systems”. New York: AddisonWesley, 1993.
Introdução
Uso do computador diariamente em diversas atividades
Sistemas robustos em relação a falhas eram preocupação
exclusiva de projetistas de sistemas críticos
Falhas são inevitáveis, mas as conseqüências das falhas,
ou seja o colapso do sistema, a interrupção no fornecimento
do serviço e a perda de dados, podem ser evitadas pelo
uso adequado de técnicas viáveis e de fácil compreensão
Para desenvolvedores de software, projetistas de hardware e
gerentes de rede o domínio das técnicas de tolerância a
falhas torna essencial na seleção de tecnologias, na
especificação de sistemas e na incorporação de novas
funcionalidades aos seus projetos
Introdução
Problemas com sistemas de computação
Necessidade de confiabilidade e disponibilidade
Complexidade dos projetos  necessidade não somente de hardwares
confiáveis mas também de softwares
Desafios:
Como evitar, detectar e contornar bugs no projeto de hardware e
software?
Como gerenciar a altíssima complexidade dos sistemas atuais de
computação construídos com dezenas de chips de milhões de
transistores e com software de centenas de milhares de linhas de
código?
Como explorar paralelismo para aumentar o desempenho sem
comprometer a qualidade dos resultados mesmo em caso de falha
de um ou mais componentes do sistema?
Introdução
Desafios:
Como aproveitar novas tecnologias mais rápidas, baratas e eficientes
(mas ainda não totalmente provadas e testadas) sem saber ainda seu
comportamento em situações inesperadas sob falha ou sobrecarga?
Como aproveitar, para aplicações críticas e para operação em tempo
real, o modelo de sistemas distribuídos construídos sobre plataformas
não confiáveis de redes, contornando os problemas de perdas de
mensagens, particionamento de rede e intrusão de hackers?
Como desenvolver computadores móveis e sistemas embarcados,
garantindo confiabilidade e segurança nesses dispositivos, e
assegurando simultaneamente baixo consumo de potência, sem recorrer
as técnicas usuais de replicação de componentes que aumentam peso e
volume?
Como conciliar alta confiabilidade e alta disponibilidade com as
crescentes demandas por alto desempenho?
Problemas com sistemas de computação
Conceitos não consolidados
Painéis e discussões a respeito de nomenclatura comum
para a área
Conceitos e Termologia
Falha (fault): Causa Física ou algorítmica do erro;
Erro: O sistema está em estado errôneo, se o
processamento posterior a este estado levar a um defeito;
Defeito (failure): Desvio da especificação; não podem ser
tolerados, mas deve ser evitado que o sistema apresente
defeito
Interessante observar que uma falha não necessariamente
leva a um erro (porção da memória pode nunca ser usada)
e um erro não necessariamente conduz a um defeito (a
informação de vôo lotado poderia eventualmente ser obtida a
partir de outros dados redundantes da estrutura)
Conceitos e Termologia
Download

Tolerância a Falhas