Executable

En informática, un ficheiro executable (ou simplemente un executable) refírese a un ficheiro que contén un programa executable para un ordenador, é dicir, un programa escrito en linguaxe máquina que pode ser executado directamente polo procesador. Isto é distinto dun ficheiro fonte, que contén un programa escrito nunha linguaxe de programación de alto nivel que só pode ser executado usando un intérprete ou transformándoo primeiro nun executable (código obxecto + bibliotecas) usando un compilador, ou unha combinación destas dúas ferramentas.

Un executable nativo é código máquina e é executable directamente no nivel de instrución dunha CPU. Un script tamén é executable aínda que indirectamente a través dun intérprete. O código executable intermedio (como o bytecode) pode ser interpretado ou convertido a código nativo en tempo de execución mediante compilación xusto a tempo.

 Descrición 
En xeral, os ficheiros executables dependen da plataforma: por exemplo, un ficheiro executable para un sistema Microsoft Windows non se pode usar directamente en sistemas Unix ou Mac OS (a non ser que se empregue software de emulación).

Esta restrición débese a tres razóns:

 diferentes procesadores admiten linguaxes máquina que xeralmente son diferentes e incompatibles entre si;
 os diferentes sistemas operativos xeralmente empregan diferentes formatos para os ficheiros executábeis: por exemplo, en sistemas Unix e semellantes a Unix o formato ELF é común, mentres que noutros sistemas úsase COFF ou os seus derivados, ou mesmo Mach-O;
 para realizar operacións básicas (por exemplo, entrada/saída) os programas executables deben empregar primitivas proporcionadas polo sistema operativo do ordenador no que se executan, cuxo uso é específico do sistema operativo. Como resultado, mesmo co mesmo procesador, un ficheiro executable para un sistema operativo en particular xeralmente non se pode usar noutras plataformas, é dicir, non é portátil. Por exemplo, os ficheiros executábeis para sistemas Microsoft Windows con arquitectura x86 non se poden usar directamente en sistemas Linux con arquitectura x86, mesmo se ambos usan a mesma clase de procesadores.

Cada sistema operativo ten a súa propia convención para distinguir os ficheiros executábeis dos ficheiros que conteñen datos. Algúns sistemas usan extensións específicas (por exemplo, «.exe» en MS-DOS e Microsoft Windows); outros refírense a atributos especiais do ficheiro indicados nos seus permisos (como o permiso de execución «x» en Unix e sistemas tipo Unix) ou requiren un marcador especial nunha localización fixa dentro do propio ficheiro: aínda en Unix, por exemplo, xunto co bit «x», tamén se emprega o chamado número máxico, é dicir, un ou máis bytes con valores preestablecidos colocados ao comezo do ficheiro que identifican o seu tipo, como no caso de shebang (esta idea estendeuse a outros sistemas operativos incluído AmigaOS, onde o número máxico se denomina magic cookie ou «galleta máxica»).

Normalmente, cando se carga un ficheiro executábel na memoria, o código máquina sofre un proceso de reubicación. Noutras palabras, todas as referencias a enderezos de memoria no código tradúcense axeitadamente en función do enderezo base onde se carga realmente o programa. Este problema atíñase co uso de memoria virtual; non obstante, pode ser necesaria a reubicación de bibliotecas dinámicas.

 Uso 
Créase nun formato específico e ten dous propósitos principais:

 ser cargado polo sistema operativo, listo para a súa execución;
 para a arquitectura de hardware do procesador que o executa.

O termo «executable» ás veces úsase nun sentido máis amplo para referirse a todos aqueles programas que se poden executar sen tradución explícita previa (compilación) a linguaxe máquina.

 Notas 

 Véxase tamén 

 Outros artigos 
 Código fonte
 Código máquina
 Código obxecto
 Compilador
 Ficheiro
 Portable Executable

 Ligazóns externas 


Categoría:Sistemas de ficheiros
Categoría:Programación