Un file eseguibile (o semplicemente un eseguibile), in informatica, indica un file che contiene un programma eseguibile per un computer, ovvero un programma scritto in linguaggio macchina direttamente eseguibile dal processore: si distingue da un file sorgente, che contiene un programma scritto in un linguaggio di programmazione ad alto livello il quale può essere eseguito solo utilizzando un interprete o trasformandolo prima in eseguibile (codice oggetto + librerie) tramite un compilatore, o con una combinazione di questi due strumenti.

Descrizione

In generale, gli eseguibili sono dipendenti dalla piattaforma: per esempio, un file eseguibile per un sistema Microsoft Windows non è direttamente utilizzabile in sistemi Unix o Mac OS (a meno di non usare un software di emulazione[1]).

Questa restrizione è dovuta a tre motivi:

  • processori diversi supportano linguaggi macchina generalmente diversi e incompatibili tra di loro;
  • sistemi operativi diversi usano generalmente formati diversi per i file eseguibili: ad esempio nei sistemi Unix e Unix-like è comune il formato ELF, mentre in altri sistemi si usa COFF o suoi derivati, o anche Mach-O;
  • per effettuare operazioni di base (per esempio l'input/output) i programmi eseguibili devono avvalersi delle primitive fornite dal sistema operativo del computer su cui sono eseguiti, il cui utilizzo è specifico per sistema operativo. Di conseguenza, anche a parità di processore, un file eseguibile per un particolare sistema operativo è in generale inutilizzabile su altre piattaforme ovvero non è portabile. Ad esempio, i file eseguibili per i sistemi Microsoft Windows su architettura x86 non possono essere utilizzati direttamente[1] su sistemi Linux su architettura x86, anche se queste entrambi utilizzano la stessa classe di processori.

Ogni sistema operativo ha una propria convenzione per distinguere i file eseguibili dai file che contengono dati. Alcuni sistemi utilizzano specifiche estensioni (per esempio ".exe" in MS-DOS e Microsoft Windows); altri fanno riferimento a speciali attributi del file indicati nei suoi permessi (come il permesso "x" di esecuzione dei sistemi Unix e Unix-like) o richiedono uno speciale marcatore in una posizione prestabilita all'interno del file stesso: ancora su Unix, per esempio, congiuntamente al bit "x", viene utilizzato anche il cosiddetto magic number, ovvero uno o più byte con valori prestabiliti collocati all'inizio del file che ne identificano il tipo, come nel caso dello shabang (questa idea è stata estesa ad altri sistemi operativi tra cui AmigaOS dove il magic number viene chiamato "magic cookie" o biscottino magico).

Normalmente, durante l'upload di un file eseguibile in memoria, il codice macchina viene sottoposto a un processo di rilocazione. In altre parole, tutti i riferimenti a indirizzi di memoria presenti nel codice vengono opportunamente traslati in funzione dell'indirizzo di base in cui il programma viene effettivamente caricato. Questo problema è mitigato dall'uso della memoria virtuale; può tuttavia essere necessaria la rilocazione delle librerie dinamiche.

Utilizzo

Viene realizzato in un dato formato, ed ha principalmente due scopi:

  1. ad essere caricato dal sistema operativo, quindi pronto per l'esecuzione;
  2. all'architettura hardware del processore che lo esegue.

Il termine eseguibile viene talvolta utilizzato in senso esteso per riferirsi anche a tutti quei programmi che possono essere eseguiti senza una previa traduzione esplicita (compilazione) in linguaggio macchina.

In questo caso esso potrebbe essere applicato anche a:

Note

  1. ^ a b Entro certi limiti è possibile usarli tramite Wine

Voci correlate

Collegamenti esterni