Problema colocado no fim da terceira aula: Queremos resolver o problema do acorrdo distribuido. Este problema pode ser enunciado de modo informal da seguinte maneira: Cada processo p possui um valor inicial v(p). Pretende-se arranjar uma forma de que todos os processos acordem num unico valor. Para evitar a solucao trivial (de escolherem sempre o mesmo valor), o valor escolhido deve ser o valor inicial de um dos processos (em particular, se todos os processos tiverem X como valor inicial, o unico resultado possivel sera X). A propriedade de acrodo pode ser escrita, na sua versao uniforme: Se um processo p decide o valor V todos os processos correctos tambem decidem V. Nota 1: cada processo so pode decidir uma vez (isto e, nao vale voltar a traz e mudar de opiniao) Nota 2: os processos que falham podem nunca chegar a decidir Pretende-se que tentem resolver o problema: - Primeiro recorrendo a um detector de falhas perfeito. - Depois sem recorrer a um detector de falhas perfeito mas, possivelmente, acrescentando algumas restricoes ao sistema (por exemplo, apenas uma minoria dos processos pode falhar, e/ou outras). Algumas dicas: Um algorimo do genero: quando Propoe (v): para todo o p, envia ponto-a-ponto (p, v); espera valores de TODOS a-decidir = min (valores recebidos); decide (a-decidir); Nao funciona, pois nao e tolerante a faltas. Se um falha, pode nunca chegar a enviar o seu valor. Luis