Lo studio e l’ottimizzazione di alcune delle più comuni funzionalità di cui si avvalgono i nostri dispositivi elettronici sono spesso legate al lavoro svolto da persone che, come le caso di Edsger Dijkstra, ai più risultano sconosciute.
Iniziamo con il dire che l’olandese Edsger Dijkstra (1930-2002) è stato un informatico - ma potrebbe essere definito diversamente, visti i suoi interessi anche in campo matematico - a cui si devono numerosi studi, tra cui quello dei meccanismi in relazione alle cosiddette situazioni di deadlock (stallo o blocco critico) e starvation (attesa perenne). Ma cosa intendiamo con ciò?
In alcune situazioni sarà capitato a tutti di dover riavviare la propria macchina, device o controllore perché in situazione di blocco. Quando, come in una architettura informatica, più attori devono accedere a una risorsa condivisa, ovvero devono agire in “concurrency” si ricorre alla tecnica del blocco: quando la risorsa viene rilasciata, allora un altro attore, ad esempio un programma, potrà utilizzare quella risorsa. È facile intuire che se non correttamente gestito, questo meccanismo può dare vita, per l’appunto, a situazioni di blocco.
Un cosiddetto blocco critico, o stallo, si verifica quando ogni processo, all’interno di un determinato insieme di processi, rimane in attesa di un evento che può essere causato solo da un altro processo dell’insieme di cui fa parte. Il concetto di starvation, cioè di attesa perenne, è simile ma lievemente differente, in quanto si verifica quando uno o più processi, che non sono in blocco critico, attendono indefinitamente lo sblocco di una risorsa prima di poterla usare.
Negli anni ’60, quando i pionieri dell’informatica si stavano dando da fare mettendo a punto quelle che sarebbero poi diventate le basi dei moderni sistemi operativi concorrenti (o multitasking), rimase celebre l’esempio dei 5 filosofi a cena che Dijkstra utilizzò per esporre un problema di sincronizzazione e mutua esclusione e spiegare come questo avrebbe potuto essere risolto: come avrebbero potuto 5 filosofi seduti a tavola di fronte a 5 piatti di spaghetti e una serie di forchette condivise mangiare e parlare alternativamente senza creare situazioni di stallo, ovvero facendo sì che tutti riuscissero a servirsi delle forchette per finire i propri spaghetti?
Se questo argomento vi ha appassionato, potete vedere la soluzione al problema dei 5 filosofi al seguente link: https://it.wikipedia.org/wiki/Problema_dei_filosofi_a_cena