domingo, 3 de abril de 2011

MEMORIA ESTATICA Y DINAMICA

INTRODUCCION
Tu ordenador probablemente usa ambas, memoria estática y memoria dinámica al mismo tiempo, pero las usa por diferentes razones debido al coste entre los dos tipos de memoria RAM (ram  memory). Si entiendes como los chips de RAM dinámica y RAM estática funcionan internamente, es fácil ver porqué el coste es diferente, y también podrás entender su nombre.
¿Qué es memoria?
Es un espacio lógico para guardar información.
La memoria (también llamada almacenamiento) se refiere a parte de los componentes que forman parte de una COMPUTADORA, Son dispositivos que retienen DATOS informáticos durante algún intervalo de tiempo. Las memorias de computadora proporcionan unas de las principales funciones de la computación moderna, la retención o almacenamiento de información. Es uno de los componentes fundamentales de todas las computadoras modernas que, acoplados al CPU.

¿Qué es estática?

La forma más fácil de almacenar el contenido de una variable en memoria en tiempo de ejecución es en memoria estática o permanente a lo largo de toda la ejecución del programa. O sea,  que no se modifica al menos en tiempo de ejecución.
No todos los objetos (variables) pueden ser almacenados estáticamente.
Para que un objeto pueda ser almacenado en memoria estática su tamaño (número de bytes necesarios para su almacenamiento) ha de ser conocido en tiempo de compilación, como consecuencia de esta condición no podrán almacenarse en memoria estática:
¿Qué es dinámica?
Su tamaño puede variar durante la ejecución del programa y puede ser liberado mediante la función free. O sea que se modifica permanentemente.
Memoria estática.-
Las técnicas de asignación de memoria estática son sencillas.
La asignación de memoria puede hacerse en tiempo de compilación y los objetos están vigentes desde que comienza la ejecución del programa hasta que termina.
En los lenguajes que permiten la existencia de subprogramas, y siempre que todos los objetos de estos subprogramas puedan almacenarse estáticamente se aloja en la memoria estática un registro de activación correspondiente a cada uno de los subprogramas.
Estos registros de activación contendrán las variables locales, parámetros formales y valor devuelto por la función.
Consideraciones 
ü  Error en tiempo de ejecución de índice fuera del rango.
ü  Se debe conocer con anticipación el tamaño de la estructura.
ü  Se guardan en memorias adyacentes.
ü  Vectores, matrices, cubos, registros,  archivos.
Ventajas
·         La velocidad de acceso es alta.
·         Para retener los datos solo necesita estar energizada.
·         Lógica simple.
Son más fáciles de diseñar.
Desventajas:
ü  No se puede modificar el tamaño de la estructura en tiempo de ejecucion.
ü  No es óptimo con grandes cantidades de datos.
ü  Desperdicio de memoria cuando no se utiliza en su totalidad  del tamaño  v[100]  .
ü  Menor capacidad, debido a que cada celda de almacenamiento requiere más transistores.
ü  Mayor costo por bit.
ü  Mayor consumo de Potencia

Memoria dinámica

La memoria dinámica es un espacio de almacenamiento que se solicita en tiempo de ejecución. De esa manera, a medida que el proceso va necesitando espacio para más líneas, va solicitando más memoria al sistema operativo para guardarlas. El medio para manejar la memoria que otorga el sistema operativo, es el puntero, puesto que no podemos saber en tiempo de compilación dónde nos dará huecos el sistema operativo (en la memoria de nuestro PC).
Un dato importante es que como tal este tipo de datos se crean y se destruyen mientras se ejecuta el programa y por lo tanto la estructura de datos se va dimensionando de forma precisa a los requerimientos del programa, evitándonos así perder datos o desperdiciar memoria si hubiéramos tratado de definirla cantidad de memoria a utilizar en el momento de compilar el programa.
Cuando se crea un programa en el que es necesario manejar memoria dinámica el sistema operativo divide el programa en cuatro partes que son: texto, datos (estáticos), pila y una zona libre o heap. En el momento de la ejecución habrá tanto partes libres como partes asignadas al proceso por lo cual si no se liberan las partes utilizadas de la memoria y que han quedado inservibles es posible que se “agote” esta parte y por lo tanto la fuente de la memoria dinámica. También la pila cambia su tamaño dinámicamente, pero esto no depende del programador sino del sistema operativo.

VENTAJAS:
ü  Es posible disponer de un espacio de memoria arbitrario que dependa de información dinámica (disponible sólo en ejecución): Toda esa memoria que maneja es implementada por el programador cuando fuese necesario.
ü  Otra ventaja de la memoria dinámica es que se puede ir incrementando durante la ejecución del programa. Esto permite, por ejemplo, trabajar con arreglos dinámicos.
ü  Es memoria que se reserva en tiempo de ejecución. Su tamaño puede variar durante la ejecución del programa y puede ser liberado mediante la función free.

DESVENTAJAS:
ü  Es difícil de implementar en el desarrollo de un programa o aplicación.
ü  Es difícil implementar estructuras de datos complejas como son los tipos recursivos (árboles, grafos, etc.).Por ello necesitamos una forma para solicitar y liberar memoria para nuevas variables que puedan ser necesarias durante la ejecución de nuestros programas: Heap.
ü  Una desventaja de la memoria dinámica es que es más difícil de manejar.
ü  La memoria dinámica puede afectar el rendimiento. Puesto que con la memoria estática el tamaño de las variables se conoce en tiempo de compilación, esta información está incluida en el código objeto generado. Cuando se reserva memoria de manera dinámica,
ü  Se tienen que llevar a cabo varias tareas, como buscar un bloque de memoria libre y almacenar la posición y tamaño de la memoria asignada, de manera que pueda ser liberada más adelante. Todo esto representa una carga adicional, aunque esto depende de la implementación y hay técnicas para reducir su impacto.  

18 comentarios:

  1. Trabajo corregido, mejorar redacción............

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  4. Este comentario ha sido eliminado por el autor. Ndeah

    ResponderEliminar
  5. Este comentario ha sido eliminado por el sujeto de pruebas #1.

    ResponderEliminar
  6. Este comentario ha sido eliminado por meduasesino

    ResponderEliminar
  7. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  8. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  9. Este comentario ha sido eliminado por el autor

    ResponderEliminar
  10. Buen aporte, muchísimas gracias.

    ResponderEliminar
  11. ¿Quiénes utilizan y manejan la memoria estática en C#?

    ResponderEliminar