Está en la página 1de 2

Carreras: Licenciatura en Sistemas

Asignatura: Fundamentos de Lenguajes de Programación

TRABAJO PRACTICO N° 4
Tema: Gestión de Almacenamiento

Apoyo Bibliográfico: Lenguajes de Programación: Diseño e Implementación: T. Pratt y M. Zelkowitz –


Prentice Hall

1. Analizar las técnicas de gestión de almacenamiento que se usan en una implementación de


lenguaje que tenga conocimiento. Considere los diversos elementos que requieren
almacenamiento (sección 5.4.1 del libro de Pratt). ¿Hay otras estructuras importantes en
ejecución que requieren almacenamiento, además de las mencionadas?

2. Analizar las operaciones primitivas que usan en un lenguaje como Java u otro lenguaje a
elección. ¿Cuáles operaciones requieren que se asigne o libere almacenamiento? ¿Es el
tamaño del bloque de almacenamiento siempre el mismo, o se requieren bloques de tamaño
variable? ¿Se asigna y libera almacenamiento solo al entrar o salir de un subprograma, o en
puntos impredecibles durante la ejecución? ¿Se puede probar que se requiere un montículo
de tamaño fijo o bloques de tamaño variable? ¿Se puede probar que una sola pila central es
suficiente?

3. En teoría, los programas en Pascal permiten utilizar 64KB de memoria estática. Esto
generalmente no es suficiente para aplicaciones reales, por eso Pascal nos permite acceder a
un sector de memoria que puede administrar el programador, tomando y liberando memoria
arbitrariamente mientras las capacidades de la computadora lo permitan. En memoria
dinámica hay tres estructuras de datos principales, son: Listas, Pilas, y Colas.
Implementar un programa en Pascal donde se utilicen los operadores new() y dispose().
Realizar lo mismo en lenguaje C, utilizando los operadores new() y delete().

4. Gestión de memoria en pila:


En el siguiente código fuente escrito en lenguaje C, se indican varios puntos en los cuales se
pretende monitorizar el contenido de la pila y las variables globales, con el objeto de
comprobar la gestión de descriptores y variables locales en la pila.
Realizar una grafica donde muestre los contenidos de la pila en cada uno de los puntos
indicados sobre el código fuente.

int n=0;
char *a=&f1;
char f1=2;
char f2=4;
0
void main ( )
{
char ax, ln;
ax=3;
ln=6;
a=&f2;
f2=3;
suma (2*f1, f2-2)
a
ax=n; e
proc(2*f2,f1,1); f
}

char suma(char x, char y)


{
char temp, l, m;
temp= x+1;
l=temp*2;
m=temp+l;
proc(temp, l, n);
b
return(m); d
}

- Página 1 de 2 -
Carreras: Licenciatura en Sistemas
Asignatura: Fundamentos de Lenguajes de Programación

TRABAJO PRACTICO N° 4
Tema: Gestión de Almacenamiento

void proc(char x, char y, char z)


{
char t=0;
char k=0;
f1=x+y-z; c
return( );
}

- Página 2 de 2 -

También podría gustarte