martes, 3 de julio de 2012

Manejo de Memoria

El propósito de manejar la memoria es optimizar el uso del RAM (Random Access Memory). El RAM consiste de uno o más chips en el motherboard que mantiene los datos e instrucciones en forma temporera mientras el procesador los interpreta y ejecuta. El sistema operativo limpia las áreas de memoria que están ocupadas por los datos e instrucciones cuando éstos ya no se están usando.

Algunos sistemas operativos usan memoria virtual (Virtual Memory - VM) para optimizar el uso del RAM. Con la memoria virtual, el sistema operativo asigna una porción de un medio de almacenamiento, usualmente el disco duro, para funcionar como RAM adicional. Según se interacciona con un programa, parte de él puede estar en el RAM y el resto del programa está en el disco duro, el que se está usando como memoria virtual.


Memoria Real.
La memoria real o principal, es aquella memoria de un computador, donde se encuentra el código de instrucciones y los datos del programa, que se esta ejecutando.

La estructura de la memoria principal se ha cambiada en la historia de las computadoras. Desde los años 1980 es prevalentemente una unidad dividida en celdas que se identifican mediante una dirección. Está formada por bloques de circuitos integrados o chips capaces de almacenar, retener o "memorizar" información digital, es decir, valores binarios; a dichos bloques tiene acceso el microprocesador de la computadora.

La memoria principal se comunica con el procesador mediante el bus de direcciones. El ancho de este bus determina la capacidad que posea el procesador para el direccionamiento en memoria.

La memoria principal es el núcleo del sub-sistema de memoria de una computadora, y posee una menor capacidad de almacenamiento que la memoria secundaria, pero una velocidad superior.


El área que el disco duro usa para memoria virtual es llamada “swap file”, pues intercambia (“swap”) datos, información e instrucciones entre la memoria y el almacenamiento. Una página (page) es la cantidad de datos e instrucciones que se pueden intercambiar en un momento dado. A la técnica de intercambiar entre memoria y almacenamiento se le llama “paging”. Cuando un sistema operativo está mucho tiempo haciendo “paging” en vez de ejecutando una aplicación, se dice que el sistema está “thrashing”. Por ejemplo, cuando se intenta acceder a una página del Internet, la página ya bajó, pero la luz del disco duro sigue encendida. Si el “thrashing” sucede con mucha frecuencia, es posible que la computadora necesite más RAM.

 Memoria Auxiliar.
La memoria auxiliar (memoria secundaria, almacenamiento secundario o memoria externa) es el conjunto de dispositivos y medios de almacenamiento, que conforman el sub-sistema de memoria de una computadora, junto a la memoria principal.
El proceso de transferencia de datos a un equipo de cómputo se le llama "procedimiento de lectura". El proceso de transferencia de datos desde la computadora hacia el almacenamiento se denomina "procedimiento de escritura".
Memoria Virtual:
La memoria virtual, es una técnica de administración de la memoria real que permite al sistema operativo brindarle al software de usuario y a sí mismo un espacio de direcciones mayor que la memoria real o física.
La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la memoria caché (tanto dentro como fuera del CPU), la memoria física (generalmente en forma de RAM, donde la CPU puede escribir y leer directa y razonablemente rápido) y el disco duro que es mucho más lento, pero también más grande y barato.





Muchas aplicaciones requieren acceso a más información (código y datos) que la que se puede mantener en memoria física. Esto es así sobre todo cuando el sistema operativo permite múltiples procesos y aplicaciones ejecutándose simultáneamente. Una solución al problema de necesitar mayor cantidad de memoria de la que se posee consiste en que las aplicaciones mantengan parte de su información en disco, moviéndola a la memoria principal cuando sea necesario. Hay varias formas de hacer esto. Una opción es que la aplicación misma sea responsable de decidir qué información será guardada en cada sitio (segmentación), y de traerla y llevarla. La desventaja de esto, además de la dificultad en el diseño e implementación del programa, es que es muy probable que los intereses sobre la memoria de dos o varios programas generen conflictos entre sí: cada programador podría realizar su diseño teniendo en cuenta que es el único programa ejecutándose en el sistema. 

La alternativa es usar memoria virtual, donde la combinación entre hardware especial y el sistema operativo hace uso de la memoria principal y la secundaria para hacer parecer que el ordenador tiene mucha más memoria principal (RAM) que la que realmente posee. Este método es invisible a los procesos. La cantidad de memoria máxima que se puede hacer ver que hay tiene que ver con las características del procesador. Por ejemplo, en un sistema de 32 bits, el máximo es 232, lo que da 4096 Megabytes (4 Gigabytes). Todo esto hace el trabajo del programador de aplicaciones mucho más fácil, al poder ignorar completamente la necesidad de mover datos entre los distintos espacios de memoria.