He oído hablar de cosas como "C Runtime", "Visual C ++ 2008 Runtime", ".NET Common Language Runtime", etc.
- ¿Qué es exactamente el " tiempo de ejecución "?
- ¿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 realizar la 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 se parece más a la definición de la biblioteca, no al tiempo de ejecución?
¿Son "tiempo de ejecución" y " biblioteca de tiempo de ejecución " dos cosas diferentes?
AGREGAR 1
En estos días, creo que quizás Runtime tiene 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 estas 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, El camino hacia la tierra del hardware)
AGREGAR 2
El libro Expert C Programming: Deep C Secrets . El Capítulo 6 Estructuras de datos en tiempo de ejecución es una referencia útil para esta pregunta.
fuente
runtime library
más un código de control y un cierto estado (suministrado por el sistema operativo).Respuestas:
El tiempo de ejecución describe el software / las instrucciones que se ejecutan mientras su programa se está ejecutando, especialmente aquellas instrucciones que no escribió explícitamente, pero que son necesarias para la correcta ejecución de su código.
Los lenguajes de bajo nivel como C tienen un tiempo de ejecución muy pequeño (si lo hay). 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.
Tiene razón en que el código de tiempo de ejecución es 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 lenguaje en sí.
fuente
Tiempo de ejecución 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 .NET contiene un intérprete de lenguaje intermedio , un recolector de basura y más.
fuente
cout
oprintf
.Según Wikipedia: biblioteca de tiempo de ejecución / sistema de tiempo de ejecución .
Re: su edición , "tiempo de ejecución" y "biblioteca de tiempo de ejecución" son dos nombres diferentes para la misma cosa.
fuente
El tiempo de ejecución o el entorno de ejecución es la parte de una implementación del lenguaje que ejecuta código y está presente en tiempo de ejecución ; La parte en 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 consta de la máquina virtual y la biblioteca estándar
un tiempo de ejecución C común consiste en el cargador (que forma parte del sistema operativo) y la biblioteca de tiempo de ejecución, que implementa las partes del lenguaje C que el compilador no integra en el ejecutable; en entornos alojados, esto incluye la mayoría de las partes de la biblioteca estándar
fuente
Según tengo entendido, 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 / tiempo de ejecución o en tiempo de compilación.
Creo que el tiempo de ejecución y la biblioteca de tiempo de ejecución 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 tiempo de ejecución se puede extender para incluir también el entorno y el contexto del programa cuando se ejecuta, por lo tanto:
Esta respuesta es, en cierta medida, solo mi opinión, no un hecho o definición.
fuente
Matt Ball respondió correctamente. 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 en una versión de Windows de 32 bits como Win 98/2000, etc.
Es un compilador de 16 bits. Y verá que todos sus 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 lo admite.
Lo que comúnmente se llama JRE (Java Runtime Environment) proporciona un programa Java con todos los recursos que puede necesitar para ejecutar.
En realidad, el entorno de tiempo de ejecución es el producto cerebral 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.
fuente
Ejecute el tiempo exactamente donde su código cobra vida y puede ver muchas cosas importantes que hace su código.
El tiempo de ejecución tiene la responsabilidad de asignar memoria, liberar memoria, usar el subsistema del sistema operativo como (Servicios de archivo, Servicios IO ... Servicios de red, etc.)
Su código se llamará "TRABAJANDO EN TEORÍA" hasta que prácticamente lo ejecute. y Runtime es un amigo que ayuda a lograr esto.
fuente
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 / tiempo de enlace) o podría significar una biblioteca de tiempo de ejecución, que forma las acciones básicas de bajo nivel que interactúan 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 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 configura 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)
fuente
Descubrí que la siguiente estructura de carpetas crea un contexto muy perspicaz para comprender lo que
runtime
es:Puede ver que existe la ' fuente ', está el ' SDK ' o 'Kit de desarrollo de software' y luego está el
Runtime
, por ejemplo. las cosas que se ejecutan, en tiempo de ejecución. Sus contenidos son como:El zip win32 contiene .exe -s y .dll -s.
Entonces, por ejemplo. el tiempo de ejecución C serían los archivos como este: bibliotecas de tiempo de ejecución C, .so-s o .dll -s, que ejecuta en tiempo de ejecución, hecho especial por su inclusión (o sus contenidos o propósitos) en la definición de Lenguaje C (en 'papel'), luego implementado por su implementación C de elección. Y luego obtienes el tiempo de ejecución de esa implementación, para usarla y construir sobre ella.
Es decir, con un poco de 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, tú también, pero también necesitas el compilador de C y los encabezados de la biblioteca de C; los usuarios no los necesitan.
fuente
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 de RAM) para ejecutarse.
fuente
Si mi comprensión al leer las respuestas anteriores es correcta, el tiempo de ejecución es básicamente 'procesos en segundo plano', como la recolección de basura, la asignación de memoria, básicamente cualquier proceso que se invoque indirectamente, por las bibliotecas / marcos en los que está escrito su código, y específicamente aquellos procesos que ocurren después de la compilación, mientras se ejecuta la aplicación.
fuente
Estas secciones de la documentación de MSDN tratan la mayoría de sus preguntas: http://msdn.microsoft.com/en-us/library/8bs2ecf4(VS.71).aspx
Espero que esto ayude.
Gracias Damian
fuente
El tiempo de ejecución es la instancia en la que no sabe qué tipo de objetos crea durante su ejecución, la creación de objetos se basa en ciertas condiciones o en algún trabajo de cálculo. Por el contrario, el tiempo de compilación es la instancia en la que usted define los objetos necesarios antes de sus ejecuciones.
fuente
El tiempo de ejecución es algo opuesto al tiempo de diseño y tiempo de compilación / tiempo de enlace. Históricamente proviene de un entorno lento de mainframe donde el tiempo de máquina era costoso.
fuente