O documento discute auto-estabilização em sistemas distribuídos. Apresenta as definições iniciais de Dijkstra sobre auto-estabilização e estado legítimo. Descreve um algoritmo de Dijkstra para exclusão mútua auto-estabilizável baseado em anel de token com um único token circulando entre os nós.
Categorias de Escalonamento e Objetivos do Algorítmo Escalonador
Auto-estabilização em sistemas distribuídos
1. UNIVERSIDADE FEDERAL DO RIO GRANDE DO SULUNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL
Auto-estabilização em SistemasAuto-estabilização em Sistemas
DistribuídosDistribuídos
CMP139 – Tolerância a Falhas em Sistemas Distribuídos
Profa
Taisy Silva Weber
Júlio César Silvello (silvello@inf.ufrgs.br)
Dezembro/2004
2. Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
1. Introdução
2. Definições
3. Algoritmo Exclusão Mútua
4. Metodologias para Projeto de Sistemas auto-estabilizáveis
5. Conclusões
RoteiroRoteiro
3. A noção de auto-estabilização foi introduzida por Dijkstra em
1973/1974
A propriedade de auto-estabilização modela a habilidade de um
sistema se recuperar automaticamente de falhas transientes
Falhas Transientes: corrupção do estado interno de um nó, mas não de seu
comportamento
Definição original de Dijkstra para essa propriedade:
Independentemente do estado inicial, é garantido que o sistema chegue em
um estado legítimo em um número finito de passos.
Um sistema que não é auto-estabilizável, pode permanecer em estado
ilegítimo para sempre
1. Introdução1. Introdução
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
3/163/16
4. Um sistema auto-estabilizável tem duas características úteis:
Não é necessária inicialização do estado global do sistema distribuído, o que
poderia ser uma tarefa custosa
• Inicialização de estado de processo após recuperação
Ele pode se recuperar de falhas transientes
• Não é necessária nenhuma informação sobre as falhas
Violação temporária da especificação do sistema até que o sistema
estabilize
1. Introdução1. Introdução
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
4/164/16
5. Exclusão mútua (1 privilégio)
Eleição de líder
L-exclusion (L privilégios)
Topologias dinâmicas (reconfiguração de topologia)
Protocolos de comunicação (tratamento de perda de mensagens)
Sincronização de relógios
1. Introdução1. Introdução
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
5/165/16
Aplicações:
6. Privilégio é a habilidade/possibilidade de uma máquina para
mudar seu estado corrente (movimento)
Estado legítimo respeita as propriedades:
P1: deve haver ao menos um privilégio no sistema (sem deadlocks)
P2: cada movimento de um estado legítimo deve colocar o sistema em um
estado legítimo (fechamento)
P3: durante uma execução infinita, cada máquina pode gozar do privilégio
infinitas vezes (sem starvation)
P4: para qualquer par de estados legítimos, deve haver uma seqüência de
movimentos que muda de um estado legítimo para o outro (alcançabilidade)
2. Definições2. Definições
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
6/166/16
A. Estado Legítimo (Dijkstra)
7. Privilégio é a habilidade/possibilidade de uma máquina para
mudar seu estado corrente (movimento)
Estado legítimo respeita as propriedades:
P1: deve haver ao menos um privilégio no sistema (sem deadlocks)
P2: cada movimento de um estado legítimo deve colocar o sistema em um
estado legítimo (fechamento)
P3: durante uma execução infinita, cada máquina pode gozar do privilégio
infinitas vezes (sem starvation)
P4: dados quaisquer dois estados legítimos, deve haver uma seqüência de
movimentos que muda de um estado legítimo para o outro (alcançabilidade)
2. Definições2. Definições
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
6/166/16
A. Estado Legítimo (Dijkstra)
8. 2. Definições2. Definições
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
7/167/16
B. Auto-estabilização (Dijkstra)
A definição foi concebida no contexto da exclusão mútua e é
restritiva desnecessariamente
Produzido um algoritmo auto-estabilizável para exclusão mútua via
token ring com somente um token
Definia estado legítimo como possuindo somente um privilégio
A necessidade de sempre haver um privilégio no sistema exige que o sistema
seja sem terminação
9. 2. Definições2. Definições
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
8/168/16
C. Auto-estabilização
Um sistema S é auto-estabilizável em relação a um predicado P,
sobre seu conjunto de estados globais, onde P tem por objetivo
identificar sua execução correta, se S satisfaz as seguintes
propriedades:
(1) Fechamento: P é fechado na execução de S
(2) Convergência: Iniciando em um estado global arbitrário, é garantido que
S alcance um estado que satisfaça P em um número finito de transições de
estado
Estados que satisfazem P são chamados de legítimos
10. 2. Definições2. Definições
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
9/169/16
D. Estabilização
Ao invés de se considerar recuperação de um estado arbitrário, considera-se
recuperação de um conjunto restrito de estados (Q) que podem resultar de um
conjunto particular de falhas
Um sistema S é estabilizável em relação aos predicados P e Q, se S satisfaz as
seguintes propriedades:
(1) Fechamento: P é fechado na execução de S
(2) Convergência: Iniciando em um estado que satisfaça Q, é garantido que S
alcance um estado que satisfaça P em um número finito de transições de estado
Q estabiliza em P
Na auto-estabilização, tem-se que TRUE estabiliza em P
11. 3. Algoritmo da Exclusão Mútua de Dijkstra3. Algoritmo da Exclusão Mútua de Dijkstra
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
10/1610/16
Anel com um único token que rotaciona
N processos com K estados (K>N) chamados Mi, sendo i=0..N-1
M0 é distinto dos demais, que são iguais entre si
> ≠ = < ≤ ∀ <− −1 1, : : 1|i i i iM M se M M N i i
1 0 0 0se , mod )1 ( :− = + =N M M K M M
12. 3. Algoritmo da Exclusão Mútua de Dijkstra3. Algoritmo da Exclusão Mútua de Dijkstra
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
11/1611/16
> ≠ = < ≤ ∀ <− −1 1, : : 1|i i i iM M se M M N i i
1 0 0 0se , mod )1 ( :− = + =N M M K M M
M0
M1
M2
M3
M4
N=5
K=6
13. 3. Algoritmo da Exclusão Mútua de Dijkstra3. Algoritmo da Exclusão Mútua de Dijkstra
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
11/1611/16
> ≠ = < ≤ ∀ <− −1 1, : : 1|i i i iM M se M M N i i
1 0 0 0se , mod )1 ( :− = + =N M M K M M
M0
M1
M2
M3
M4
N=5
K=6
L=1
L=5
L=3
L=1
L=2
14. 3. Algoritmo da Exclusão Mútua de Dijkstra3. Algoritmo da Exclusão Mútua de Dijkstra
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
11/1611/16
> ≠ = < ≤ ∀ <− −1 1, : : 1|i i i iM M se M M N i i
1 0 0 0se , mod )1 ( :− = + =N M M K M M
M0
M1
M2
M3
M4
N=5
K=6
L=1
L=5
L=35
L=1
L=21
15. 3. Algoritmo da Exclusão Mútua de Dijkstra3. Algoritmo da Exclusão Mútua de Dijkstra
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
11/1611/16
> ≠ = < ≤ ∀ <− −1 1, : : 1|i i i iM M se M M N i i
1 0 0 0se , mod )1 ( :− = + =N M M K M M
M0
M1
M2
M3
M4
N=5
K=6
L=1
L=51
L=5
L=1
L=1
16. 3. Algoritmo da Exclusão Mútua de Dijkstra3. Algoritmo da Exclusão Mútua de Dijkstra
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
11/1611/16
> ≠ = < ≤ ∀ <− −1 1, : : 1|i i i iM M se M M N i i
1 0 0 0se , mod )1 ( :− = + =N M M K M M
M0
M1
M2
M3
M4
N=5
K=6
L=12
L=1
L=51
L=1
L=1
17. 3. Algoritmo da Exclusão Mútua de Dijkstra3. Algoritmo da Exclusão Mútua de Dijkstra
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
11/1611/16
> ≠ = < ≤ ∀ <− −1 1, : : 1|i i i iM M se M M N i i
1 0 0 0se , mod )1 ( :− = + =N M M K M M
M0
M1
M2
M3
M4
N=5
K=6
L=2
L=12
L=1
L=1
L=1
Estável
18. 3. Algoritmo da Exclusão Mútua de Dijkstra3. Algoritmo da Exclusão Mútua de Dijkstra
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
11/1611/16
> ≠ = < ≤ ∀ <− −1 1, : : 1|i i i iM M se M M N i i
1 0 0 0se , mod )1 ( :− = + =N M M K M M
M0
M1
M2
M3
M4
N=5
K=6
L=2
L=2
L=12
L=1
L=1
Estável
19. 3. Algoritmo da Exclusão Mútua de Dijkstra3. Algoritmo da Exclusão Mútua de Dijkstra
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
11/1611/16
> ≠ = < ≤ ∀ <− −1 1, : : 1|i i i iM M se M M N i i
1 0 0 0se , mod )1 ( :− = + =N M M K M M
M0
M1
M2
M3
M4
N=5
K=6
L=2
L=2
L=2
L=12
L=1
Estável
20. 3. Algoritmo da Exclusão Mútua de Dijkstra3. Algoritmo da Exclusão Mútua de Dijkstra
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
11/1611/16
> ≠ = < ≤ ∀ <− −1 1, : : 1|i i i iM M se M M N i i
1 0 0 0se , mod )1 ( :− = + =N M M K M M
M0
M1
M2
M3
M4
N=5
K=6
L=2
L=2
L=2
L=2
L=12
Estável
21. 3. Algoritmo da Exclusão Mútua de Dijkstra3. Algoritmo da Exclusão Mútua de Dijkstra
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
11/1611/16
> ≠ = < ≤ ∀ <− −1 1, : : 1|i i i iM M se M M N i i
1 0 0 0se , mod )1 ( :− = + =N M M K M M
M0
M1
M2
M4
N=5
K=6
L=2
L=2
L=2
L=2
22. 3. Algoritmo da Exclusão Mútua de Dijkstra3. Algoritmo da Exclusão Mútua de Dijkstra
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
11/1611/16
> ≠ = < ≤ ∀ <− −1 1, : : 1|i i i iM M se M M N i i
1 0 0 0se , mod )1 ( :− = + =N M M K M M
M0
M1
M2
M3
M4
N=5
K=6
L=23
L=2
L=2
L=5
L=2
23. 3. Algoritmo da Exclusão Mútua de Dijkstra3. Algoritmo da Exclusão Mútua de Dijkstra
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
11/1611/16
> ≠ = < ≤ ∀ <− −1 1, : : 1|i i i iM M se M M N i i
1 0 0 0se , mod )1 ( :− = + =N M M K M M
M0
M1
M2
M3
M4
N=5
K=6
L=3
L=23
L=2
L=52
L=25
24. 3. Algoritmo da Exclusão Mútua de Dijkstra3. Algoritmo da Exclusão Mútua de Dijkstra
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
11/1611/16
> ≠ = < ≤ ∀ <− −1 1, : : 1|i i i iM M se M M N i i
1 0 0 0se , mod )1 ( :− = + =N M M K M M
M0
M1
M2
M3
M4
N=5
K=6
L=3
L=3
L=2
L=2
L=52
25. 3. Algoritmo da Exclusão Mútua de Dijkstra3. Algoritmo da Exclusão Mútua de Dijkstra
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
11/1611/16
> ≠ = < ≤ ∀ <− −1 1, : : 1|i i i iM M se M M N i i
1 0 0 0se , mod )1 ( :− = + =N M M K M M
M0
M1
M2
M3
M4
N=5
K=6
L=3
L=3
L=23
L=2
L=2
Estável
26. 3. Algoritmo da Exclusão Mútua de Dijkstra3. Algoritmo da Exclusão Mútua de Dijkstra
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
11/1611/16
> ≠ = < ≤ ∀ <− −1 1, : : 1|i i i iM M se M M N i i
1 0 0 0se , mod )1 ( :− = + =N M M K M M
M0
M1
M2
M3
M4
N=5
K=6
L=3
L=3
L=3
L=23
L=2
Estável
27. 3. Algoritmo da Exclusão Mútua de Dijkstra3. Algoritmo da Exclusão Mútua de Dijkstra
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
11/1611/16
> ≠ = < ≤ ∀ <− −1 1, : : 1|i i i iM M se M M N i i
1 0 0 0se , mod )1 ( :− = + =N M M K M M
M0
M1
M2
M3
M4
N=5
K=6
L=3
L=3
L=3
L=3
L=23
Estável
28. Para projetar sistemas SS mais complexos:
Layering
Modularization
4. Metodologias para Projeto de Sistemas SS4. Metodologias para Projeto de Sistemas SS
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
12/1612/16
29. Consiste em dividir o programa em componentes distintos e auto-
estabilizáveis independentemente
Transitividade: Se Q estabiliza em P e P estabiliza em R, então Q
estabiliza em R
S1: Q estabiliza em P
S2: P estabiliza em R
S1 combinado com S2, onde S2 lê variáveis de S1, tem-se que Q
estabiliza em R
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
13/1613/16
4. Metodologias para Projeto de Sistemas SS4. Metodologias para Projeto de Sistemas SS
30. Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
14/1614/16
4. Metodologias para Projeto de Sistemas SS4. Metodologias para Projeto de Sistemas SS
A
B
A
B
A
B
A
B
A
B
31. Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
14/1614/16
4. Metodologias para Projeto de Sistemas SS4. Metodologias para Projeto de Sistemas SS
A
B
A
B
A
B
A
B
A
B
32. Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
14/1614/16
4. Metodologias para Projeto de Sistemas SS4. Metodologias para Projeto de Sistemas SS
A
B
A
B
A
B
A
B
A
B
33. Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
14/1614/16
4. Metodologias para Projeto de Sistemas SS4. Metodologias para Projeto de Sistemas SS
A
B
A
B
A
B
A
B
A
B
34. Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
14/1614/16
4. Metodologias para Projeto de Sistemas SS4. Metodologias para Projeto de Sistemas SS
A
B
A
B
A
B
A
B
A
B
Solução baseada em detectores e corretores que
bloqueiam o envio de mensagens
35. Tolerância a Falhas passa a ser uma parte implícita e integral do
projeto do sistema
Apesar de auto-estabilização ser uma propriedade desejada, é
necessário conhecer suas restrições
Auto-estabilização deve ser usada como uma técnica complementar
de tolerância a falhas
Nem todos os problemas possuem uma solução auto-estabilizável
Auto-estabilização proporciana uma solução formal e unificada
para o tratamento de falhas transientes, independentemente de sua
origem, duração e abrangência
5. Conclusões5. Conclusões
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos
15/1615/16
36. [1] Schneider, Marco (1993) “Self-Stabilization”, In: ACM Computing
Surveys, Volume 25, no. 1, p. 45-67
[2] Leal, William; Arora, Anish (2004) “Scalable Self-Stabilization via
Composition”, In: IEEE, Proceedings of the 24th International Conference
on Distributed Computing Systems (ICDS’04), March 24 - 26, 2004
Hachioji, Tokyo, Japan. pp. 12-21
[3] Dijkstra, E. W. (1974) “Self-stabilizing systems in spite of distributed
control”, Commun. ACM 17, pp 643-644
ReferênciasReferências
Auto-estabilização em Sistemas DistribuídosAuto-estabilização em Sistemas Distribuídos