Inversion de priorité

Inversion de priorité

L'inversion de priorité est un phénomène qui peut se produire en programmation concurrente. Il s'agit d'une situation dans laquelle un processus de haute priorité ne peut pas avoir accès au processeur car il est utilisé par un processus de plus faible priorité.

Sommaire

Exemples

Une inversion de priorité peut se produire lorsqu'il y a accès à une même ressource demandé par des tâches de haute et de basse priorité. Si une tâche de basse priorité utilise la ressource, une tâche de haute priorité ne pourra pas prendre la main. Par exemple, avec la séquence d'opération suivante :

  1. La tâche A (de haute priorité) est mise en attente sur un Verrou X. Elle n'a donc plus accès à la ressource processeur.
  2. La tâche B (de basse priorité) acquiert un Verrou Y.
  3. La tâche B est préemptée car la tâche A vient d'obtenir le Verrou X.
  4. La tâche A essaye d'obtenir le verrou Y ; Comme il est déjà acquis par la tâche B, la tâche A est donc mise en attente.

La tâche de haute priorité n'a donc pas accès à la ressource processeur mais une tâche de basse priorité y a accès.


Un autre exemple met en œuvre trois tâches de priorités différentes. La tâche A (de plus forte priorité) et la tâche C (de plus faible priorité) peuvent toutes les deux accéder à une ressource partagée, protégée par le mutex X. Une troisième tâche B a une priorité intermédiaire entre celles de A et de C.

  1. La tâche C s'exécute, et prend le mutex X.
  2. Un événement réveille la tâche B, qui préempte la tâche C. Cette dernière n'a pas libéré le mutex X.
  3. Un autre événement réveille la tâche A, mais celle-ci ne peut préempter à son tour la tâche B car elle est bloquée par le mutex X.

Il en résulte une inversion des priorités, la tâche B continuant de s'exécuter jusqu'à son terme, puis C, et enfin A : la tâche de plus haute priorité s'exécute en dernier ! Dans certains cas, un interblocage peut même survenir.

Pour éviter cela, certains systèmes utilisent une technique d'héritage de priorité, accordant momentanément à la tâche C la même priorité que celle de A afin de libérer la ressource au plus vite. Ainsi lorsque A est bloquée en attente du mutex X, C est autorisée à préempter B, libère le mutex X et est aussitôt préemptée par A. L'exécution se poursuit normalement avec B puis C.

Effets de l'inversion de priorité

La non gestion de l'inversion de priorité peut avoir des effets désastreux. En effet, comme la non gestion de l'inversion de priorité implique qu'une tâche de haute priorité peut ne pas s'exécuter, il est possible qu'une réaction à des situations d'urgence ne soit pas prise en compte (par exemple, un ordre d'arrêt d'urgence d'une centrale nucléaire qui serait bloqué par un autre ordre de moindre priorité).

Méthodes pour éviter l'inversion de priorité

Il n'existe pas de solution simple permettant d'éviter toutes les inversions de priorité. Il est néanmoins possible de prendre des mesures pour limiter ces risques. En particulier, il est possible de

Voir aussi


Wikimedia Foundation. 2010.

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

Игры ⚽ Поможем написать курсовую

Regardez d'autres dictionnaires:

  • Inversion De Priorité — Problèmes classiques des méthodes de synchronisation Couplage fort  Famine Interblocage  Inversion de priorité L inversion de priorité …   Wikipédia en Français

  • Inversion de priorite — Inversion de priorité Problèmes classiques des méthodes de synchronisation Couplage fort  Famine Interblocage  Inversion de priorité L inversion de priorité …   Wikipédia en Français

  • inversion de priorité — ● loc. f. ►ARCHI En cas d interblocage entre un processus de forte priorité attendant désespérément un processus de plus faible priorité, l ordonnanceur peut inverser les priorités des deux processus histoire de débloquer en douceur la situation… …   Dictionnaire d'informatique francophone

  • Priorite (informatique) — Priorité (informatique) Pour les articles homonymes, voir Priorité. La priorité est une caractéristique d une tâche informatique permettant de déterminer son accès à une ressource. Une tâche correspond à un traitement à réaliser. Une ressource… …   Wikipédia en Français

  • Priorité (informatique) — Pour les articles homonymes, voir Priorité. La priorité est une caractéristique d une tâche informatique permettant de déterminer son accès à une ressource. Une tâche correspond à un traitement à réaliser. Une ressource est un moyen permettant de …   Wikipédia en Français

  • Sémaphore à héritage de priorité — Le sémaphore à héritage de priorité est une variable utilisée en informatique destinée à éviter l inversion de priorité. Protocole de fonctionnement Soient trois tâches : Th : tâche avec une haute priorité Tm : tâche avec une… …   Wikipédia en Français

  • OSEK — OSEK/VDX OSEK est le sigle pour « Offene Systeme und deren Schnittstellen für die Elektronik im Kraftfahrzeug », en français Systèmes ouverts et interfaces correspondantes pour l’électronique des véhicules automobiles. OSEK a été créé… …   Wikipédia en Français

  • OSEK/VDX — Pour les articles homonymes, voir Osek. OSEK est le sigle pour « Offene Systeme und deren Schnittstellen für die Elektronik im Kraftfahrzeug », en français Systèmes ouverts et interfaces correspondantes pour l’électronique des véhicules …   Wikipédia en Français

  • Exclusion Mutuelle — Un Mutex (anglais : Mutual exclusion, Exclusion mutuelle) est une primitive de synchronisation utilisée en programmation informatique pour éviter que des ressources partagées d un système ne soient utilisées en même temps. Son implémentation …   Wikipédia en Français

  • Exclusion mutuelle — Un Mutex (anglais : Mutual exclusion, Exclusion mutuelle) est une primitive de synchronisation utilisée en programmation informatique pour éviter que des ressources partagées d un système ne soient utilisées en même temps. Son implémentation …   Wikipédia en Français

Share the article and excerpts

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