Vés al contingut

Inversió de prioritat

De la Viquipèdia, l'enciclopèdia lliure

En informàtica, la inversió de prioritat és la situació que es dona quan una tasca (un procés o un fil d'execució) d'alta prioritat necessita un recurs que està ocupat per una tasca de baixa prioritat i per tant ha d'esperar fins que aquesta finalitzi. En aquest cas, les prioritats relatives de les dues tasques s'inverteixen.[1] Si existeixen altres tasques de mitjana prioritat que no depenen del recurs ocupat, pot ser que s'executin mentre la tasca d'alta prioritat està bloquejada, invertint així també les prioritats relatives.

Si la tasca d'alta prioritat es retarda massa o si se sofreix inanició poden aparèixer diversos problemes, com la degradació de l'eficiència del sistema, la insatisfacció dels requeriments de temps real que el sistema pugui tenir, una fallada general, el re-inici del sistema per un watchdog, etc.

Degut a la naturalesa impredictible dels sistemes multitasca, no hi ha una forma saber amb exactitud quan pot aparèixer un problema d'inversió de prioritats, però hi ha diverses solucions per prevenir-los. Les més comunes són:

  • Herència de prioritat (priority inheritance). Amb aquest mecanisme, la tasca de baixa prioritat adquireix la mateixa prioritat que la tasca d'alta prioritat, evitant així que les tasques de prioritat mitjana prenguin preferència i permetent així alliberar el recurs bloquejat.
  • Assignació de prioritat als recursos compartits (priority ceiling). El sistema operatiu assigna una prioritat al recurs compartit igual a la prioritat màxima de les tasques que poden bloquejar el recurs. Quan s'accedeix al recurs compartit, el sistema ho fa amb aquesta prioritat.

Referències

[modifica]
  1. «BULMA: Inversión de Prioridades, SCHED_IDLE y Linux», 12-06-2010. Arxivat de l'original el 2010-06-12. [Consulta: 24 juny 2019].