Fichero de Paginación (Parte 3–Memoria Comprometida vs Memoria Reservada)

Hola de nuevo, en post anteriores he hablado de como los procesos dividen la información, en el post anterior deje una definición de los diferentes tipos de pagina, si hacemos un breve refresco estas se dividían en paginas libres, paginas reservadas, paginas comprometidas y paginas tocadas. A parte de estas paginas anteriormente mencionadas existe el concepto de pagina compartida, las paginas compartidas son aquellas que pueden ser utilizadas por otros procesos, pero nunca se utilizaran por mas de un proceso a la vez, las paginas comprometidas por contra no podrán ser compartidas por mas de un proceso por lo cual también se denominan paginas privadas. Las paginas comprometidas y compartidas son paginas que cuando son accedidas se traducen en paginas validas en la memoria física.

Las paginas privadas se asignan a través de las funciones de Windows VirtualAlloc y VirtualAllocEx, estas funciones permiten a un proceso reservar memoria y comprometer partes de esta memoria reservada. El concepto de reservar memoria permite al proceso dejar un numero de direcciones de memoria virtuales contiguas para un posible uso en un futuro, después puede comprometer los espacios de memoria según lo vaya necesitando. Si los requisitos de tamaño son conocidos de antemano, un proceso también puede reservar y comprometer la memoria en la misma llamada a la función. Esto se traduce en que los procesos no consumen recursos del sistema hasta que las paginas de memoria no son comprometidas o compartidas.

En el ejemplo que se ve a continuación un proceso de 64bits que ve un Virtual Address Space de 8TB realiza una reserva de 100MB, esto le permitirá disponer de un espacio de direcciones virtuales contiguas de ese tamaño pero el System Commit Charge de la maquina no crece.

 image

 Cuando el proceso compromete la memoria, estas paginas son traducidas en paginas en memoria física, ya sea memoria principal o memoria secundaria, por lo que el sistema consume recursos y el System Commit Charge de la maquina crece.

 image

 Cuando las paginas son accedidas, digamos que esta paginas son paginas “tocadas”, el System Commit Charge sigue ocupando lo mismo pero estas paginas obligatoriamente estarán en memoria principal, es lo que se conoce como el Working Set del proceso.

 image

 Básicamente esta es la diferencia que existe a nivel de consumo de recursos cuando hablamos de memoria comprometida y memoria reservada, en siguientes post hablaremos del Commit Limit y Commit Charge de una máquina de cara a determinar que tamaño es el mas adecuado para mi fichero de paginación.