Memoria interna RAM - Docencia FCA-UNAM

Download Report

Transcript Memoria interna RAM - Docencia FCA-UNAM

Memoria interna RAM:
Funcionamiento, programación
y recursividad
Definición
Random Access Memory, normalmente conocida
como Memoria RAM) es un tipo de dispositivo de
almacenamiento de datos. Adopta la forma de
circuitos integrados en pequeñas tarjetas que
permiten que los datos se almacenen y sea
accesible a ellos mediante ordenes.
La RAM es una memoria volátil, que significa
que la información o instrucciones que almacena
en ella se pierden en el momento que deja de
recibir voltaje.
RAM (ESTATICA Y DINAMICA)
•RAMs se dividen en estáticas y dinámicas.
•Una Memoria RAM estática mantiene su contenido mientras esté
alimentada.
•En cambio, en una Memoria RAM dinámica la lectura es
destructiva, es decir que la información se pierde al leerla, para
evitarlo hay que restaurar la información contenida en sus celdas,
operación denominada refresco.
•Cada celda de la RAM tiene una ubicación o nombre en una
nomenclatura aceptada por la comunidad científica: el sistema
hexadecimal. Cada depósito de un dato en la memoria (operando,
resultado, etc.) se ubica por una dirección en hexadecimal.
Programación de la memoria =
algoritmos (sistemas) + uso de memoria
Es la aplicación de los
algoritmos para optimizar el uso
de la memoria del computador
Optimización de la memoria
Se puede optimizar el uso de memoria a través de:
ESTRUCTURAS ESTATICAS (desde la compilación reservan un
espacio fijo de elementos)
Arreglos (vectores 1 dimensión y matriz de n dimensiones)
ESTRUCTURAS DINÁMICAS (en la ejecución varia el número de
elementos y uso de memoria a lo largo del programa)
Lineales (listas enlazadas, pilas y colas)
No lineales (arboles y grafos o redes)
Asignación de información en celdas de memoria
•Memoria global (“estática”). Es la usada por variables
globales y cadenas constantes.
•Memoria local Es la usada por variables declaradas
dentro de funciones. Los argumentos de una función son
variables locales.
•Memoria dinámica Esta memoria se puede pedir en
cualquier momento de la ejecución con una llamada a
malloc Memory Allocation
función de asignación de memoria dinámica de C y C++
Liberación de memoria
•La memoria global se libera automaticamente al
terminar el programa.
•La memoria local se libera automaticamente al terminar
la invocación a funcion que la creo.
•La memoria dinámica se puede liberar en cualquier
momento de la ejecucion pasandole un puntero al bloque
de memoria a la función free.
Funciones predefinidas de manejo de memoria
dinámica en C y C++
•Función calloc().- void *calloc(int num, int tam);
Reserva un bloque de memoria para almacenar num elementos de tam
bytes cada uno de ellos.
•Función malloc().-void *malloc(int tam); (tambien con new)
Reserva un bloque de memoria de tam bytes.
•Función realloc().-void *realloc(void *ptr, int nuevo_tamaño);
Cambia el tamaño del bloque de memoria apuntada por ptr al nuevo
tamaño indicado por nuevo_tamaño
•Función free().-void free(void *ptr);
Libera el bloque de memoria apuntada por ptr y que previamente ha
sido asignado mediante malloc() o calloc().
RECURSIVIDAD:
La recursividad es una técnica de
programación que nos permite la reducción
de código, la programación de procesos y
el manejo de la memoria principal. Se
utiliza para realizar una llamada a una
función desde la misma función.
Ejemplo:
Por ejemplo GNU, es un acrónimo (una
sigla que se pronuncia como palabra)
recursivo (GNU’s Not Unix), ya que la G
en GNU, significa GNU, cuya G significa
GNU, y así recursivamente…
Tipos de recursividad:
Una función se puede llamar a sí misma, a este
proceso se le llama recursividad y puede ser
directa e indirecta.
•Directa cuando una función se llama a sí misma.
• Recursividad indirecta cuando una función
llama a otra función y ésta última llama a la
primera.
Formas de recursividad
Pora Ambos tipos de recursividad se dan
en dos formas, aquellas que eventualmente
terminan y producen un resultado y el
caso en que la recursividad nunca termina
produciendo un bucle infinito y de aquí una
falla en tiempo de ejecución por falta de
memoria. (principio de la generación de
virus)
EJEMPLO: La serie de Fibonacci