AccueilđŸ‡«đŸ‡·Chercher

Algorithme du banquier

L'algorithme du banquier est un algorithme qui a été mis au point par Edsger Dijkstra en 1965[1] pour éviter les problÚmes d'interblocage et gérer l'allocation des ressources.

Cet algorithme est nommĂ© ainsi car il reproduit le modĂšle du prĂȘt Ă  des clients par un banquier.

ÉnoncĂ© du problĂšme

On considÚre un systÚme disposant de types de ressource, dont la quantité totale est connue, constante et finie. Sur ce systÚme, un nombre fini processus. L'état initial du systÚme est caractérisé par la quantité de ressource de chaque type que consomme chacun des processus.

Lorsqu'on alloue Ă  un processus l'ensemble des ressources dont il a besoin, le processus se termine en temps fini et libĂšre les ressources qu'il utilisait. Ceci correspond Ă  un changement d'Ă©tat.

Le but du problÚme est de déterminer s'il existe au moins une séquence d'états permettant de terminer l'ensemble des processus. Dans ce cas, l'état initial est dit sûr.

Algorithme

L'algorithme du banquier part du principe que si l'on alloue les ressources à un processus et que celui-ci se termine, on se retrouve dans une situation avec plus de ressources disponible. En conséquence, on peut choisir de maniÚre gloutonne un processus parmi ceux en cours d'exécution et dont les besoins sont compatibles avec les ressources disponibles.

Si l'on parvient à exécuter tous les processus, on a mis en évidence que l'état initial était sûr.

Si par contre, l'algorithme ne parvient plus à progresser alors certains processus sont toujours en cours d'exécution, l'état initial n'est pas sûr et l'algorithme s'interrompt car l'état initial n'est pas sûr.

ParamĂštres :

  • le nombre de ressources.
  • le nombre de processus.
  • le vecteur de taille tel que indique la quantitĂ© de ressource disponible.
  • la matrice de taille telle que indique la quantitĂ© de ressource initialement allouĂ©e au processus .
  • la matrice de taille telle que indique la quantitĂ© de ressource requises par le processus .

Algorithme :

  • Soit le vecteur de taille qui indique la quantitĂ© de ressource de chaque type encore disponible: .
  • Soit l'ensemble des processus en cours de lancement: .
  • Tant que :
    • Chercher tel que .
    • Si n'existe pas :
      • Retourner l'Ă©tat initial n'est pas sĂ»r.
    • Sinon :
      • Allouer au processus les ressources qu'il demande et attendre qu'il se termine
      • Terminer le processus :
      • LibĂ©ration des ressources consommĂ©es par :
  • Retourner l'Ă©tat initial est sĂ»r.

Exemple

On considĂšre dans cet exemple 5 processus actifs et mettant en jeu 4 ressources .

État Ă  l'instant t d'un ordinateur : ressources actuellement attribuĂ©es et ressources demandĂ©es, pour cinq processus (P1 Ă  P5) et quatre ressources (A Ă  D)
Processus Ressources attribuées Ressources supplémentaires demandées
A B C D A B C D
P1 3 0 1 1 1 1 0 0
P2 0 1 0 0 0 1 1 2
P3 1 1 1 0 3 1 0 0
P4 1 1 0 1 0 0 1 0
P5 0 0 0 0 2 1 1 0
Total 5 3 2 2

La partie gauche du tableau correspond à l'état initial du systÚme (). Il indique la quantité de ressource déjà allouée à chaque processus pour chacun des types de ressource. La somme de chaque colonne correspond donc à la quantité de ressources consommées d'un type donnée (on appelle ce vecteur intermédiaire ).

La partie droite du tableau correspond aux ressources supplémentaires demandées par chaque processus pour chaque type de ressource (). Pour faire le lien avec les notations de la section précédente : .

Enfin, on suppose que la quantité restante pour chaque ressource correspond à .

L'algorithme du banquier revient Ă  :

  1. Trouver dans le tableau de droite un processus dont les ressources demandées sont toutes inférieures ou égales à celles de disponibles (). Si n'existe pas, il y a interblocage.
  2. Allouer à les ressources demandées et attendre se termine.
  3. Supprimer la ligne associée à et mettre à jour .
  4. Répéter les étapes précédentes jusqu'à ce que tous les processus soient terminés. Si on y parvient, l'état initial était donc sûr. Sinon il y a eu un interblocage et l'état initial n'était pas sûr.

Dans cet exemple, l'état actuel est sûr car :

  1. À la premiĂšre itĂ©ration, on choisit forcĂ©ment les ressources demandĂ©es (car ). On attend que s'achĂšve. Une fois terminĂ©, passe Ă  .
  2. À l'itĂ©ration suivante, on peut choisir arbitrairement parmi (car ) ou (car ). Choisissons . Une fois qu'il se termine, passe Ă  .
  3. À l'itĂ©ration suivante, est le seul processus que l'on peut choisir. Une fois qu'il se termine, passe Ă  .
  4. À l'itĂ©ration suivante, on peut choisir arbitrairement parmi ou . Choisissons . Une fois qu'il se termine, passe Ă  .
  5. À l'itĂ©ration suivante, on choisit . Comme tous les processus ont Ă©tĂ© exĂ©cutĂ©s avec succĂšs, l'Ă©tat initial Ă©tait un Ă©tat sĂ»r.

Limitations

D'un point de vue pratique, l'algorithme du banquier n'est pas réaliste, car il suppose que l'on connaisse au préalable les ressources dont chaque processus à besoin pour s'achever. Il suppose que ces quantités sont fixes alors qu'en pratique, les besoins d'un processus évoluent dynamiquement.

Voir aussi

Notes et références

  1. Edsger Wybe Dijkstra, Selected writings on computing : a personal perspective, Springer-Verlag, (ISBN 0-387-90652-5, 978-0-387-90652-2 et 3-540-90652-5, OCLC 8533598, lire en ligne)
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.