Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de...

25
Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação

Transcript of Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de...

Page 1: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Fabio Notare Martins

Pontifícia Universidade Católica do Rio Grande do SulPrograma de Pós-Graduação em Ciências da Computação

Page 2: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

IntroduçãoArtigo de 1975O primeiro livro sobre o assunto foi em 1965Exclusivamente para projetos de HardwareProjetos de Softwares são muito mais

complexosMaior número de estados distintos

Projetos de Hardware são realizados tolerando falhas

Todas as falhas em Softwares são falhas de projetos

Page 3: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

IntroduçãoSe todas as falhas pudessem ser evitadas ou

removidas seria suficiente para atingir a confiabilidade do sistema

A única maneira de atingir esse estado de confiabilidade é incorporar tolerância a falhas de software.

O artigo foca em técnicas de recuperação de erros e técnicas de estruturação de sistemas para facilitar a tolerância a falhas.

Page 4: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Tolerância a Falhas em SoftwaresA Tolerância a Falhas é baseada em

redundânciaDetecção de errosRecuperação de erros

Não é simples, não é replicação de programa mas sim uma redundância de projeto

Parecido como redundância de HardwareStand-by sparingSão realizadas verificações e caso falhe são

chaveados para outro componente.

Page 5: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Tolerância a Falhas em SoftwaresO número de erros não detectados em um

projeto de Software pode ser infinitoPossibilidades de vários valoresTempo de execuçãoEtc

O artigo não foca em tentar detectar o erro (sua origem) e sim tratá-lo.Aumentaria muito a complexidade

Page 6: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Tolerância a Falhas em SoftwaresPara alcançar a tolerância a falhas em

softwares através da técnica stand-by sparing existem duas características:Incorpora uma solução geral para problema de

chaveamento na utilização do componente de reposição.

Provê um método de estruturação explícita que tem o efeito de assegurar que o software extra envolvidos na detecção de erros e nos componentes de reposição não são adicionados na complexidade do sistema.

Page 7: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Bloco de RecuperaçãoUm bloco de recuperação consiste em um

bloco convencional, que é fornecido com um meio de detecção de erros (teste de aceitação) e zero ou mais blocos de reposição (alternativas adicionais).

O esquema do bloco de recuperação por stand-by sparing em software é a praticabilidade de produzir o teste de aceitação, alternativas e prover um recurso de restaurar o estado do sistema.

Page 8: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Bloco de Recuperação<recovery block> :: = ensure <acceptance test>

by<primary alternate><other alternates> else error

<primary alternate> :: = <alternate><other alternates>.:: = <empty> | <other

alternates >else by <alternate>

<alternate> :: = <statement list><acceptance test> :: = <logical expression>

Page 9: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Bloco de Recuperação

Page 10: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Bloco de Recuperação

Page 11: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Bloco de RecuperaçãoTeste de Aceitação:

garantir que a operação realizada pelo bloco de recuperação é a satisfação do programa que invocou o bloco

Page 12: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Bloco de RecuperaçãoTeste de Aceitação:

Quando é feito um teste com variaveis não-locais todas elas devem ser restauradas ao seu valor original.

No exemplo anterior tem a ordenação e um “AND” para garantir que a soma do vetor s da alternativa, seja igual a soma do vetor s original

Page 13: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Bloco de RecuperaçãoAlternativas:

A principal alternativa é a que se destina a ser utilizado normalmente para realizar a operação desejada.

As outras alternativas geralmente são menos econômicas e mais simples.

Caso alguma alternativa falhe é enviado para o log.

Page 14: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Bloco de RecuperaçãoAlternativas:

O exemplo abaixo, tem um o bloco de recuperação com alternativas que permitem atingir diferentes resultados, mas ainda aceitável embora menos desejável.

Page 15: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Bloco de RecuperaçãoRestaurando o Estado do Sistema:

Encontrar uma maneira de restaurar as variáveis utilizadas no momento que estava antes de entrar no bloco e que seja tolerável.

Criar uma cópia do sistema antes de entrar no bloco funciona mas é impraticável.

As variáveis locais não precisam ser restauradas, apenas as não locais que foram modificadas.

Criaram um controle de variáveis chamado de cache recursiva de variáveis.

Page 16: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Bloco de RecuperaçãoCache Recursiva de Variáveis:

Dividida em regiões (uma para cada bloco de recuperação).

Contém todos os valores das variáveis antes de entrar no bloco, caso falhe o bloco pode ser restaurados todas as variáveis

Serão descartados os valores antigos quandos o bloco finalizar com êxito.

Existem mecanismos para trabalhar com sistemas grandes, arrays, desempenhos, etc.

Page 17: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Recuperação do Erro entre Processos InteragindoQuando não é variáveis, como o posicionamento

de um braço de disco ou fita magnética, um cartão de leitura, impressão de uma linha, receber uma mensagem, ou a obtenção de dados em tempo real a partir de sensores externos, etc.

Essas ações são difíceis ou mesmo impossível desfazer.

Seus efeitos devem ser desfeitos em ordem para não comprometer a própria restauração do estado fornecida pelos mecanismos da cache recursiva.

Page 18: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Recuperação do Erro entre Processos InteragindoLidam com o problema como se fossem

interação entre processos. Criar vários pontos de recuperação.Com muitos pontos de recuperação pode

acontecer o efeito dominó.Efeito dominó significa o retorno sucessivo, e

em cascata, de todos os processos do sistema ao início da computação, ou próximo ao início, desfazendo grande quantidade de processamento.

Page 19: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Recuperação do Erro entre Processos InteragindoExistes duas circunstancias para acontecer o

efeito dominó:As estruturas de recuperação do bloqueio dos

vários processos são descoordenados, e não levam em conta interdependências processo causado por suas interações. (Eliminado com a técnica de conversação)

Os processos são simétricos em relação a propagação de falhas. (eliminado com a técnica de sistemas multi nível)

Page 20: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Recuperação do Erro entre Processos InteragindoConversação de Processos:

Os processos conversam entre si para criar um ponto de restauração.

Page 21: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Recuperação do Erro entre Processos Interagindo

Page 22: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Sistemas Multi NíveisChamado de Maquina VirtualO sistema é desenvolvido em camadas,

chamado de níveis.Cada nível tem suas interfaces.Com excessão do primeiro e do último nível,

todos tem duas interfaces.Nem sempre um nível precisa conhecer a

estrutura subjacente, chamado esse por uma interface opaca.

Podem ocorrer erros acimas das interfaces ou abaixo das interfaces das máquinas virtuais.

Page 23: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Sistemas Multi Níveis

Page 24: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Sistemas Multi NíveisTolerância a Falhas na Interface da Máquina Virtual

A diferença entre os interpretes do modo convencional para o modo com tolerância a falhas são: Processo de Interpretação: a interface garante que antes de

qualquer alteração feita para o estado do processo de interpretação ou valores de quaisquer variáveis, será feito um teste para determinar se alguma informação deve ser guardada primeiro.

Processo Inverso: será chamada quando um processo estiver realizando backup.

Procedimento de Aceitação: será chamado quando um bloco alternativo for aprovada no teste de aceitação.

Page 25: Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.

Sistemas Multi Níveis