terminology

terminology - ¿Qué es el "tiempo de ejecución"?



terminology synonym (14)

He oído hablar de cosas como "C Runtime", "Visual C ++ 2008 Runtime", ".NET Common Language Runtime", etc.

  • ¿Qué es exactamente " runtime "?
  • ¿De qué está hecho?
  • ¿Cómo interactúa con mi código? O tal vez más precisamente, ¿cómo controla mi código?

Al codificar el lenguaje ensamblador en Linux, podría usar la instrucción INT para hacer una llamada al sistema. Entonces, ¿el tiempo de ejecución no es más que un montón de funciones prefabricadas que envuelven la función de bajo nivel en funciones más abstractas y de alto nivel? ¿Pero no parece esto más como la definición para la biblioteca, no para el tiempo de ejecución?

¿Son "runtime" y " runtime library " dos cosas diferentes?

AGREGAR 1

En estos días, estoy pensando que quizás Runtime tenga algo en común con la llamada Máquina Virtual , como JVM. Aquí está la cita que lleva a tal pensamiento:

Este proceso de compilación es lo suficientemente complejo como para dividirse en varias capas de abstracción, y generalmente involucran tres traductores: un compilador, una implementación de máquina virtual y un ensamblador. --- Los elementos de los sistemas informáticos (Introducción, The Road Down to Hardware Land)

AGREGAR 2

El libro Expert C Programming: Deep C Secrets . Capítulo 6 Estructuras de datos en tiempo de ejecución es una referencia útil a esta pregunta.


Descubrí que la siguiente estructura de carpetas crea un contexto muy perspicaz para comprender qué es el runtime :

Puede ver que existe la '' fuente '', el '' SDK '' o el ''Software Development Kit'' y luego está el Runtime , por ejemplo. las cosas que se ejecutan - en tiempo de ejecución. Sus contenidos son como:

El zip de win32 contiene .exe -s y .dll -s.

Así por ejemplo. el tiempo de ejecución de C sería el siguiente: bibliotecas de tiempo de ejecución de C, .so-s o .dll -s: se ejecuta en el tiempo de ejecución, hecho especial por su inclusión (o su contenido o propósitos) en la definición de Lenguaje C (en ''papel''), luego implementado por la implementación de C que elija. Y luego obtienes el tiempo de ejecución de esa implementación, para usarla y desarrollarla.

Es decir, con una pequeña polarización, los archivos ejecutables que necesitarán los usuarios de su nuevo programa basado en C. Como desarrollador de un programa basado en C, usted también lo necesita, pero también necesita el compilador de C y los encabezados de la biblioteca de C; Los usuarios no los necesitan.


Ejecute el tiempo exacto donde su código cobra vida y puede ver muchas de las cosas importantes que hace su código.

Runtime tiene la responsabilidad de asignar memoria, liberar memoria, usar un subsistema del sistema operativo como (Servicios de archivos, Servicios de E / S, Servicios de red, etc.)

Su código se llamará "TRABAJAR EN LA TEORÍA" hasta que prácticamente ejecute su código. y Runtime es un amigo que ayuda a lograr esto.


El entorno de ejecución o ejecución es la parte de una implementación de lenguaje que ejecuta código y está presente en tiempo de ejecución ; La parte de tiempo de compilación de la implementación se denomina entorno de traducción en el estándar C.

Ejemplos:

  • El tiempo de ejecución de Java consiste en la máquina virtual y la biblioteca estándar

  • un tiempo de ejecución de C común consiste en el cargador (que es parte del sistema operativo) y la biblioteca de tiempo de ejecución, que implementa las partes del lenguaje C que no están integradas en el ejecutable por el compilador; en entornos alojados, esto incluye la mayoría de las partes de la biblioteca estándar


El tiempo de ejecución básicamente significa cuando el programa interactúa con el hardware y el sistema operativo de una máquina. C no tiene su propio tiempo de ejecución, sino que solicita el tiempo de ejecución de un sistema operativo (que es básicamente una parte del ram) para ejecutarse.


El tiempo de ejecución es algo opuesto al tiempo de diseño y tiempo de compilación / enlace. Históricamente, proviene de un entorno de mainframe lento donde el tiempo de la máquina era costoso.


El tiempo de ejecución es la instancia en la que no se sabe qué tipo de objetos se crean durante su ejecución, la creación de objetos se basa en cierta condición o en algún trabajo de cálculo. Al contrario, el tiempo de compilación es la instancia donde usted define los objetos requeridos antes de su ejecución.


En mi opinión, el tiempo de ejecución es exactamente lo que significa: el momento en que se ejecuta el programa. Puede decir que algo sucede en tiempo de ejecución / ejecución o en tiempo de compilación.

Creo que las bibliotecas runtime y runtime deberían ser (si no lo son) dos cosas separadas. "C runtime" no me parece correcto. Lo llamo "biblioteca de tiempo de ejecución C".

Respuestas a sus otras preguntas: creo que el término runtime se puede ampliar para incluir también el entorno y el contexto del programa cuando se ejecuta, por lo que:

  • consiste en todo lo que se puede llamar "entorno" durante el tiempo en que se ejecuta el programa, por ejemplo, otros procesos, el estado del sistema operativo y las bibliotecas utilizadas, el estado de otros procesos, etc.
  • no interactúa con su código en un sentido general, simplemente define en qué circunstancias funciona su código, qué está disponible durante la ejecución.

Esta respuesta es, hasta cierto punto, solo mi opinión, no un hecho o definición.



Matt Ball respondió correctamente. Yo diría al respecto con ejemplos.

Considere ejecutar un programa compilado en el compilador Turbo-Borland C / C ++ (versión 3.1 del año 1991) y deje que se ejecute bajo una versión de Windows de 32 bits como Win 98/2000, etc.

Es un compilador de 16 bits. Y verás que todos tus programas tienen punteros de 16 bits. ¿Por qué es así cuando su sistema operativo es de 32 bits? Debido a que su compilador ha configurado el entorno de ejecución de 16 bits y la versión de 32 bits del sistema operativo es compatible.

Lo que comúnmente se llama JRE (Java Runtime Environment) proporciona un programa Java con todos los recursos que puede necesitar ejecutar.

En realidad, el entorno de ejecución es producto del cerebro de la idea de las máquinas virtuales. Una máquina virtual implementa la interfaz sin formato entre el hardware y lo que un programa puede necesitar ejecutar. El entorno de ejecución adopta estas interfaces y las presenta para el uso del programador. Un desarrollador de compiladores necesitaría estas facilidades para proporcionar un entorno de ejecución para sus programas.


Runtime describe el software / las instrucciones que se ejecutan mientras se ejecuta su programa, especialmente aquellas instrucciones que no escribió explícitamente, pero que son necesarias para la ejecución correcta de su código.

Los lenguajes de bajo nivel como C tienen un tiempo de ejecución muy pequeño (si existe). Los lenguajes más complejos como Objective-C, que permite el paso dinámico de mensajes, tienen un tiempo de ejecución mucho más extenso.

Es correcto que el código de tiempo de ejecución sea un código de biblioteca, pero el código de biblioteca es un término más general que describe el código producido por cualquier biblioteca. El código de tiempo de ejecución es específicamente el código requerido para implementar las características del propio lenguaje.


Runtime es un término general que se refiere a cualquier biblioteca, marco o plataforma en la que se ejecuta su código.

Los tiempos de ejecución de C y C ++ son colecciones de funciones.

El tiempo de ejecución de .NET contiene un intérprete de lenguaje intermedio , un recolector de basura, y más.


Según Wikipedia: sistema de tiempo de ejecución / biblioteca en tiempo de ejecución .

En la programación de computadoras, una biblioteca de tiempo de ejecución es una biblioteca de programas especial utilizada por un compilador, para implementar funciones integradas en un lenguaje de programación, durante el tiempo de ejecución (ejecución) de un programa de computadora. Esto a menudo incluye funciones para entrada y salida, o para administración de memoria.

Un sistema de tiempo de ejecución (también llamado sistema de tiempo de ejecución o simplemente tiempo de ejecución) es un software diseñado para soportar la ejecución de programas de computadora escritos en algún lenguaje de computadora. El sistema de tiempo de ejecución contiene implementaciones de comandos básicos de bajo nivel y también puede implementar comandos de nivel superior y puede admitir la verificación de tipos, depuración e incluso la generación y optimización de código. El programador puede acceder a algunos servicios del sistema en tiempo de ejecución a través de una interfaz de programación de aplicaciones, pero otros servicios (como la programación de tareas y la administración de recursos) pueden ser inaccesibles.

Re: su edición , "runtime" y "runtime library" son dos nombres diferentes para la misma cosa.


Tiempo transcurrido durante la ejecución del programa. Pero esto es demasiado general. Decir, la duración después de la compilación del programa, cuando el sistema operativo presenta la receta al programador para interactuar o ver los resultados de lo que ha desarrollado, se denomina tiempo de ejecución. No se presentan errores de sintaxis, etc. en tiempo de ejecución. Es decir, la lógica es correcta (técnicamente no es perspetiva para el negocio). Entonces, de alguna manera, podemos decir que compileTime es un nivel primario mientras que el tiempo de ejecución es un nivel secundario.


un tiempo de ejecución podría denotar la fase actual de la vida del programa (tiempo de ejecución / tiempo de compilación / tiempo de carga / enlace) o podría significar una biblioteca de tiempo de ejecución, que forma las acciones básicas de bajo nivel que se interconectan con el entorno de ejecución. o podría significar un sistema de tiempo de ejecución, que es lo mismo que un entorno de ejecución.

en el caso de los programas en C, el tiempo de ejecución es el código que configura la pila, el montón, etc., que es un requisito esperado por el entorno C. Esencialmente establece el entorno que promete el lenguaje. (Podría tener un componente de biblioteca de tiempo de ejecución, crt0.lib o algo así en el caso de C)