4.4 Administración de almacenamiento.
Los principales requerimientos de almacenamiento durante la ejecución de un programa se pueden agrupar en:
Segmento de código para programas usuario traducidos.
El mayor bloque, en cualquier sistema es atribuido a programas de usuario traducidos.
Programas de ejecución del sistema.
Este es el espacio atribuido a programas del sistema que apoyan la ejecución de programas usuario. Pueden ir desde simples rutinas de biblioteca (seno, coseno, etc...) o intérpretes o traductores software presentes durante la ejecución.
Estructuras de datos y constantes definidas por el usuario.
Se debe atribuir espacio para todos los datos y estructuras creados por el usuario, incluyendo constantes.
Puntos de retorno de subprogramas.
Información de control de secuencia generada internamente tal como: puntos de retorno de subprogramas, puntos resume de coordenadas o aviso de eventos para subprogramas escalonados (scheduled), deben tener un espacio de almacenamiento.
Referencias de ambiente (scope).
Almacenamiento de referencias, por ejemplo asociación de identificadores puede requerir mucho espacio.
Almacenamiento temporal en la evaluación de expresiones.
La evaluación de expresiones requiere el uso de almacenamiento temporal definido por el sistema para los resultados intermedios de la evaluación.
Almacenamiento temporal en transmisión de parámetros.
Cuando se llama a un subprograma, se debe evaluar una lista de parámetros reales, y los valores deben almacenarse temporalmente hasta la evaluación de la lista completa. Ya que la evaluación de un parámetro puede requerir la evaluación de llamadas recursivas de funciones, una cantidad potencialmente ilimitada de almacenamiento puede ser necesaria.
Buffers Input-Output.
Los buffers sirven como áreas de almacenamiento temporal para almacenar datos en el tiempo que va entre la transferencia física de los datos, de o desde el exterior, y el comienzo de las operaciones de entrada /salida.
Datos misceláneos del sistema.
![]() | Tablas |
![]() | Información status para E /S |
![]() | Contador de referencia |
![]() | Bits de garbage-collection |
Además de los datos y elementos de programa se debe considerar operaciones que requieren atribución (o liberación) de memoria:
Operaciones de llamada y retorno de subprogramas.
Lo que requiere espacio de almacenamiento acá es:
![]() | Registro de activación |
![]() | Ambiente de referencia local |
![]() | Otros datos en la llamada |