Algorithme de Ricart et Agrawala

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 messages 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.

Sommaire

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 type de messages 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 Etat = {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 spoit il accepte et renvoi 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 exclusions seulement s'il a obtenu les permissions de tous les autres(à l'aide des requêtes Response);

Performance

  • le nombre totale de message est 2(N − 1). 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. algorithme de Ricart/Agrawala, jean-Marie Rifflet

Bibliographie


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Algorithme de Ricart et Agrawala de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • Algorithme Carvalho et Roucairol — L Algorithme Carvalho et Roucairol est un algorithme d exclusion mutuelle sur un système distribué. Il est une amélioration possible de l algorithme de Ricart et Agrawala[1]. Sommaire 1 Principe de l’algorithme 2 Source[2] …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”