Algorithme de l'autruche
En informatique, l'algorithme de l'autruche est une stratĂ©gie consistant Ă ignorer les problĂšmes potentiels en partant du principe qu'ils sont extrĂȘmement rares. Il tire son nom de l'âŁeffet autruche qui est dĂ©fini comme « se mettre la tĂȘte dans le sable et prĂ©tendre qu'il n'y a pas de problĂšme »[1]. Il est utilisĂ© lorsqu'il est plus rentable de laisser le problĂšme survenir que de tenter de le prĂ©venir.
Utilisation pour les interblocages
Cette approche peut ĂȘtre utilisĂ©e pour traiter les blocages dans la programmation concurrente s'ils sont considĂ©rĂ©s comme trĂšs rares et que le coĂ»t de dĂ©tection ou de prĂ©vention est Ă©levĂ©. Par exemple, si chaque PC se bloque une fois tous les 10 ans, le redĂ©marrage peut ĂȘtre moins dĂ©rangeant que les restrictions nĂ©cessaires pour l'empĂȘcher[2].
Un ensemble de processus est interbloquĂ© si chaque processus de l'ensemble attend un Ă©vĂ©nement que seul un autre processus de l'ensemble peut provoquer. Habituellement, l'Ă©vĂ©nement est la libĂ©ration d'une ressource actuellement dĂ©tenue et aucun des processus ne peut s'exĂ©cuter, libĂ©rer des ressources et ĂȘtre rĂ©veillĂ©[3].
L'algorithme de l'autruche prétend qu'il n'y a pas de problÚme et est raisonnable à utiliser si les blocages se produisent trÚs rarement et que le coût de leur prévention serait élevé. Les systÚmes d'exploitation Unix et Microsoft Windows adoptent cette approche[3].
Bien que l'utilisation de l'algorithme de l'autruche soit l'une des méthodes de traitement des Interblocages, d'autres méthodes efficaces existent telles que l'évitement dynamique, l'algorithme du banquier, la détection et la récupération, et la prévention[3].
Compromis
Bien qu'efficace, l'utilisation de l'algorithme d'autruche remplace l'exactitude par la commoditĂ©. Pourtant, comme l'algorithme traite directement les cas extrĂȘmes, ce n'est pas un gros compromis. En fait, la mĂ©thode la plus simple et la plus utilisĂ©e pour rĂ©cupĂ©rer d'un blocage est un redĂ©marrage.
Certains algorithmes avec de mauvaises performances dans le pire des cas sont couramment utilisĂ©s, car ils ne prĂ©sentent de mauvaises performances que sur des cas artificiels qui ne se produisent pas dans la pratique. Des exemples typiques sont l'âŁalgorithme du simplexe et l'algorithme d'infĂ©rence de type pour le standard ML. Des problĂšmes tels que le dĂ©passement d'entier dans les langages de programmation avec des entiers Ă largeur fixe sont Ă©galement frĂ©quemment ignorĂ©s, car ils ne surviennent que dans des cas exceptionnels qui ne se posent pas pour des entrĂ©es pratiques.
Notes et références
- (en) Cet article est partiellement ou en totalitĂ© issu de lâarticle de WikipĂ©dia en anglais intitulĂ© « Ostrich algorithm » (voir la liste des auteurs).
- « Méfiez-vous de l'autruche! », sur www.revuegestion.ca, (consulté le )
- « OS 202 Class Notes », sur cs.nyu.edu (consulté le )
- (en) The University of New South Wales, Deadlocks, 53 p. (lire en ligne [PDF])