AccueilđŸ‡«đŸ‡·Chercher

Algorithme de Ricart et Agrawala

L’Algorithme Ricart-Agrawala est un algorithme d'exclusion mutuelle sur un systĂšme distribuĂ©. Cet algorithme est une extension et une optimisation de l'algorithme de Lamport, en supprimant la nĂ©cessitĂ© de communiquer un message de libĂ©ration. Il a Ă©tĂ© dĂ©veloppĂ© par Glenn Ricart et Ashok Agrawala. Dans cet algorithme, les requĂȘtes d'entrĂ©e sont totalement ordonnĂ©es grĂące Ă  l'utilisation de l'Horloge de Lamport.

Algorithme

Il a pour but de diminuer le nombre de messages échangés par entrée en section critique et élimine les messages de type libération.

Deux types de message sont utilisés ici[1]:

  • les messages REQUETE qui sont envoyĂ©s lorsqu'un site veut entrer en section critique
  • les messages REPONSE qui sont envoyĂ©s soit immĂ©diatement Ă  la rĂ©ception d'un message de type REQUETE, soit ultĂ©rieurement Ă  la sortie de section critique du site.

Source

/* invariant : Pi :EC==exclusion )8p; Pp:EC==candidat: Pi :drLoc < Pp:drLoc */
process P(i:0..N-1){
    type État = {hors,candidat,exclusion};
    EtatEC = hors;
    Datehloc = newDate(i,1);
    DatedrLoc;
    Set<int>Att=newEnumSet<int>();Set<int>D=EnumSet.range(0,N-1).remove(i);
    while (true) {
        select {
            when (EC == hors)) // hors -> candidat
            EC = candidat; drLoc=hloc.Top() ;
            for(intp:D) send Rq(i,drLoc) to Pp ;
            []when (EC == exclusion))                   // exclusion ! hors
            for(intp:Att) send Perm(i) to Pp ; Att.clear() ; EC=hors;
            []when (EC == candidat) ) receive Perm(p)   // candidat ? -> exclusion
            D.remove(p);
            if(D.empty())
                EC = exclusion;
            []receive Rq(p,dr);
            hloc.Recaler(dr) ;
            if(EC!=hors&& Date.pred(drloc,dr))Att.add(p);
                elsesend Perm(i) to Pp ;
        } // select
    }     // while
}

Lorsqu'un processus (ou un site) Pi dĂ©sire entrer en section critique, il envoie un message du type Requete. Lorsqu'un processus Pj reçoit ce message, soit il accepte et renvoie un message de type Response, ou diffĂ©rer sa rĂ©ponse. S’il ne dĂ©sire pas entrer en section critique, il envoie un message Response.

Un processus entre en section critique seulement s'il a obtenu les permissions de tous les autres (Ă  l'aide des requĂȘtes Response).

Performance

  • le nombre total de messages est , N Ă©tant le nombre de sites que comprend ce systĂšme.
  • Un seul message suffit pour la synchronisation.

Variantes de l'algorithme

L'algorithme Carvalho et Roucairol : l'accord donnĂ© par un processus reste valable tant qu'il n'a pas fait lui-mĂȘme une demande d'entrĂ©e en section critique.

Notes et références

  1. Jean-Marie Rifflet, Algorithme de Ricart/Agrawala

Bibliographie

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.