Comprender los conceptos de memoria implementados en Windows es una parte fundamental para evidenciar problemas de performance y actuar en consecuencia.
Muchas veces se suele confundir Memoria Física con el concepto de Memoria Virtual.
Memoria Física y Memoria Virtual
La Memoria Física (RAM) es manejada directamente por el Administrador de Memoria de Windows (Windows Memory Manager). Cada proceso tiene su propio espacio de memoria y sus propias direcciones privadas en memoria, las cuales solo pueden ser accedidas por el mismo proceso, la excepción es la de la memoria compartida (Shared Memory), la cual puede ser accedida por uno o varios procesos.
La Memoria Física se puede encontrar en 3 estados: Free, Reserved y Committed. En el estado Free la memoria está libre y no puede ser usada por los procesos, en estado Reserved la memoria se encuentra reservada para un proceso, y en estado Committed, la memoria que se reservada es usada por el proceso y por lo tanto es respaldada por memoria física. Para que la memoria vuelva a estar en estado libre, el proceso que la tiene reservada debe liberarla.
Parte de la Memoria Física, es también el archivo de paginación (page file) el cual va a estar ubicado por defecto en la unidad de disco del sistema. Este archivo (pagefile.sys), se utiliza como si fuera memoria del tipo RAM, de tal manera que si un proceso necesita espacio en memoria y no lo tiene, el Administrador de Memoria consigue ese espacio pasando datos que no están siendo utilizados al page file, y cuando estos datos se requieran nuevamente, se hará el proceso inverso, del page file a memoria (RAM).
Ahora bien, la Memoria Virtual es una técnica que permite a un proceso tener la impresión de que tiene un espacio de memoria que es contiguo, por lo tanto si existiese fragmentación, para el proceso es transparente. Podemos definir como Memoria Virtual utilizada, al conjunto de Memoria Física + Page file, dicha memoria siempre tiene un estado committed.
Para comprender mejor la Memoria Virtual, es conveniente verla en términos de Espacio de Direcciones Virtuales (VAS). A cada proceso se le asigna un espacio privado virtual de memoria también llamado Espacio de Direcciones Virtuales (Virtual Address Space, VAS). Este mecanismo previene que los procesos accedan espacios de memoria de otros procesos. Y es justamente VAS, un recurso de memoria que generalmente se pasa por alto cuando hay problemas de memoria.
VAS es un espacio lógico y virtual de memoria el cual es mapeado a la Memoria Física (no sólo RAM, sino también el page file) por el Sistema Operativo para hacer un mapa de direcciones de memoria. De esta manera se restringe el acceso directo a la Memoria Física, proporcionando un aislamiento a cada proceso.
VAS dependiendo de la tecnología
Partes del VAS
El Modo Kernel es una parte muy importante al momento de hacer un análisis de la performance de un servidor. Esto lo veremos en otro post, dedicado al Modo Kernel.
Modificadores de Memoria
Los modificadores de memoria una arquitectura de 32 bits son: 3GB, PAE y AWE.
Suele suceder que se confunda el uso de 3GB y PAE, si bien ambos se agregan en el archivo boot.ini (Windows 2003) o con el comando bcdedit (Windows 2008), se utilizan para diferentes propósitos:
Los Anteriores switches son solo relevantes en arquitecturas de 32 bits, con el uso de tecnologías de 64-bits dichos switches no son necesarios.
“Las opiniones e ideas expresadas en este blog son las de los Autores y no necesariamente declaran o reflejan la opinión de Microsoft”
Este material tambien lo podras acceder en http://blogs.technet.com/b/sql_pfe_latam/