Manejo de memoria en Windows

Para administrar la memoria, en el API32, Windows mantiene un espacio virtual de memoria con direcciones de 32 bits para cada proceso. Esto permite que cada uno de los procesos disponga de hasta cuatro gigabytes de memoria. Dos de esos gigas están disponibles para el usuario, los correspondientes a las primeras direcciones de memoria; los otros dos están reservados para el núcleo del sistema.

DB2 32-bit                     memory address space on Windows
Se trata de un espacio virtual, esto quiere decir que las aplicaciones no acceden directamente a memoria, y que las direcciones que manejamos no corresponden a direcciones de memoria física. El sistema se encarga de mapear esas direcciones virtuales a direcciones físicas. En esto, como en todos los recursos, el sistema operativo trabaja como intermediario entre el usuario y el hardware.
Este modo de trabajar proporciona a cada aplicación gran cantidad de memoria, de hecho, en la mayoría de los casos proporciona más memoria de la disponible físicamente. Para mantener toda esa memoria se trabaja con un fichero en disco como almacén de memoria complementaria: el fichero de paginación o fichero de intercambio.
El sistema de memoria virtual trabaja con unidades de memoria llamadas páginas. El tamaño de cada página varía dependiendo del tipo de ordenador, (en microprocesadores de la familia x86 suele ser de 4 KB). Mientras es posible, las páginas de memoria se asignan a cada proceso desde la memoria física, pero cuando es necesaria más memoria, los procesos inactivos pueden copiar algunas de sus páginas en el fichero de
intercambio y liberar de ese modo parte de la memoria física que se puede asignar al proceso activo.
Todo esto es transparente para el usuario, que sólo notará que cuando es sistema está muy cargado aumenta la actividad del disco y disminuye la velocidad del sistema.
Nos interesa saber, de todos modos, que cada página de memoria virtual asociada a un proceso puede estar
en uno de tres posibles estados:

Libre: no es accesible, pero puede ser reservada o asignada.
Reservada: no se usa por el proceso, ni tampoco está asociada a memoria física ni ocupa espacio en el fichero de intercambio. El proceso tampoco podrá obtener memoria de páginas reservadas.
Asignada: página que tiene memoria física o espacio en el fichero de intercambio asociado. Estas páginas pueden ser protegidas, para evitar su acceso o limitarlo a sólo lectura, o pueden ser accedidas en lectura y escritura.

Todo el manejo de páginas se realiza con las funciones :


  • VirtualAlloc
  • VirtualFree

Comentarios

Entradas populares