Inversion de priorité
Un article de Wikipédia, l'encyclopédie libre.
|
|
Interblocage - Inversion de priorité |
Cet article est une ébauche à compléter concernant l'informatique, vous pouvez partager vos connaissances en le modifiant. |
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 |
[modifier] Exemples
Une inversion de priorité peut se produire lorsqu'il y a accès à une même ressource 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 :
- 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.
- La tâche B (de base priorité) acquière un Verrou Y.
- La tâche B est préemptée car la tâche A vient d'obtenir le Verrou X.
- 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.
[modifier] 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 (par exemple, un ordre d'arrêt d'urgence d'une centrale nucléaire qui serait bloqué par un autre de moindre priorité).
[modifier] Méthodes pour éviter l'inversion de priorité
Il n'existe pas de solution simple permettant d'éviter toutes les inversion de priorité. Il est néanmoins possible de prendre des mesures pour limiter ces risques. En particulier, il est possible de
- N'autoriser l'accès à des sections critiques qu'à des thread de même priorité.
- Utiliser des sémaphores adaptés, par exemple des sémaphores à héritage de priorité ou des sémaphores à priorité plafond.
[modifier] Voir aussi
Portail de l'informatique – Accédez aux articles de Wikipédia concernant l’informatique. |