Exécution (informatique)
En informatique, l'exécution est le processus par lequel un ordinateur ou une machine virtuelle met en œuvre les instructions d'un programme.
Les instructions du programme entraînent des séquences d'actions élémentaires sur la machine d'exécution. Les effets qu'entraînent ces actions sont conformes à la sémantique des instructions du programme.
Un programme en cours d'exécution est appelé un processus.
L’exécution symbolique permet d'explorer les chemins d'exécution possibles d'un programme informatique à partir des symboles contenus dans son code source. Elle diffère de l’exécution concrète qui ne suit qu'un seul des chemins possibles. Alors que l’exécution concrète met directement à jour les variables en mémoire, l’exécution symbolique enregistre les formules logiques liant les variables entre elles. Le but est d'analyser statiquement un programme pour trouver des bugs ou prouver certaines propriétés du programme. Il s'agit d'une interprétation abstraite d'un programme.
Cadre de l'exécution
Le contexte dans lequel l'exécution se déroule est crucial. Très peu de programmes s'exécutent sur une machine qui exécute directement les programmes sans l'intervention d'un système d'exploitation. Les programmes contiennent généralement des hypothèses implicites et explicites sur les ressources disponibles au moment de l'exécution. La plupart des programmes sont exécutés avec l'appui d'un système d'exploitation et des bibliothèques d'exécution spécifiques au langage source qui fournissent des services essentiels non fournis par l'ordinateur lui-même. Ce contexte favorable, par exemple, découple généralement un programme de la manipulation directe des périphériques de l'ordinateur, fournissant un services plus général et plus abstrait à la place.
Processus
Avant l'exécution, un programme doit d'abord être écrit. Cela se fait généralement dans le code source, qui est ensuite compilé au moment de la compilation (et lié statiquement au moment de la liaison) à un fichier exécutable. Ce fichier exécutable est alors invoqué, le plus souvent, par un système d'exploitation, qui charge le programme dans la mémoire (temps de chargement) et éventuellement effectue la liaison dynamique, et alors commence l'exécution en déplaçant le contrôle au point d'entrée du programme.
Toutes ces étapes dépendent de l'Application Binary Interface du système d'exploitation.
À ce stade, l'exécution commence et le programme entre dans le moment de l'exécution. Ensuite, le programme s'exécute jusqu'à ce qu'il se termine, soit normalement, soit par un crash.
Interprète
Un système qui exécute un programme est appelé un interprète du programme. Grosso modo, un interprète ne fait que ce que le programme dit de faire. Cela contraste avec un traducteur de langue qui convertit un programme à partir d'un langage vers un autre. Les traducteurs les plus courants sont des compilateurs. Les traducteurs convertissent généralement le code source à partir d'un langage de haut niveau, lisible par l'homme, vers un langage de bas niveau (parfois aussi bas que le code machine) qui est plus simple et plus rapide à exécuter pour le processeur. L'idée est que le ratio d'exécutions pour les traductions d'un programme sera grand; c'est-à -dire qu'un programme aura besoin d'être compilé une fois et sera exécuté un grand nombre de fois. Cela peut fournir un grand avantage pour la traduction par rapport à l'interprétation directe de la langue source. Un inconvénient est que le temps de développement est rallongé, en raison de la compilation. Dans certains cas, seuls les fichiers modifiés doivent être recompilés. Ensuite l'exécutable doit être réédité. Pour certains changements, l'exécutable doit être reconstruit à partir de zéro. À mesure que les ordinateurs et les compilateurs deviennent plus rapides, cela est de moins en moins un obstacle. Cependant, la vitesse du produit final est généralement plus importante pour l'utilisateur que le temps de développement.
Les traducteurs produisent généralement un résumé de résultat qui n'est pas complètement prêt à s'exécuter. Souvent, le système d'exploitation se charge de convertir le code objet du traducteur en un fichier exécutable, juste avant que l'exécution du programme commence.