什么是“运行时”?

我听说过“C运行时间”,“Visual C ++ 2008运行时间”,“.NET公共语言运行时间”等等。

  • 什么是“ 运行时间 ”?
  • 它是什么做的?
  • 它如何与我的代码交互? 或者更准确地说,我的代码是如何控制的呢?

在Linux上编译汇编语言时,我可以使用INT指令来进行系统调用。 那么,运行时是什么,只不过是一堆预制函数,将低级函数包装成更抽象和更高级的函数呢? 但是,这看起来不像是图书馆的定义,而不是运行时?

“运行时”和“ 运行时库 ”是两回事吗?

ADD 1

这些天,我想运行时可能与所谓的虚拟机 (如JVM)有一些共同之处。 这是引出这样的想法的引文:

这个编译过程足够复杂,可以分解成几个抽象层,这些编译器通常包含三个翻译器:一个编译器,一个虚拟机实现和一个汇编器。 — 计算机系统的元素 (简介,硬件之路)

根据Wikipedia: 运行时库 / 运行时系统 。

在计算机编程中,运行时库是编译器使用的特殊程序库,用于在计算机程序的运行时(执行)期间实现内置于编程语言中的函数。 这通常包括input和输出function,或内存pipe理function。


运行时系统(也称为运行时系统或运行时)是为支持执行用某种计算机语言编写的计算机程序而devise的软件。 运行时系统包含基本低级命令的实现,也可以实现更高级别的命令,并且可以支持types检查,debugging,甚至代码生成和优化。 程序员可以通过应用程序编程接口访问运行系统的某些服务,但其他服务(如任务调度和资源pipe理)可能无法访问。


Re:你的编辑 ,“运行时”和“运行时库”是同一个事物的两个不同的名字。

运行时描述了程序运行时执行的软件/指令,特别是那些没有明确写入但是正确执行代码所必需的指令。

像C这样的低级语言的运行时间非常短(如果有的话)。 像Objective-C这样的更复杂的语言,它允许dynamic消息传递,具有更广泛的运行时间。

运行时代码是库代码是正确的,但库代码是一个更通用的术语,描述任何库生成的代码。 运行时代码特别是实现语言本身function所需的代码。

运行时是一个通用术语,指的是运行代码的任何库,框架或平台。

C和C ++运行时是函数的集合。

.NET运行时包含一个中间语言解释器,一个垃圾回收器,等等。

运行时执行环境是执行代码并在运行时出现的语言实现的一部分; 实现的编译时部分被称为C标准中的翻译环境

例子:

  • Java运行时由虚拟机和标准库组成

  • 一个通用的C运行库由加载器(它是操作系统的一部分)和运行时库组成,它们实现了C语言的一部分,这些部分不是由编译器内置到可执行文件中的; 在托pipe环境中,这包括标准库的大部分部分

在我的理解中, 运行时正是它的意思 – 程序运行的时间。 你可以说在运行时 / 运行时或编译时发生的事情。

我认为运行 时库运行时库应该是(如果不是)两个单独的东西。 “C运行时”似乎不适合我。 我称之为“C运行时库”。

回答您的其他问题:我认为术语运行时可以扩展到运行时包含程序的环境和上下文,所以:

  • 它由运行程序期间可以称为“环境”的所有东西组成,例如其他进程,操作系统和使用库的状态,其他进程的状态等
  • 它在一般意义上并不与您的代码交互,它只是定义了代码在什么情况下工作,在执行过程中可用的是什么。

这个答案在某种程度上只是我的意见,而不是事实或定义。

马特·波尔正确回答了。

我会用例子来说一下。

考虑运行一个在Turbo-Borland C / C ++(3.1版,1991年版)编译器中编译的程序,并让它运行在像Win 98/2000等32位版本的Windows下。

它是一个16位的编译器。 你会看到你所有的程序都有16位的指针。 为什么当你的操作系统是32位? 是啊! 这是因为你的编译器已经设置了16位的执行环境,32位版本的操作系统支持它。

通常所说的JRE(Java运行时环境)为Java程序提供了可能需要执行的所有资源。

实际上,运行时环境是虚拟机构思想的大脑产物。 虚拟机实现硬件和程序可能需要执行的“原始”接口。 运行时环境采用这些接口并提供给程序员使用。 编译器开发者将需要这些工具来为其程序提供执行环境。

将代码运行到您的代码到达的地方,您可以看到很多重要的代码。

运行时负责分配内存,释放内存,使用操作系统的子系统(文件服务,IO服务,networking服务等)

你的代码将被称为“工作在理论”,直到你实际上运行你的代码。 运行时是一个朋友,这有助于这个。

我发现下面的文件夹结构为理解什么是runtime了非常有洞察力的上下文:

Mozilla XulRunner的运行时

您可以看到有“ ”,有“ SDK ”或“软件开发工具包”,然后是Runtime ,例如。 在运行时运行的东西。 它的内容是这样的:

运行时“文件夹内容

win32 zip包含.exe -s和.dll -s。

所以,例如。 C运行时将是像这样的文件 – C运行时库,.so -s或.dll -s – 你在运行时运行,由他们(或他们的内容或目的)特别包含在C语言(在'纸'上),然后由你的C实现select实现。 然后你得到该实现的运行时间,使用它并build立它。

也就是说,有一点两极分化,新的基于C程序的用户将需要的可运行文件。 作为基于C的程序的开发者,你也是,但是你也需要C编译器和C库头文件; 用户不需要这些。

运行时可以表示当前的程序生命周期(运行时间/编译时间/加载时间/链接时间),也可以表示运行时库,它们构成与执行环境交互的基本低级别动作。 或者它可能意味着运行时系统,这与执行环境相同。

在C程序的情况下,运行时是设置堆栈的代码,C环境需要的堆等。 它基本上build立了语言所承诺的环境。 (它可能有一个运行时库组件,crt0.lib或者类似于C的情况)

运行时是在执行过程中不知道对象创buildtypes的实例,创build对象是基于某些条件或某些计算工作。 相反,编译时间是在执行之前所需的对象由您定义的实例。

MSDN文档的这些部分处理您的大部分问题: http : //msdn.microsoft.com/en-us/library/8bs2ecf4(VS.71).aspx

我希望这有帮助。

谢谢你,达米安

运行时与devise时和编译时/链接时相反。 从历史上看,它来自机器时间很昂贵的慢速大型机环境。

运行时间是程序运行的时间。 它从程序打开(或执行)开始,到程序退出或closures时结束。

运行时是一个技术术语,常用于软件开发。 它通常在“运行时错误”的上下文中出现,这是程序运行时发生的错误。 术语“运行时错误”用于区分程序运行之前发生的其他types的错误,例如语法错误和编译错误。

当程序处于运行阶段时,应用程序被加载到RAM中。 这包括可执行文件和程序引用的任何库,框架或其他文件。 程序退出时,运行时间结束,程序使用的内存可供其他程序使用。

程序执行期间已过去的时间。 但是这太一般了。 也就是说,在程序编译之后的持续时间,当操作系统向程序员提供配方来交互或者看到他开发的结果时,称为运行时。 在运行时不会出现语法错误等。 也就是说逻辑是正确的(技术上不是由业务造成的)。 所以在某种程度上,我们可以说compileTime是一个主要的级别,而运行时间是二级的。