Articulo de referencia

Sistema de tiempo de ejecución

En programación informática , un sistema de tiempo de ejecución , o simplemente tiempo de ejecución, es un subsistema que existe tanto en el ordenador donde se crea un programa ...

En programación informática , un sistema de tiempo de ejecución , o simplemente tiempo de ejecución, es un subsistema que existe tanto en el ordenador donde se crea un programa como en los ordenadores donde se pretende ejecutarlo. El nombre proviene de la división entre tiempo de compilación y tiempo de ejecución en los lenguajes compilados , que distingue de forma similar los procesos informáticos implicados en la creación de un programa (compilación) y su ejecución en la máquina de destino (tiempo de ejecución). [ 1 ] Un entorno de tiempo de ejecución (RTE) es el contexto en el que opera un tiempo de ejecución.

La mayoría de los lenguajes de programación cuentan con algún tipo de sistema de ejecución que proporciona un entorno en el que se ejecutan los programas. Este entorno puede abordar diversos aspectos, como la gestión de la memoria de la aplicación , el acceso del programa a las variables , los mecanismos para pasar parámetros entre procedimientos y la interacción con el sistema operativo (SO), entre otros. El compilador realiza suposiciones en función del sistema de ejecución específico para generar código correcto. Normalmente, el sistema de ejecución se encarga de configurar y gestionar la pila y el montón , y puede incluir características como la recolección de basura , los hilos u otras características dinámicas integradas en el lenguaje. [ 1 ]

Descripción general

Cada lenguaje de programación especifica un modelo de ejecución , y muchos implementan al menos una parte de ese modelo en un sistema de tiempo de ejecución. Una posible definición del comportamiento del sistema de tiempo de ejecución, entre otras, es "cualquier comportamiento que no sea directamente atribuible al programa en sí". Esta definición incluye colocar parámetros en la pila antes de las llamadas a funciones, la ejecución paralela de comportamientos relacionados y la entrada/salida de disco .

Según esta definición, prácticamente todos los lenguajes tienen un sistema de ejecución, incluidos los lenguajes compilados , los lenguajes interpretados y los lenguajes específicos de dominio integrados . Incluso los modelos de ejecución independientes invocados por API , como Pthreads ( hilos POSIX ), tienen un sistema de ejecución que implementa el comportamiento del modelo de ejecución.

La mayoría de los artículos académicos sobre sistemas de tiempo de ejecución se centran en los detalles de implementación de sistemas de tiempo de ejecución paralelos. Un ejemplo notable de un sistema de tiempo de ejecución paralelo es Cilk , un modelo de programación paralela muy popular. [ 2 ] El kit de herramientas proto-runtime se creó para simplificar la creación de sistemas de tiempo de ejecución paralelos. [ 3 ]

Además del comportamiento del modelo de ejecución, un sistema de tiempo de ejecución también puede realizar servicios de soporte como verificación de tipos , depuración o generación y optimización de código . [ 4 ]

Relación con los entornos de ejecución

El sistema de ejecución es también la puerta de enlace a través de la cual un programa en ejecución interactúa con el entorno de ejecución . El entorno de ejecución incluye no solo valores de estado accesibles, sino también entidades activas con las que el programa puede interactuar durante su ejecución. Por ejemplo, las variables de entorno son características de muchos sistemas operativos y forman parte del entorno de ejecución; un programa en ejecución puede acceder a ellas a través del sistema de ejecución. Del mismo modo, los dispositivos de hardware, como discos o unidades de DVD, son entidades activas con las que un programa puede interactuar a través del sistema de ejecución.

Una aplicación singular de un entorno de ejecución es su uso dentro de un sistema operativo que solo permite su ejecución. En otras palabras, desde el arranque hasta el apagado, todo el sistema operativo se dedica exclusivamente a las aplicaciones que se ejecutan en dicho entorno. Cualquier otro código que intente ejecutarse, o cualquier fallo en las aplicaciones, interrumpirá el entorno de ejecución. La interrupción del entorno de ejecución, a su vez, provoca la interrupción del sistema operativo, deteniendo todo el procesamiento y requiriendo un reinicio. Si el arranque se realiza desde memoria de solo lectura, se crea un sistema seguro y de misión única.

Algunos ejemplos de estos sistemas de tiempo de ejecución integrados directamente son:

Ejemplos

El sistema de ejecución del lenguaje C es un conjunto específico de instrucciones que el compilador inserta en el archivo ejecutable. Entre otras cosas, estas instrucciones gestionan la pila de procesos, crean espacio para variables locales y copian los parámetros de las llamadas a funciones en la parte superior de la pila.

A menudo, no existen criterios claros para determinar qué comportamientos del lenguaje pertenecen al sistema de ejecución y cuáles pueden ser determinados por un programa fuente específico. Por ejemplo, en C, la configuración de la pila forma parte del sistema de ejecución. No está determinada por la semántica de un programa individual, ya que su comportamiento es globalmente invariante: se mantiene en todas las ejecuciones. Este comportamiento sistemático implementa el modelo de ejecución del lenguaje, en lugar de implementar la semántica de un programa en particular (en cuyo caso el texto se traduce directamente en código que calcula resultados).

Esta separación entre la semántica de un programa y el entorno de ejecución se refleja en las distintas formas de compilar un programa: compilar el código fuente a un archivo objeto que contiene todas las funciones frente a compilar un programa completo a un binario ejecutable. El archivo objeto solo contendrá el código ensamblador relevante para las funciones incluidas, mientras que el binario ejecutable contendrá código adicional que implementa el entorno de ejecución. Por un lado, el archivo objeto puede carecer de información del entorno de ejecución que se resolverá mediante el enlace . Por otro lado, el código del archivo objeto aún depende de supuestos del sistema de ejecución; por ejemplo, una función puede leer parámetros de un registro o ubicación de pila específicos, según la convención de llamada utilizada por el entorno de ejecución.

Otro ejemplo es el uso de una interfaz de programación de aplicaciones (API) para interactuar con un sistema de ejecución. Las llamadas a esta API se ven igual que las llamadas a una biblioteca de software convencional ; sin embargo, en algún punto de la llamada, el modelo de ejecución cambia. El sistema de ejecución implementa un modelo de ejecución distinto al del lenguaje en el que está escrita la biblioteca. Una persona que lea el código de una biblioteca normal podría comprender su comportamiento con solo conocer el lenguaje en el que está escrita. Sin embargo, una persona que lea el código de la API que invoca un sistema de ejecución no podría comprender el comportamiento de la llamada a la API solo con conocer el lenguaje en el que está escrita. En algún momento, mediante algún mecanismo, el modelo de ejecución deja de ser el del lenguaje en el que está escrita la llamada y cambia al modelo de ejecución implementado por el sistema de ejecución. Por ejemplo, la instrucción trap es un método para cambiar los modelos de ejecución. Esta diferencia es lo que distingue un modelo de ejecución invocado por una API, como Pthreads, de una biblioteca de software convencional. Tanto las llamadas a Pthreads como las llamadas a bibliotecas de software se invocan a través de una API, pero el comportamiento de Pthreads no se puede comprender en términos del lenguaje de la llamada. En cambio, las llamadas a Pthreads ponen en juego un modelo de ejecución externo, implementado por el sistema de tiempo de ejecución de Pthreads (este sistema de tiempo de ejecución suele ser el núcleo del sistema operativo).

Como ejemplo extremo, la CPU física puede considerarse una implementación del sistema de ejecución de un lenguaje ensamblador específico. Desde esta perspectiva, el modelo de ejecución se implementa mediante la CPU física y los sistemas de memoria. De forma análoga, los sistemas de ejecución de lenguajes de alto nivel se implementan a su vez utilizando otros lenguajes. Esto crea una jerarquía de sistemas de ejecución, donde la propia CPU —o, más concretamente, su lógica en la capa de microcódigo o inferior— actúa como el sistema de ejecución de nivel más bajo.

Funciones avanzadas

Algunos lenguajes compilados o interpretados proporcionan una interfaz que permite que el código de la aplicación interactúe directamente con el sistema de ejecución. Un ejemplo es la Threadclase `init` del lenguaje Java . Esta clase permite que el código (ejecutado por un hilo) realice acciones como iniciar y detener otros hilos. Normalmente, aspectos fundamentales del comportamiento de un lenguaje, como la planificación de tareas y la gestión de recursos, no son accesibles de esta manera.

Las funcionalidades de nivel superior implementadas por un sistema de ejecución pueden incluir tareas como dibujar texto en la pantalla o establecer una conexión a Internet. A menudo, los sistemas operativos también proporcionan este tipo de funcionalidades y, cuando están disponibles, el sistema de ejecución se implementa como una capa de abstracción que traduce la invocación del sistema de ejecución en una invocación del sistema operativo. Esto oculta la complejidad o las variaciones en los servicios que ofrecen los diferentes sistemas operativos. Esto también implica que el núcleo del sistema operativo puede considerarse un sistema de ejecución y que el conjunto de llamadas al sistema operativo que invocan sus funcionalidades puede considerarse como interacciones con dicho sistema.

En el límite, el sistema de tiempo de ejecución puede proporcionar servicios como una máquina de código P o una máquina virtual , que ocultan incluso el conjunto de instrucciones del procesador . Este es el enfoque que siguen muchos lenguajes interpretados como AWK y algunos lenguajes como Java , que están diseñados para compilarse en un código de representación intermedio independiente de la máquina (como el bytecode ). Esta disposición simplifica la tarea de implementación del lenguaje y su adaptación a diferentes máquinas, y mejora la eficiencia de características sofisticadas del lenguaje, como la programación reflexiva . También permite que el mismo programa se ejecute en cualquier máquina sin un paso de recompilación explícito, una característica que se ha vuelto muy importante desde la proliferación de la World Wide Web . Para acelerar la ejecución, algunos sistemas de tiempo de ejecución ofrecen compilación justo a tiempo a código máquina.

Un aspecto moderno de los sistemas de ejecución es el comportamiento de ejecución paralela, como el que presentan las construcciones de mutex en Pthreads y las construcciones de secciones paralelas en OpenMP . Un sistema de ejecución con este tipo de comportamiento de ejecución paralela puede modularizarse según el enfoque de proto-tiempo de ejecución.

Historia

Ejemplos notables de sistemas de tiempo de ejecución son los intérpretes de BASIC y Lisp . Estos entornos también incluían un recolector de basura . Forth es un ejemplo temprano de un lenguaje diseñado para ser compilado en código de representación intermedia; su sistema de tiempo de ejecución era una máquina virtual que interpretaba ese código. Otro ejemplo popular, aunque teórico, es la computadora MIX de Donald Knuth .

En C y lenguajes posteriores que admitían la asignación dinámica de memoria, el sistema de tiempo de ejecución también incluía una biblioteca que gestionaba el conjunto de memoria del programa.

En los lenguajes de programación orientados a objetos , el sistema de tiempo de ejecución también solía ser responsable de la comprobación dinámica de tipos y de la resolución de referencias a métodos.

Véase también

Referencias

  1. 1 2 Aho, Alfred V. ; Lam, Monica Sin-Ling ; Sethi, Ravi ; Ullman, Jeffrey David (2007). Compiladores: Principios, técnicas y herramientas (2.ª  ed.). Boston, MA, EE. UU.: Pearson Education . p. 427 . ISBN  978-0-321-48681-3El compilador debe cooperar con el sistema operativo y otros programas del sistema para admitir estas abstracciones en la máquina de destino .
  2. Blumofe, Robert David [en alemán] ; Joerg, Christopher F.; Kuszmaul, Bradley C.; Leiserson, Charles E.; Randall, Keith H.; Zhou, Yuli (agosto de 1995). «Cilk: Un sistema de ejecución multihilo eficiente». Actas del quinto simposio ACM SIGPLAN sobre principios y práctica de la programación paralela . Association for Computing Machinery (ACM). págs. 207–216 . doi : 10.1145/209936.209958 . ISBN  9780897917001. S2CID 221936412 . 
  3. Open Source Research Institute (2011). "Bienvenido a la página principal de Proto-Runtime Toolkit" . Proto-Runtime Toolkit (PRT) . Archivado del original el 11 de febrero de 2020. Consultado el 11 de enero de 2020 .
  4. Appel, Andrew Wilson (mayo de 1989). "Un sistema de tiempo de ejecución" (PDF) . Universidad de Princeton . Archivado del original (PDF) el 30 de diciembre de 2013. Recuperado el 30 de diciembre de 2013 .
  5. "Implementación de StoffelVM" . Documentación de Stoffel . Consultado el 29 de enero de 2026 .
  6. "Mira lo nuevo en la biblioteca de aplicaciones CP/M para IBM PC - Oferta de ahorro de tiempo - Obtén Concurrent CP/M gratis" (PDF) (Folleto del producto). Pacific Grove, California, EE. UU.: Digital Research, Inc. 1983. Archivado (PDF) del original el 11/02/2020 . Recuperado el 11/02/2020 . […] SpeedStart hace que nuestro software sea más fácil de usar. Todo el software en la biblioteca de aplicaciones CP/M tiene la nueva versión SpeedStart del sistema operativo CP/M integrada directamente en el disco del programa. Todo lo que tienes que hacer para usar estas aplicaciones es insertar el disco en tu IBM PC , encender el sistema y estarás listo para usarlo. Esto elimina la necesidad de cargar un sistema operativo separado, cambiar discos e iniciar el programa de aplicaciones. El software SpeedStart de la biblioteca de aplicaciones CP/M también: […] Le proporciona una versión de ejecución gratuita de CP/M […] Elimina la necesidad de instalar cada nuevo programa de aplicación […] Le ofrece compatibilidad con el potente sistema operativo de 16 bits de Digital Research , CP/M-86 , y con el sistema operativo multitarea Concurrent CP/M de última generación . […]
  7. "DRI lanza la versión de 128 KB de Dr. Logo" (PDF) . Micro Notes - Información técnica sobre productos de Digital Research . Vol. 2, n.º 2. Pacific Grove, CA, EE. UU.: Digital Research, Inc. Mayo de 1984. pág. 4. NWS-106-002. Archivado (PDF) del original el 11 de febrero de 2020. Consultado el 11 de febrero de 2020. […] Dr. Logo apareció por primera vez en el mercado minorista en otoño de 1983 para el IBM PC y alcanzó la cima de la lista de productos más vendidos de Softsel . La versión comercial incluía SpeedStart CP/M , una versión abreviada de CP/M que se inicia automáticamente al encender el sistema. […]   
  8. Digital Research Inc. (febrero de 1984). "¡Presentamos software para IBM PC con un bono de $350!" . BYTE ( Anuncio). Vol. 9, n.° 2, págs. 216–217 . Consultado el 22 de octubre de 2013 .   
  9. Digital Research Inc. (7 de febrero de 1984). «¡Presentamos software para IBM PC con un bono de $350!» . PC Magazine (Anuncio). Vol. 3, n.º 2. PC Communications Corp. págs. 50–51 . ISSN 0745-2500 . Archivado del original el 11 de febrero de 2020. Consultado el 11 de febrero de 2020 .    
  10. Digital Research Inc. (diciembre de 1983). "¡Presentamos software para IBM PC con un bono de $350!" . PC Magazine (Anuncio). Vol. 2, n.° 7. PC Communications Corp. págs. 306–307 . ISSN 0745-2500 . Archivado del original el 11 de febrero de 2020. […] Presentamos SpeedStart : el exclusivo sistema de software de carga y uso. La biblioteca de aplicaciones CP/M ofrece más que el mejor software de marca para IBM PC del mercado. Cada una de nuestras aplicaciones ofrece la comodidad inigualable de nuestro exclusivo sistema de disco único SpeedStart. SpeedStart es una versión especial del potente sistema operativo CP/M-86 que está integrado en cada uno de nuestros discos de software. Cuando esté listo para trabajar, simplemente cargue el disco, encienda su IBM PC ¡y listo! SpeedStart elimina la tarea que consume mucho tiempo de cargar un disco operativo por separado y luego "instalar" el software. De hecho, el sistema SpeedStart te permite trabajar de forma más rápida y sencilla que cualquier otro software disponible actualmente. Y lo mejor de todo: es tuyo sin coste adicional. Además, SpeedStart puede omitirse para ejecutar software bajo el sistema operativo del futuro para IBM PC: el extraordinario Concurrent CP/M multitarea . […]    
  11. 1 2 3 Krautter, Thomas; Barnes, Chris J. (14-06-2006) [29-12-1999]. "GEM/4" . Desarrollo de GEM . Archivado del original el 16-03-2013 . Recuperado el 12-01-2020 . [...] el sistema operativo Artline 2 ha sido GEM/4 [...] todos los cambios en GEM/4 se han realizado en cooperación con Lee Lorenzen y Don Heiskell para mantener la compatibilidad con el editor Ventura . [...]
  12. Elliott, John C. (1999-05-09). "Una comparación entre GEM y ViewMAX" . Seasip.info . Archivado del original el 2016-11-07 . Recuperado el 2016-11-07 .
  13. ^ Paul, Matthias R. (13 de abril de 1997) [1993]. DRDOS6UN.TXT - Zusammenfassung der dokumentierten und undokumentierten Fähigkeiten von DR DOS 6.0 (en alemán) (60 ed.). Archivado desde el original el 7 de noviembre de 2016 . Consultado el 7 de noviembre de 2016 . {{cite book}}: |work=ignorado ( ayuda )
  14. ^ Paul, Matthias R. (7 de junio de 1997) [1994]. NWDOS7UN.TXT - Zusammenfassung der dokumentierten und undokumentierten Fähigkeiten von Novell DOS 7 (en alemán) (85 ed.). Archivado desde el original el 7 de noviembre de 2016 . Consultado el 7 de noviembre de 2016 . {{cite book}}: |work=ignorado ( ayuda )
  15. Georgiev, Luchezar I. (2008-11-02). "Versión en tiempo de ejecución de 4DOS, BATCOMP y cifrado de archivos por lotes" . Archivo del grupo de noticias Narkive . Grupo de noticias : comp.os.msdos.4dos . Archivado del original el 11 de enero de 2020. Recuperado el 11 de enero de 2020 . 

Lecturas adicionales

  • "NAME ENTX - Control del sistema de ejecución de Microsoft MS-DOS Computer Pascal" . 1.00. Microsoft Corp. 1981. Consultado el 23 de septiembre de 2018 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )