web-dev-qa-db-fra.com

Qu'est-ce que "runtime"?

J'ai entendu parler de choses telles que "C Runtime", "Visual C++ 2008 Runtime", ".NET Common Language Runtime", etc.

  • Qu'est-ce que " runtime " exactement?
  • De quoi est-ce fait?
  • Comment interagit-il avec mon code? Ou peut-être plus précisément, comment mon code est-il contrôlé par celui-ci?

Lors du codage du langage d'assemblage sous Linux, je pouvais utiliser l'instruction INT pour effectuer l'appel système. Ainsi, le moteur d’exécution n’est-il qu’un ensemble de fonctions préfabriquées qui englobent la fonction de bas niveau dans des fonctions plus abstraites et de haut niveau? Mais cela ne ressemble-t-il pas davantage à la définition de la bibliothèque, pas à l'exécution?

"Runtime" et " bibliothèque d'exécution " sont-ils deux choses différentes?

AJOUTER 1

Ces jours-ci, je pense que peut-être Runtime a quelque chose en commun avec la soi-disant machine virtuelle , telle que la JVM. Voici la citation qui mène à une telle pensée:

Ce processus de compilation est suffisamment complexe pour être divisé en plusieurs couches d'abstraction, qui impliquent généralement trois traducteurs: un compilateur, une implémentation de machine virtuelle et un assembleur. --- Les éléments des systèmes informatiques (Introduction, Le chemin qui mène au matériel)

AJOUTER 2

Le livre Programmation Expert C: Les secrets de Deep C . Le chapitre 6 Structures de données d'exécution constitue une référence utile à cette question.

330
smwikipedia

Runtime décrit les logiciels/instructions exécutés while votre programme est en cours d'exécution, en particulier les instructions que vous n'avez pas écrites explicitement, mais qui sont nécessaires à l'exécution correcte de votre code.

Les langages de bas niveau tels que C ont une exécution très petite (voire aucune). Des langages plus complexes comme Objective-C, qui permet le passage dynamique de messages, ont une durée d'exécution beaucoup plus longue.

Vous avez raison de dire que le code d'exécution est le code de la bibliothèque, mais que le code de la bibliothèque est un terme plus général, décrivant le code produit par la bibliothèque toute. Le code d'exécution est spécifiquement le code requis pour implémenter les fonctionnalités du langage lui-même.

204
e.James

Runtime est un terme général qui fait référence à toute bibliothèque, infrastructure ou plate-forme sur laquelle votre code est exécuté.

Les runtimes C et C++ sont des collections de fonctions.

Le runtime .NET contient un interpréteur langage intermédiaire , un ramasse-miettes, etc.

92
SLaks

Selon Wikipedia: bibliothèque d'exécution / système d'exécution .

En programmation informatique, une bibliothèque d'exécution est une bibliothèque de programmes spéciale utilisée par un compilateur pour mettre en oeuvre des fonctions intégrées dans un langage de programmation, pendant l'exécution (l'exécution) d'un programme informatique. Cela inclut souvent des fonctions d’entrée et de sortie ou de gestion de la mémoire.


Un système d'exécution (également appelé système d'exécution ou simplement runtime) est un logiciel conçu pour prendre en charge l'exécution de programmes informatiques écrits dans un langage informatique quelconque. Le système d'exécution contient des implémentations de commandes de base de bas niveau et peut également implémenter des commandes de niveau supérieur et peut prendre en charge la vérification de type, le débogage et même la génération et l'optimisation de code. Certains services du système d'exécution sont accessibles au programmeur via une interface de programmation d'application, mais d'autres services (tels que la planification des tâches et la gestion des ressources) peuvent être inaccessibles.


Re: votre édition , "runtime" et "runtime library" sont deux noms différents pour la même chose.

70
Matt Ball

Le milieu d'exécution ou est la partie d'une implémentation de langage qui exécute code et est présent à à l'exécution ; la partie de la compilation de l'implémentation est appelée environnement de traduction dans le standard C.

Exemples:

  • le runtime Java est composé de la machine virtuelle et de la bibliothèque standard

  • un environnement d'exécution C commun comprend le chargeur (qui fait partie du système d'exploitation) et la bibliothèque d'exécution, qui implémente les parties du langage C qui ne sont pas intégrées à l'exécutable par le compilateur; dans les environnements hébergés, cela inclut la plupart des éléments de la bibliothèque standard

50
Christoph

D'après ce que je comprends runtime, c'est exactement ce que cela signifie - l'heure à laquelle le programme est exécuté. Vous pouvez dire que quelque chose se passe à runtime/run time ou à la compilation.

Je pense que runtime et bibliothèque d'exécution devrait être (s'ils ne le sont pas) deux choses distinctes. "C runtime" ne me semble pas juste. Je l'appelle "bibliothèque d'exécution C".

Réponses à vos autres questions: Je pense que le terme runtime peut être étendu pour inclure également l'environnement et le contexte du programme lors de son exécution, ainsi:

  • il comprend tout ce qui peut être appelé "environnement" pendant l'exécution du programme, par exemple d'autres processus, l'état du système d'exploitation et des bibliothèques utilisées, l'état des autres processus, etc.
  • il n'interagit pas avec votre code de manière générale, il définit simplement dans quelles circonstances votre code fonctionne, ce qui lui est disponible pendant son exécution.

Cette réponse est dans une certaine mesure juste mon opinion, pas un fait ou une définition.

29
Michał Trybus

Matt Ball a répondu correctement. Je dirais à ce sujet avec des exemples.

Pensez à exécuter un programme compilé dans le compilateur Turbo-Borland C/C++ (version 3.1 à partir de 1991) et laissez-le s'exécuter sous une version 32 bits de Windows telle que Win 98/2000, etc.

C'est un compilateur 16 bits. Et vous verrez que tous vos programmes ont des pointeurs 16 bits. Pourquoi en est-il de même lorsque votre système d'exploitation est 32 bits? Parce que votre compilateur a configuré l'environnement d'exécution 16 bits et que la version 32 bits du système d'exploitation le supportait.

Ce qu’on appelle communément JRE (Java Runtime Environment) fournit un programme Java avec toutes les ressources qu’il peut avoir besoin d’exécuter.

En réalité, l'environnement d'exécution est le produit cérébral de l'idée des machines virtuelles. Une machine virtuelle implémente l'interface raw entre le matériel et ce qu'un programme peut avoir besoin d'exécuter. L'environnement d'exécution adopte ces interfaces et les présente à l'usage du programmeur. Un développeur de compilateur aurait besoin de ces installations pour fournir un environnement d'exécution à ses programmes.

26
ultimate cause

Exécutez le temps exactement où votre code entre dans la vie et vous pouvez voir beaucoup de choses importantes que votre code fait.

Le runtime a la responsabilité d'allouer de la mémoire, de libérer de la mémoire et d'utiliser un sous-système du système d'exploitation tel que (Services de fichiers, IO Services .. Services de réseau, etc.)

Votre code s'appellera "WORKING IN THEORY" jusqu'à ce que vous l'utilisiez pratiquement. et Runtime est un ami qui aide à y parvenir.

6
TalentTuner

J'ai trouvé que le structure de dossiers suivante crée un contexte très perspicace pour comprendre ce que runtime est:

Runtimes of Mozilla XulRunner

Vous pouvez voir qu'il y a le ' source ', le 'SDK' ou le "Kit de développement logiciel" et alors il y a le Runtime, par exemple. ce qui est exécuté - au moment de l'exécution. Son contenu est comme:

runtimes' folder contents

Le win32 Zip contient .exe -s et .dll -s.

Donc, par exemple. le runtime C serait les fichiers suivants: bibliothèques C, .so-s ou .dll -s, exécutés à l'exécution, rendus spéciaux par leur inclusion (ou leur contenu, ou leurs objectifs) dans la définition du Langage C (sur "papier"), puis implémenté par votre implémentation C de choix. Et ensuite, vous obtenez le temps d'exécution de cette implémentation, pour l'utiliser et la développer.

Autrement dit, avec un peu de polarisation, les fichiers exécutables dont les utilisateurs de votre nouveau programme basé sur C auront besoin. En tant que développeur d’un programme basé sur C, vous aussi, mais vous avez également besoin du compilateur C et des en-têtes de la bibliothèque C; les utilisateurs n'en ont pas besoin.

3
n611x007

un runtime peut indiquer la phase actuelle de la vie du programme (runtime/temps de compilation/temps de chargement/temps de liaison) ou peut être une bibliothèque d'exécution, qui forme les actions de bas niveau de base qui interfacent avec l'environnement d'exécution. ou cela pourrait signifier un système d'exécution, ce qui est identique à un environnement d'exécution.

dans le cas des programmes C, le runtime est le code qui configure la pile, le tas, etc., ce qui est une exigence attendue par l'environnement C. il installe essentiellement l'environnement promis par la langue. (il pourrait avoir un composant de bibliothèque d'exécution, crt0.lib ou quelque chose comme ça dans le cas de C)

3
alvin

Runtime signifie essentiellement que le programme interagit avec le matériel et le système d'exploitation d'une machine. C n'a pas son propre runtime, mais demande à ce qu'il soit exécuté par un système d'exploitation (qui fait essentiellement partie de ram).

2
Shrey Mittal