El documento habla sobre los parámetros en las funciones, incluyendo parámetros formales, actuales y la correspondencia entre ellos. También describe el árbol de llamadas que controla las llamadas de funciones recursivas en tiempo de ejecución, y los diferentes tipos de parámetros como por valor, referencia o copia-restauración. Finalmente, cubre temas relacionados con la asignación de memoria como el stack, enlaces de control e información de entorno.
Parámetros formales y actuales en lenguajes de programación
1. Tecnol´ogico de Costa Rica
Ingenier´ıa en Computadores
Ver´onica Mora Lezcano
Lenguajes, Compiladores e Int´erpretes
Paso por par´ametro
Par´ametros formales
int foo (int a, int b) : nombre y su definici´on de tipo.
Par´ametros actuales/reales
int x, y
call foo(x, y) : x, y son par´ametros actuales y tienen correspondencia en tipo con los par´ametros
formales. los par´ametros actuales tienen un valor o direcci´on.
´Arbol de llamadas o ´arbol de actuaci´on
Es una estructura (tipo ´arbol) que controla la llamada de funciones (recursivas) en tiempo de ejecuci´on.
1
2. Par´ametros por valor
Par´ametros por referencia: Direcci´on de memoria.
Par´ametros por copia y restauraci´on: Por ejemplo:
Tabla de s´ımbolos
2
3. Tablas de Hash
Tienen una funci´on que calcula un valor ´unico para facilitar la inserci´on, b´usqueda y eliminaci´on. Debe
resolver las colisiones.
Asignaci´on de memoria
Tiempo de compilaci´on: conoce de antemano el espacio que puede usar y/o pedir.
Tiempo de ejecuci´on: cuando se solicita de forma din´amica o din´amicamente seg´un lo requiera el
proceso.
Estructura b´asica de una activaci´on de memoria
Valor de retorno:
Informaci´on sobre los datos/direcciones donde se debe cargar la respuesta (**Si es necesario**)
3
4. Stack:
Es el espacio que puede utilizar para asignaci´on de memoria din´amica, aunque se conozca de antemano
que tiene un l´ımite de tama˜no.
Enlaces de control:
Guarda informaci´on de direcciones en la memoria entre llamadas de activaci´on.
Informaci´on de entorno:
Guarda informaci´on que debe ser restaurada una vez terminado el proceso.
Primer enfoque asignaci´on de bloques fijos
+ A cada proceso se le asigna un tama˜no fijo.
+ El sistema operativo casi siempre ocupa la posici´on cero.
Ventajas
+ F´acil de implementar.
Desventajas
- Desaprovechamiento de la memoria.
- Limitaci´on para asignaci´on din´amica de gran tama˜no.
4
5. Segundo enfoque particiones flexibles
+ Normalmente los procesos inician con el uso m´aximo requerido.
+ La reasignaci´on del tama˜no de la memoria es posible, pero es costosa en utilizaci´on de CPU y puede
fallar.
+ Se utiliza el concepto de registro base y registro l´ımite.
Ventajas
+ Simple.
+ Mejor utilizaci´on de la memoria.
+ Requiere un MMU (Manage Memory Unit), es la parte del procesador encargada de la memoria.
Desventajas
- Fragmentaci´on.
- Mala utilizaci´on por parte de los desarrolladores.
- Seg´un Sibert Shatz con cada M bloques asignados se pierde 0.5M por fragmentaci´on (dato estad´ıstico).
¿C´omo asignar un espacio nuevo?
Primer espacio
+ Simple.
- No necesariamente es el mejor espacio.
Mejor espacio
+ Aprovechamiento.
- Recorrido de toda la memoria.
Peor espacio (m´as grande)
+ Busca que los espacios disponibles sean del mismo tama˜no.
- Recorrido de toda la memoria.
5
6. ¿C´omo recuperar espacio?
Compactaci´on, consiste en:
1. Detectar los procesos.
2. Mover los espacios de memoria.
3. Ajustar los registro base.
4. Continuar con el siguiente.
¿Cu´ando compactar?
- Se dispara cuando se puede colocar un proceso en memoria.
- Se dispara cuando quede 30% o menos de espacio disponible.
Utilizaci´on de Heap
- Se solicita un espacio inicial m´aximo a ser utilizado.
- Utilizado como t´ecnica dentro del proceso para que la aplicaci´on utilice el espacio solicitado.
6