ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Gestion Dinamica De Memoria


Enviado por   •  6 de Diciembre de 2013  •  2.294 Palabras (10 Páginas)  •  256 Visitas

Página 1 de 10

I. GESTIÓN DINÁMICA DE MEMORIA

1. ALMACENAMIENTO EN MEMORIA

Las memorias en este caso RAM son dispositivos que permiten almacenar información de tipo binario, cargando un transistor representando el valor 1 y liberando dicha carga para representar un valor 0, para lo cual a continuación veremos brevemente las partes y definiciones de una memoria.

Desde el punto de vista más simple, se puede observar la organización de una memoria de forma matricial, así las filas representan los registros de palabras de cierta cantidad de bits y las columnas forma los bits de manera individual de los registros. Como se muestra en la siguiente figura.

Terminología:

• Dirección de memoria. Se denomina dirección de memoria a la posición que ocupan cada uno de los registros, desde la cero hasta N direcciones.

• Celda de memoria. Lugar utilizado para el almacenamiento de un solo bit. Visto lo anterior como dispositivo, este puede ser un F-F, un capacitor cargado un disco o cinta magnética.

• Palabra de memoria. Conjunto de bits de una memoria que representa datos o instrucciones. Considerar que es necesaria una celda de memoria por cada bit que se desee almacenar, es común encontrar palabras de memoria con extensión de 8 bits, por lo que serán necesarias la misma cantidad de celdas de memoria por dirección.

• Capacidad de memoria (densidad). Forma de especificar la cantidad de bits que es posible almacenar en un dispositivo de memoria o en un sistema completo. En la actualidad, se han desarrollado memorias para una gran capacidad. Por ejemplo, una memoria de 1M se representa 220 = 1, 048,576. Así una memoria de 2M x 8 tiene como capacidad 2, 097,152 x 8. Actualmente, el término “giga” nos muy familiar, este se refiere a 230 = 1, 073, 741,824.

• Dirección. Número que identifica la posición de una palabra o dato en una memoria o sistema. Cada dato o palabra tiene una dirección específica dentro del sistema digital.

2.- ¿POR QUÉ USAR ESTRUCTURAS DINÁMICAS?

Según lo anterior podemos definir que una memoria almacena datos sin importar de que tipo sean es decir son dispositivos que solo pueden almacenar bits (0 / 1) en un lenguaje y estructura que solo el computador puede entender y el hombre con mucha dificultad, sin embargo existen lenguaje de programación de bajo nivel y alto nivel que se acercan a este lenguaje maquina de 0 y 1 los cuales nos permiten una comunicación y realizar instrucciones para un optimo funcionamiento y relación entre hombre y computador.

Hasta ahora teníamos una serie de variables que declaramos al principio del programa o de cada función. Estas variables, que reciben el nombre de ESTÁTICAS, tienen un tamaño asignado desde el momento en que se crea el programa.

Este tipo de variables son sencillas de usar y rápidas si sólo vamos a manejar estructuras de datos que no cambien, pero resultan poco eficientes si tenemos estructuras cuyo tamaño no sea siempre el mismo.

Es el caso de una agenda tenemos una serie de fichas, e iremos añadiendo más. Si reservamos espacio para 10, no podremos llegar a añadir la número 11, estamos limitando el máximo. Una solución sería la de trabajar siempre en el disco no tenemos límite en cuanto a número de fichas, pero es muchísimo más lento.

Lo ideal sería aprovechar mejor la memoria que tenemos en el ordenador, para guardar en ella todas las fichas o al menos todas aquellas que quepan en memoria. Una solución "típica" (pero mala) es sobredimensionar preparar una agenda contando con 1000 fichas, aunque supongamos que no vamos a pasar de 200. Esto tiene varios inconvenientes se desperdicia memoria, obliga a conocer bien los datos con los que vamos a trabajar, sigue pudiendo verse sobrepasado, etc.

La solución suele ser crear estructuras DINÁMICAS, que puedan ir creciendo o disminuyendo según nos interese. En los lenguajes de programación "clásicos", como C y Pascal, este tipo de estructuras se tienen que crear de forma básicamente artesanal, mientras que en lenguajes modernos como C#, Java o las últimas versiones de C++, existen esqueletos ya creados que podemos utilizar con facilidad.

Algunos ejemplos de estructuras de este tipo son:

 Las pilas. Como una pila de libros vamos apilando cosas en la cima, o cogiendo de la cima. Se supone que no se puede tomar elementos de otro sitio que no sea la cima, ni dejarlos en otro sitio distinto. De igual modo, se supone que la pila no tiene un tamaño máximo definido, sino que puede crecer arbitrariamente.

 Las colas. Como las del cine (en teoría): la gente llega por un sitio (la cola) y sale por el opuesto (la cabeza). Al igual que antes, supondremos que un elemento no puede entrar a la cola ni salir de ella en posiciones intermedias y que la cola puede crecer hasta un tamaño indefinido.

 Las listas, en las que se puede añadir elementos en cualquier posición, y borrarlos de cualquier posición.

Y la cosa se va complicando en los árboles cada elemento puede tener varios sucesores (se parte de un elemento "raíz", y la estructura se va ramificando), etc.

Todas estas estructuras tienen en común que, si se programan correctamente, pueden ir creciendo o decreciendo según haga falta, al contrario que un array, que tiene su tamaño prefijado.

3. UNA PILA EN C#

- ¿Qué es una pila?

Una pila representa una estructura lineal de datos en que se puede agregar o quitar elementos únicamente por uno de los dos extremos. En consecuencia, los elementos de una pila se eliminan en el orden inverso al que se insertaron. Las pilas no son estructuras fundamentales de datos; es decir no están definidas como tales en los lenguajes de programación. Para su representación requieren de otras EDs, como: Arreglos y listas

Para crear una pila tenemos preparada la clase Stack. Los métodos habituales que debería permitir una pila son introducir un nuevo elemento en la cima ("apilar", en inglés "push"), y quitar el elemento que hay en la cima ("desapilar", en inglés "pop"). Este tipo de estructuras se suele llamar también con las siglas "LIFO" (Last In First Out) lo último en entrar es lo primero en salir). Para utilizar la clase "Stack" y la mayoría de las que veremos en este tema, necesitamos incluir en nuestro programa una referencia a "System.Collections".

La implementación de una pila en C# es algo más avanzada permite también métodos como:

 "Peek", que mira el valor que hay en la cima, pero sin extraerlo.

 "Clear",

...

Descargar como (para miembros actualizados)  txt (14 Kb)  
Leer 9 páginas más »
Disponible sólo en Clubensayos.com