Exécution (informatique) - Execution (computing)
Exécution du programme |
---|
Concepts généraux |
Types de codes |
Stratégies de compilation |
Temps d'exécution notables |
|
Compilateurs et chaînes d'outils notables |
|
L'exécution en génie informatique et logiciel est le processus par lequel un ordinateur ou une machine virtuelle lit et agit sur les instructions d'un programme informatique . Chaque instruction d'un programme est une description d'une action particulière qui doit être effectuée, afin qu'un problème spécifique soit résolu. L'exécution implique de suivre à plusieurs reprises un cycle « extraction-décodage-exécution » pour chaque instruction. Comme la machine d'exécution suit les instructions, des effets spécifiques sont produits conformément à la sémantique de ces instructions.
Les programmes d'un ordinateur peuvent être exécutés par lots sans interaction humaine ou un utilisateur peut taper des commandes dans une session interactive d'un interpréteur . Dans ce cas, les "commandes" sont simplement des instructions de programme, dont l'exécution est enchaînée.
Le terme run est utilisé presque comme un synonyme. Une signification connexe de « exécuter » et « exécuter » fait référence à l'action spécifique d'un utilisateur démarrant (ou lançant ou invoquant ) un programme, comme dans « Veuillez exécuter l'application ».
Traiter
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 du lien ) pour produire un exécutable. Cet exécutable est ensuite invoqué, le plus souvent par un système d'exploitation, qui charge le programme en mémoire ( load time ), effectue éventuellement une liaison dynamique , puis commence l'exécution en déplaçant le contrôle jusqu'au point d'entrée du programme ; toutes ces étapes dépendent de l' interface binaire d'application du système d'exploitation. À ce stade, l'exécution commence et le programme entre en phase d'exécution . Le programme se déroule ensuite jusqu'à la fin, soit normale résiliation ou d' un accident .
Exécutable
Le code exécutable , un fichier exécutable ou un programme exécutable , parfois simplement appelé exécutable ou binaire , est une liste d'instructions et de données pour amener un ordinateur " à effectuer des tâches indiquées selon des instructions codées ", par opposition à un fichier de données qui doit être interprété ( parsé ) par un programme pour être significatif.
L'interprétation exacte dépend de l'utilisation. Les « instructions » sont traditionnellement considérées comme des instructions de code machine pour un processeur physique . Dans certains contextes, un fichier contenant des instructions de script (comme le bytecode ) peut également être considéré comme exécutable.
Contexte d'exécution
Le contexte dans lequel se déroule l'exécution est crucial. Très peu de programmes s'exécutent sur une machine nue . 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 s'exécutent avec le support d'un système d'exploitation et de bibliothèques d'exécution spécifiques à la langue source qui fournissent des services cruciaux non fournis directement par l'ordinateur lui-même. Cet environnement favorable, par exemple, dissocie généralement un programme de la manipulation directe des périphériques informatiques, fournissant à la place des services abstraits plus généraux.
Système d'exécution
Un système d'exécution , également appelé environnement d'exécution , implémente principalement des parties d'un modèle d'exécution . Cela ne doit pas être confondu avec la phase du cycle de vie d' exécution d'un programme, pendant laquelle le système d'exécution est en fonctionnement. Lors du traitement du système d'exécution comme distinct de l' environnement d'exécution (RTE), le premier peut être défini comme une partie spécifique du logiciel d'application (IDE) utilisé pour la programmation , un logiciel qui fournit au programmeur un environnement plus pratique pour exécuter des programmes lors de leur production ( tests et similaires) tandis que le second (RTE) serait l' instance même d'un modèle d'exécution appliqué au programme développé qui est lui-même ensuite exécuté dans le système d'exécution susmentionné .
La plupart des langages de programmation ont une forme de système d'exécution qui fournit un environnement dans lequel les programmes s'exécutent. Cet environnement peut résoudre un certain nombre de problèmes, notamment la gestion de la mémoire de l'application , la manière dont le programme accède aux variables , les mécanismes de transmission de paramètres entre les procédures , l'interfaçage avec le système d'exploitation , etc. Le compilateur fait des hypothèses en fonction du système d'exécution spécifique pour générer le code correct. En règle générale, le système d'exécution aura une certaine responsabilité dans la configuration et la gestion de la pile et du tas , et peut inclure des fonctionnalités telles que le ramasse-miettes , les threads ou d'autres fonctionnalités dynamiques intégrées au langage.
Cycle d'instruction
Le cycle d'instructions (également connu sous le nom de cycle fetch-decode-execute , ou simplement le cycle fetch-execute ) est le cycle que l' unité centrale (CPU) suit du démarrage jusqu'à l'arrêt de l'ordinateur afin de traiter les instructions . Il est composé de trois étapes principales : l'étape d'extraction, l'étape de décodage et l'étape d'exécution.
Dans les CPU plus simples, le cycle d'instruction est exécuté de manière séquentielle, chaque instruction étant traitée avant que la suivante ne démarre. Dans la plupart des processeurs modernes, les cycles d'instructions sont plutôt exécutés simultanément , et souvent en parallèle , via un pipeline d'instructions : l'instruction suivante commence à être traitée avant la fin de l'instruction précédente, ce qui est possible car le cycle est divisé en étapes distinctes.
Interprète
Un système qui exécute un programme est appelé un interpréteur du programme. En gros, un interprète exécute directement un programme. Cela contraste avec un traducteur de langue qui convertit un programme d'une langue à une autre avant son exécution.
Machine virtuelle
Une machine virtuelle ( VM ) est la virtualisation / émulation d'un système informatique . Les machines virtuelles sont basées sur des architectures informatiques et fournissent les fonctionnalités d'un ordinateur physique. Leurs implémentations peuvent impliquer du matériel spécialisé, des logiciels ou une combinaison.
Les machines virtuelles diffèrent et sont organisées selon leur fonction, illustrée ici :
- Les machines virtuelles système (également appeléesmachines virtuelles de virtualisation complète ) remplacent une machine réelle. Ils fournissent les fonctionnalités nécessaires à l'exécution de systèmes d'exploitation entiers. Un hyperviseur utilise une exécution native pour partager et gérer le matériel, permettant ainsi plusieurs environnements isolés les uns des autres, mais existant sur la même machine physique. Les hyperviseurs modernes utilisent la virtualisation assistée par matériel , du matériel spécifique à la virtualisation, principalement à partir des CPU hôtes.
- Les machines virtuelles de processus sont conçues pour exécuter des programmes informatiques dans un environnement indépendant de la plate-forme.
Certains émulateurs de machines virtuelles, tels que QEMU et les émulateurs de consoles de jeux vidéo , sont conçus pour également émuler (ou « imiter virtuellement ») différentes architectures de système permettant ainsi l'exécution d'applications logicielles et de systèmes d'exploitation écrits pour un autre processeur ou architecture. La virtualisation au niveau du système d'exploitation permet de partitionner les ressources d'un ordinateur via le noyau . Les termes ne sont pas universellement interchangeables.