Manejo de memoria

Solo disponible en BuenasTareas
  • Páginas : 11 (2550 palabras )
  • Descarga(s) : 0
  • Publicado : 24 de noviembre de 2010
Leer documento completo
Vista previa del texto
Capítulo 2

Manejo de memoria

2.1 Objetivo Educacional

– Comprender los mecanismos para el manejo de memoria

2.2 Actividades de aprendizaje

– Elaborar un mapa conceptual que represente el almacenamiento de la información estática en la computadora
– Elaborar un mapa conceptual que represente el almacenamiento de la información dinámica en la computadora
– Realizar un esquemaque represente el mecanismo de liberación de memoria dinámica
– Realizar un ejercicio que muestre el funcionamiento y diferenciación de cada uno de los mecanismos de manejo de memoria
– Analizar y discutir en equipos las ventajas y desventajas de cada uno de los mecanismos de manejo de memoria

2.3 Asignación de memoria estática contra memoria dinámica

Primeramente se recordará la forma enque se asigna la memoria para los arreglos. Cuando se declara un arreglo, por ejemplo de tamaño 1000, las 1000 localidades de memoria se reservan para uso exclusivo del arreglo y la misma estrategia de asignación se usa para la mayoría de las implementaciones de los strings.

Se usa el término asignación estática para referirse a esta estrategia de asignación de memoria, en la cual toda lamemoria que una estructura de dato posiblemente necesitaría es asignada toda a la vez, sin considerar la cantidad actual requerida al tiempo de ejecución. La estrategia opuesta o asignación dinámica involucra asignación de memoria en base a lo que se requiera.

Siempre hay un máximo absoluto de memoria que puede ser asignada: esta es simplemente la cantidad de memoria que está físicamente disponibleen la computadora y ninguna estrategia de asignación puede rebasarla. La diferencia entre asignación estática y dinámica se ilustra con el siguiente ejemplo de registro de nombres individuales.

Suponer que se tiene un total de 3000 localizaciones de memoria disponible con los cuales almacenar los nombres y apellidos de cada uno de los alumnos en una clase. Si se usa un arreglo de strings paraalmacenar estos datos, el almacenamiento será asignado estáticamente, y consecuentemente se debe fijar la longitud máxima que un nombre pueda tener y el número máximo de gente en la clase. Es bastante difícil fijar estos límites, especialmente cuando, como en este caso, hay una interactuación entre ellos, es decir, si se quiere permitir nombres más largos se tiene que reducir el tamaño posible dela clase.

Por ejemplo, si se quiere permitir nombres hasta de 100 caracteres, dado que sólo hay 3000 localidades de memoria, entonces el límite por clase es de 30 personas, aunque hay el riesgo de que no se inscriban las 30 personas en la clase.

Con la asignación dinámica, no se tendrá que pensar acerca de cuánta gente debe inscribirse en la clase, o de qué tamaño deben ser sus nombres. Sepueden acomodar 30 personas con nombres de 100 caracteres y 300 personas con nombres de 10 caracteres.

2.4 Cómo trabaja la asignación de memoria dinámica

La idea principal es considerar toda la memoria disponible como un todo global que puede ser usado para cualquier propósito. Cuando en un programa se necesita memoria para almacenar algún dato en particular, se puede solicitar sólo lacantidad que se requiere y se proporciona de esa memoria global, la cual se marca como “ocupada” o “no libre”, de tal forma que una solicitud subsecuente de espacio de memoria ya no asigna ese mismo block para un propósito diferente. La asignación de memoria se realiza por algún procedimiento disponible en algún lenguaje, como malloc(n) en C, que asigna un block de memoria de n bytes o un procesosimilar como new tanto en C como en Java.

Es responsabilidad del programador el regresar la memoria ocupada a la memoria global cuando se termine de trabajar con ella, y entonces ésta se marca como “libre” nuevamente y estará disponible para otros usos.

Ahora, el asignador de memoria típicamente no garantiza en qué estado están los bits de memoria. Cuando un block de memoria se asigna a...
tracking img