Esecuzione (informatica)

Da Wikipedia, l'enciclopedia libera.

In informatica l'esecuzione è il processo tramite il quale un computer o una macchina virtuale esegue (elabora) le istruzioni di un programma.

Più precisamente, l'esecuzione è lo stato in cui si trova un processo quando una CPU sta eseguendo le istruzioni che lo caratterizzano (a differenza di altri momenti in cui può essere ad esempio in uno stato sospeso (idle), o anche in attesa che si renda disponibile una CPU; vedi anche scheduler).

In generale, il termine "eseguire" è usato anche per indicare l'avvio di un programma.

Descrizione[modifica | modifica wikitesto]

Nei moderni sistemi operativi multitasking le shell grafiche e testuali permettono all'utente di indicare un programma da eseguire (tramite menu, icone o specificandolo in una riga di comando); quando ciò avviene, la shell invoca una chiamata di sistema che crea un processo figlio ove sono caricati i dati e le istruzioni del programma da mandare in esecuzione. Ad esempio, nei sistemi operativi Unix e Unix-like la chiamata di sistema fork (ovvero "forchetta" o "biforcazione") crea un nuovo processo facendo una copia del processo chiamante; il nuovo processo può sostituire interamente i propri dati e le proprie istruzioni con quelle del programma invocando una delle chiamate di sistema della famiglia exec.

Al termine della sua esecuzione, il processo chiede al sistema operativo di essere terminato tramite una chiamata di sistema (ad esempio exit nei sistemi Unix) la quale rende disponibile al processo padre il valore di uscita e provvede a liberare le risorse che venivano occupate dal processo.

L'esecuzione di un processo può terminare anticipatamente, senza che esso chieda da solo di essere terminato, ad esempio quando l'utente o il sistema operativo gli invia un segnale per richiederne la terminazione (tramite la chiamata di sistema kill nei sistemi Unix).

Contesto dell'esecuzione[modifica | modifica wikitesto]

Il contesto in cui avviene l'esecuzione è cruciale: rispetto al numero totale di programmi disponibili sono pochissimi quelli che possono essere eseguiti direttamente da un computer senza il supporto del sistema operativo.

I programmi generalmente contengono assunzioni implicite ed esplicite sulle risorse accessibili al momento dell'esecuzione (ad esempio la disponibilità di canali standard di comunicazione, o di un file system su cui memorizzare dati). La maggior parte dei programmi sono eseguiti con il supporto del sistema operativo e di librerie specifiche per il linguaggio, i quali forniscono i servizi essenziali non offerti direttamente dal computer stesso. Questo ambiente di supporto, ad esempio, offre ai processi dei metodi uniformi per accedere a periferiche anche radicalmente diverse tra loro, e nel contempo impedisce ad essi di accedervi direttamente e di creare così conflitti tra processi ed utenti.

Voci correlate[modifica | modifica wikitesto]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica