UFMG - Pós-graduação em Ciência da Computação - Programação Paralela

A seguir: Carvalho e Roucairol (1983) Acima: Aula 15 - Exclusão Anterior: Algoritmo de Ricart e


Carvalho e Roucairol (1983) - 1

Carvalho e Roucairol (1983) - 1

Genial[Carvalho and Roucairol, 1983] evolução do algoritmo de Ricart e Agrawala, que tira proveito da validade de uma autorização para ``comer'' mais de uma vez sem enviar novas requisições.

CONST i = /* this node unique number */
VAR OSN, /* Our Sequence Number */
    HSN  /* Highest Sequence Number */: CARDINAL;
    A, Deferred: ARRAY [1..n] OF BOOLEAN;
    Eating, Hungry: BOOLEAN;

PROCEDURE Request();
VAR j: CARDINAL;
BEGIN
  lock(mutex);
    Hungry := TRUE; OSN := HSN + 1;
    FOR j := 1 TO n DO
      IF (j <> i) AND (NOT A[j]) THEN
        send(request(OSN, i),j);
    WHILE NOT (A[j] = TRUE for all j <> i) DO Sleep(B,mutex);
    Hungry := FALSE; Eating := TRUE;
  unlock(mutex);
END Request;



 

Osvaldo Carvalho