J'ai entendu parler de choses comme "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 lui?
Lors du codage du langage d'assemblage sous Linux, je pouvais utiliser l'instruction INT pour effectuer l'appel système. Donc, le runtime n'est-il qu'un tas de fonctions préfabriquées qui enveloppent 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 à celle de l'exécution?
Est-ce que "runtime" et " runtime library " sont deux choses différentes?
AJOUTER 1
Ces jours-ci, je pense que Runtime a peut-être quelque chose en commun avec la soi-disant machine virtuelle , telle que JVM. Voici la citation qui conduit à une telle réflexion:
Ce processus de compilation est suffisamment complexe pour être divisé en plusieurs couches d'abstraction, et celles-ci 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, The Road Down To Hardware Land)
AJOUTER 2
Le livre Expert C Programming: Deep C Secrets . Le chapitre 6 Structures de données d'exécution est une référence utile à cette question.
la source
runtime library
plus un code de contrôle et un état (fourni par le système d'exploitation).Réponses:
Runtime décrit les logiciels / instructions qui sont exécutés pendant l' exécution de votre programme, en particulier les instructions que vous n'avez pas écrites explicitement, mais qui sont nécessaires à la bonne exécution de votre code.
Les langages de bas niveau comme C ont un temps d'exécution très faible (le cas échéant). Les langages plus complexes comme Objective-C, qui permettent le passage dynamique des messages, ont un temps d'exécution beaucoup plus étendu.
Vous avez raison de dire que le code d'exécution est un code de bibliothèque, mais le code de bibliothèque est un terme plus général, décrivant le code produit par n'importe quelle bibliothèque. Le code d'exécution est spécifiquement le code requis pour implémenter les fonctionnalités du langage lui-même.
la source
L'exécution est un terme général qui fait référence à toute bibliothèque, infrastructure ou plate-forme sur laquelle votre code s'exécute.
Les runtimes C et C ++ sont des collections de fonctions.
Le runtime .NET contient un interpréteur de langage intermédiaire , un garbage collector, etc.
la source
cout
ouprintf
.Selon Wikipedia: bibliothèque d'exécution / système d' exécution .
Re: votre édition , "runtime" et "runtime library" sont deux noms différents pour la même chose.
la source
L' exécution ou l' environnement d' exécution est la partie d'une implémentation du langage qui exécute le code et est présent à l' exécution ; la partie à la compilation de l'implémentation est appelée l' environnement de traduction dans la norme C.
Exemples:
le runtime Java se compose de la machine virtuelle et de la bibliothèque standard
un runtime C commun se compose du chargeur (qui fait partie du système d'exploitation) et de la bibliothèque runtime, qui implémente les parties du langage C qui ne sont pas intégrées dans l'exécutable par le compilateur; dans les environnements hébergés, cela inclut la plupart des parties de la bibliothèque standard
la source
À ma connaissance, l' exécution est exactement ce que cela signifie - l'heure à laquelle le programme est exécuté. Vous pouvez dire que quelque chose se produit à l' exécution / au moment de l' exécution ou à la compilation.
Je pense que le runtime et la bibliothèque d'exécution devraient ê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, donc:
Cette réponse est dans une certaine mesure juste mon opinion, pas un fait ou une définition.
la source
Matt Ball a répondu correctement. Je dirais à ce sujet avec des exemples.
Envisagez d'exécuter un programme compilé dans le compilateur Turbo-Borland C / C ++ (version 3.1 de l'année 1991) et laissez-le s'exécuter sous une version 32 bits de fenêtres comme 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 ainsi lorsque votre système d'exploitation est en 32 bits? Parce que votre compilateur a configuré l'environnement d'exécution de 16 bits et que la version 32 bits d'OS l'a pris en charge.
Ce qui est communément appelé JRE (Java Runtime Environment) fournit un programme Java avec toutes les ressources nécessaires à son exécution.
En fait, l'environnement d'exécution est le produit du cerveau de l'idée de machines virtuelles. Une machine virtuelle implémente l' interface brute entre le matériel et ce dont un programme peut avoir besoin pour s'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 fonctionnalités pour fournir un environnement d'exécution pour ses programmes.
la source
Exécutez le temps exactement où votre code prend 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, d'utiliser le sous-système du système d'exploitation comme (Services de fichiers, Services IO .. Services réseau, etc.)
Votre code sera appelé "TRAVAILLER EN THÉORIE" jusqu'à ce que vous exécutiez pratiquement votre code. et Runtime est un ami qui aide à y parvenir.
la source
un runtime pourrait indiquer la phase actuelle de la vie du programme (runtime / temps de compilation / temps de chargement / temps de liaison) ou cela pourrait signifier une bibliothèque d'exécution, qui forment les actions basiques de bas niveau qui s'interfacent avec l'environnement d'exécution. ou cela pourrait signifier un système d'exécution, 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. qui est une exigence attendue par l'environnement C. il met en place 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 en cas de C)
la source
J'ai trouvé que la structure de dossiers suivante constitue un contexte très perspicace pour comprendre ce qui
runtime
est:Vous pouvez voir qu'il y a la « source », il y a le « SDK » ou le «Kit de développement logiciel» et puis il y a
Runtime
, par exemple. ce qui est exécuté - au moment de l'exécution. Son contenu est comme:Le zip win32 contient .exe -s et .dll -s.
Donc par exemple. le runtime C serait les fichiers comme celui-ci - bibliothèques d'exécution C, .so-s ou .dll -s - que vous exécutez au moment de l'exécution, rendus spéciaux par leur inclusion (ou leur contenu "ou à des fins") dans la définition de la Langage C (sur «papier»), puis implémenté par l'implémentation C de votre choix. Et puis vous obtenez le temps d'exécution de cette implémentation, pour l'utiliser et pour en tirer parti.
C'est-à-dire, 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 bibliothèque C; les utilisateurs n'en ont pas besoin.
la source
L'exécution signifie essentiellement lorsque le programme interagit avec le matériel et le système d'exploitation d'une machine. C n'a pas son propre runtime mais au lieu de cela, il demande au runtime d'un système d'exploitation (qui fait essentiellement partie de ram) de s'exécuter.
la source
Si ma compréhension de la lecture des réponses ci-dessus est correcte, le runtime est essentiellement des `` processus d'arrière-plan '' tels que la récupération de place, l'allocation de mémoire, essentiellement tous les processus qui sont invoqués indirectement, par les bibliothèques / frameworks dans lesquels votre code est écrit, et en particulier ceux processus qui se produisent après la compilation, alors que l'application est en cours d'exécution.
la source
Ces sections de la documentation MSDN répondent à la plupart de vos questions: http://msdn.microsoft.com/en-us/library/8bs2ecf4(VS.71).aspx
J'espère que ça aide.
Merci, Damian
la source
Le temps d'exécution est l'instance où vous ne savez pas quel type d'objets crée lors de son exécution, la création d'objets est basée sur certaines conditions ou sur certains travaux de calcul. En revanche, le temps de compilation est l'instance où les objets requis sont définis par vous avant ses exécutions.
la source
L'exécution est quelque peu opposée à la conception et à la compilation / à la liaison. Historiquement, cela vient d'un environnement mainframe lent où le temps machine était cher.
la source