Priority ceiling protocol

Il Priority ceiling protocol è un protocollo che viene usato in sistema real-time per la gestione di accesso a risorse condivise evitando l'inversione di priorità e la Mutua esclusione.

Quando due o più task (o thread) devono accedere alle stesse risorse si pone il problema di chi debba accedervi per primo e di come si possa segnalare, a tutti gli attori, la modifica di una particolare risorsa condivisa da parte di un attore. L'accesso alla sezione critica risulta gestibile efficientemente tramite l'approccio Priority Ceiling che consiste in:

Si definisce per ogni risorsa (mutex) "Sk" un ceiling "c(Sk)" definito come la massima tra le priorità "p(τi)" dei task "τi" che potrebbero usare il mutex "Sk":

       c(Sk) = max {p(τi) : τi usa Sk}

Si definisce il massimo ceiling "c(S*)" fra le risorse attualmente occupate

       c(S*) = max {c(Sk) : Sk occupate} 

La condizione d'ingresso per il task τj nella sezione Sk è:

       p(τj) > c(S*)        (n.b. strettamente maggiore)

Proprietà in ambiente monoprocessore

[modifica | modifica wikitesto]

Il protocollo priority ceiling (diversamente dal Priority Inheritance) previene lo stallo (deadlock) se tutte le risorse condivise sono accedute sotto regime Priority Ceiling e le loro priorità sono coerentemente assegnate, un processo subisce al più un ritardo (blocco) da inversione di priorità irriducibile e solo al suo rilascio.

Voci correlate

[modifica | modifica wikitesto]
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica