Starvation

Da Wikipedia, l'enciclopedia libera.

In informatica, per starvation (termine inglese che tradotto letteralmente significa inedia) si intende l'impossibilità perpetua, da parte di un processo pronto all'esecuzione, di ottenere le risorse sia hardware che software di cui necessita per essere eseguito.

Descrizione[modifica | modifica wikitesto]

Un esempio tipico è il non riuscire ad ottenere il controllo della CPU da parte di processi con priorità molto bassa, qualora vengano usati algoritmi di scheduling a priorità. Può capitare, infatti, che venga continuamente sottomesso al sistema un processo con priorità più alta. Un aneddoto riguardo a questo problema è la storia del processo con bassa priorità, scoperto quando fu necessario fermare il sistema sull'IBM 7094 al MIT nel 1973: era stato sottomesso nel 1967 e fino ad allora non era ancora stato eseguito.

O, altro esempio tipico, è quello riguardante il problema dei cinque filosofi, nel quale se uno dei filosofi non riesce mai a ottenere entrambe le forchette(o bastoncini) questo non sarà mai in grado di eseguire la sua task.

Per evitare questi problemi si possono utilizzare, oltre ad algoritmi di scheduling diversi, come RR, le cosiddette tecniche di invecchiamento (aging). Ovvero si provvede ad aumentare progressivamente, ad intervalli regolari, la priorità dei processi qualora questi non siano riusciti ad ottenere le risorse richieste. Questo fa sì che anche un processo con la priorità più bassa possa potenzialmente assumere quella più alta, riuscendo così ad ottenere, in un tempo massimo predefinito, quanto di cui necessita.

Altri usi del termine starvation sono in relazione alle risorse di accesso alla memoria primaria o CPU: si dice che un programma è bandwidth-starved quando la sua esecuzione è rallentata da un'insufficiente velocità di accesso alla memoria, o CPU-starved quando il processore è troppo lento per eseguire efficacemente il codice.

Voci correlate[modifica | modifica wikitesto]