Sistemas Distribuídos - CI721

Jéfer Benedett Dörr
Última atualização - Mon Apr 11 12:38:05 2011

Tarefa 3

Cada nodo mantém localmente o vetor State[0..N-1], e atualiza as entradas correspondentes ao testar.

Tarefa3

---------RELATÓRIO--------------

Na tarefa 3 foi adicionado um vetor local, seguindo a seguinte convenção: -1 se o estado do nodo i é desconhecido; 0 se o nodo i é sem-falha; 1 se o nodo i é falho. Para a parte visual do log o estado falho, 1 foi representado por um grande X e o estado desconhecido -1 representado por um * (asterisco). O vetor state foi criado de forma dinâmica e para isto necessário alocar espaço para os eu tamanho:

nodo[i].state = (int*) malloc (sizeof (int) *n);.

Para evitar leitura de algum lixo, foi criado um laço para completar o vetor com o estado desconhecido. Foi tomado o cuidado de não preencher sua própria posição no vetor pois um nodo conhece seu próprio estado:

for (j=0; j < n; j++) // laco para completar o vetor com estado indeterminado

if (i==j) nodo[i].state[j] = 0; // seu proprio estado

else nodo[i].state[j] = -1; // estado indeterminado

Condição para escrever no vetor local o status 0 (zero) que indicado nodo sem falha:

do {

prox = (prox+1)%n;

if (status (nodo[prox].id)==0)

nodo[token].state[prox] = 0; // recebendo status de sem falha

.

.

.

} while (status (nodo[prox].id) !=0);

Tarefa3 em txt: Tarefa3

LOG: Como podemos observar no log, o programa simulou corretamente e representou os vetores. log