Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ActividadU31 Ensayo-Garcia Giron Lopez Lopez
ActividadU31 Ensayo-Garcia Giron Lopez Lopez
ENSAYO
ALUMNO (A):
INSTITUTO TECNOLÓGICO SUPERIOR DE
Licenciatura en:
Ingeniería en Sistemas Computacionales.
TEZIUTLÁN
Materia:
Lenguajes y Autómatas II
ASESOR (A):
Carreón Romero María Eugenia
Para implementar con precisión las abstracciones definidas en el lenguaje fuente, los compiladores crean y
administran entornos en tiempo de ejecución donde se supone que se ejecutan los programas destino. Estos
entornos son responsables de:
Los entornos en tiempo de ejecución permiten a los compiladores dar soporte a conceptos como nombres,
alcances, enlaces, tipos de datos, operadores, procedimientos, parámetros y construcciones de flujo de control en
la máquina destino.
Este capítulo se centrará en dos temas principales relacionados con los entornos en tiempo de ejecución:
También se profundizará en la gestión de la memoria, incluida la asignación de la pila, la gestión del montículo de
datos.
DESARROLLO.
Los entornos en tiempo de ejecución son componentes esenciales de los lenguajes de programación que
proporcionan un entorno para la ejecución de programas. Sirven como interfaz entre el código fuente del
programa y el sistema operativo subyacente. Una de las funciones principales de los entornos en tiempo de
ejecución es organizar el almacenamiento de datos y código en varias áreas de memoria, cada una con un
propósito específico.
Pila: La pila es una estructura de datos de tipo LIFO (último en entrar, primero en salir) que almacena
información sobre las llamadas a funciones activas. Cada vez que se llama a una función, se crea un nuevo
registro de activación en la pila. Este registro contiene información sobre la llamada a la función
José Antonio García Reyes
actual, como las variables locales, los parámetros y la dirección de retorno. Cuando la función retorna, su registro
de activación se elimina de la pila.
Montículo de datos: El montículo de datos es un área de memoria que almacena variables globales y estáticas, así
como objetos creados dinámicamente. A diferencia de la pila, el montículo de datos no sigue una organización
LIFO. En su lugar, los datos se asignan de forma contigua y se accede a ellos mediante punteros.
Registros: Los registros son ubicaciones de almacenamiento de alta velocidad que se encuentran dentro de la
CPU. Proporcionan acceso rápido a los datos que se utilizan con frecuencia, como variables temporales, punteros
y direcciones de memoria. Los registros suelen estar organizados en conjuntos, con cada conjunto dedicado a un
tipo particular de dato o propósito.
La pila juega un papel crucial en la gestión de la memoria para las llamadas a funciones. Cuando se llama a una
función, se crea un nuevo registro de activación en la parte superior de la pila. Este registro contiene espacio para
las variables locales de la función, los parámetros pasados a la función y la dirección de retorno a la que debe
saltar la función cuando retorna.
La asignación de espacio en la pila se realiza de forma automática por el compilador. El compilador determina el
tamaño de cada registro de activación en función del número y tipo de variables locales y parámetros utilizados
por la función.
Las funciones a menudo necesitan acceder a datos que no están definidos localmente dentro de su propio ámbito.
Estos datos pueden incluir variables globales, variables estáticas y argumentos pasados por referencia. Para
acceder a estos datos no locales, los registros de activación utilizan punteros de entorno.
Los punteros de entorno son punteros que apuntan al registro de activación de la función que contiene los datos no
locales. Estos punteros se almacenan en los registros de activación de las funciones que necesitan acceder a los
datos no locales.
Conclusión
José Antonio García Reyes
La organización del almacenamiento en los entornos en tiempo de ejecución es esencial para la ejecución eficiente
de los programas. La pila proporciona un mecanismo para gestionar las llamadas a funciones y almacenar
variables locales y parámetros. El montículo de datos almacena variables globales y estáticas, así como objetos
creados dinámicamente. Los registros proporcionan acceso rápido a los datos utilizados con frecuencia. Esta
organización permite que los programas se ejecuten de manera eficiente y accedan a los datos de manera rápida y
fiable.
DISCUSIÓN DE DATOS.
NOMBRE ESTILO DE PROGRAMACIÓN NUM. TIEMPO
REPETICIONES
Programa 1 Bloque principal de variables principales 100,000 8.26 s
(fuera del ciclo).
Programa 1 Bloque principal de variables principales 1,000,000 51.51 s
(fuera del ciclo).
Programa 2 Bloque principal de variables principales 100,000 9.42 s
(dentro del ciclo).
Programa 2 Bloque principal de variables principales 1,000,000 54.97 s
(dentro del ciclo).
Programa 3 Argumentos por la creación de objetos 100,000 18 .33 s
(variables principales dentro del ciclo).
Programa 3 Argumentos por la creación de objetos 1,000,000 1m 37s
(variables principales dentro del ciclo).
Programa 4 Argumentos por la creación de objetos 100,000 13.80 s
(variables principales fuera del ciclo).
Programa 4 Argumentos por la creación de objetos 1,000,000 1m 30s
(variables principales fuera del ciclo).
Programa 5 Programación con métodos (variables 100,000 10.95 s
principales fuera del ciclo).
Programa 5 Programación con métodos (variables 1,000,000 1m 28s
principales fuera del ciclo).
Programa 6 Programación con métodos (variables 100,000 15.12 s
principales dentro del ciclo).
Programa 6 Programación con métodos (variables 1,000,000 1m 35s
principales dentro del ciclo).
CONCLUSION.
Al momento en que se declaran las variables principales dentro del ciclo for, estas se inicializan cada vez que el
ciclo vuelve a empezar, por eso es que tarda mas a diferencia de cuando se declaran las variables principales
fuera, ya que solo se declaran una vez y luego solo cambian su valor. En cuanto a los tiempos de cada programa,
se puede observar que los tiempos mas rápidos pertenecen al programa 1 y 2, ya que estos utilizan una sola clase y
consume menos recursos que los demás programas. En segundo lugar se observa que los programas 3 y 4 son mas
rápidos que los 5 y 6, debido a que el 3 y 4
José Antonio García Reyes
utilizan una misma clase, pero su método principal manda a llamar métodos creados fuera de él. Y por ultimo se
concluye que los programas 5 y 6 son mas lentos porque mandan a traer clases externas que contienen métodos.
REFERENCIAS.
https://tie.teziutlan.tecnm.mx/m24/pluginfile.php/32417/mod_resource/content/1/Le
ctura1_Compiladores.pdf