ES2657800T3 - Compresión de memoria modificada - Google Patents

Compresión de memoria modificada Download PDF

Info

Publication number
ES2657800T3
ES2657800T3 ES15759972.1T ES15759972T ES2657800T3 ES 2657800 T3 ES2657800 T3 ES 2657800T3 ES 15759972 T ES15759972 T ES 15759972T ES 2657800 T3 ES2657800 T3 ES 2657800T3
Authority
ES
Spain
Prior art keywords
memory
compressed
pages
memory pages
page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES15759972.1T
Other languages
English (en)
Inventor
Yevgeniy M. Bak
Mehmet Iyigun
Landy Wang
Arun U. Kishan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Application granted granted Critical
Publication of ES2657800T3 publication Critical patent/ES2657800T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Un procedimiento implementado por ordenador para aumentar la cantidad de memoria disponible para asignación a procesos de programas que se ejecutan en un dispositivo informático, donde la memoria es una memoria (106) paginada, comprendiendo el procedimiento: identificar (502) un primer conjunto de páginas de memoria que se han modificado, en el que el primer conjunto de páginas de memoria se asigna a uno de los procesos; comprimir (504) el primer conjunto de páginas de memoria en un almacenamiento (110) comprimido de la memoria (106) paginada, en el que el almacenamiento comprimido está compuesto por un segundo conjunto de páginas de memoria; permitir (506) a un administrador (102) de memoria reutilizar el primer conjunto de páginas de memoria después de que el primer conjunto de páginas de memoria haya sido comprimido en el almacenamiento (110) comprimido; y escribir (508) el segundo conjunto de páginas de memoria en un archivo (112) de página en lugar de escribir el primer conjunto de páginas de memoria en el archivo (112) de página, caracterizado porque el almacenamiento (110) comprimido está asociado solo con dicho uno de los procesos, y el archivo (112) de página está ubicado en un dispositivo de almacenamiento secundario que tiene tiempos de lectura/escritura más lentos pero mayor capacidad de almacenamiento que la memoria (106) paginada.

Description

5
10
15
20
25
30
35
40
45
50
55
DESCRIPCION
Compresión de memoria modificada Antecedentes
A medida que la tecnología informática ha avanzado, el rendimiento de los procesadores informáticos ha aumentado. El rendimiento de tales procesadores de ordenador, sin embargo, a veces se ve obstaculizado por otros cuellos de botella en el ordenador. Por ejemplo, la velocidad de transferencia de datos desde las unidades de disco duro a la memoria de acceso aleatorio (RAM) es un cuello de botella en el rendimiento del ordenador. Una forma de reducir el impacto de los cuellos de botella en el ordenador es almacenar más datos en la RAM. Sin embargo, el coste de la RAM sigue siendo lo suficientemente alto como para que sea típicamente costoso prohibir el uso de grandes cantidades de RAM en los ordenadores.
El documento US 2007/0005911 A1 divulga un procedimiento de compresión de memoria dinámica que, en lugar de un área de intercambio convencional que típicamente se implementa usando un disco duro, adopta un nuevo dispositivo de bloque "en memoria" que actúa como un área de intercambio comprimido, y también como un soporte para el área comprimida mientras realiza de forma transparente la compresión y descompresión necesarias. El nuevo dispositivo de bloques comprende varios "fragmentos" de memoria virtualmente contiguos, a través de los cuales se realiza la compresión y la gestión del espacio libre en la memoria.
El documento US 2014/0006745 A1 divulga un procedimiento de selección de páginas de memoria para la compresión en función del recuento de población. El procedimiento primero analiza un conjunto de datos almacenados en una página de memoria de una memoria no comprimida. El gestor 130 de compresión identifica un recuento de población asociado con el conjunto de datos basado en el análisis, compara el recuento de población con un valor de umbral, y selecciona la página de memoria para la compresión si el recuento de población es menor que el valor de umbral.
El documento US 2002/0147893 A1 divulga un procedimiento para operar un sistema de procesamiento de datos que tiene una memoria principal dividida en una porción 15 no comprimida y una memoria 14 de controlador. El sistema comprende un controlador 16 de dispositivo que actúa como una partición de intercambio para el sistema operativo. El controlador 16 de dispositivo intercepta las páginas de memoria que se van a intercambiar desde el sistema operativo, las comprime y copia la página comprimida en un área 14 de memoria de controlador previamente reservada.
El documento US 2013/0159662 A1 divulga un procedimiento de intercambio que comprende la etapa de identificar páginas candidatas para el intercambio de un conjunto de procesos en funcionamiento, reservar espacio en un archivo de intercambio basado en un tamaño total calculado de las páginas candidatas identificadas, asignar una ubicación en el espacio reservado del archivo de intercambio para cada archivo candidato, e intercambiar las páginas candidatas.
Sumario
La invención se define mediante la materia objeto de las reivindicaciones independientes. Realizaciones ventajosas se indican en las reivindicaciones dependientes.
De acuerdo con una o más realizaciones, se identifica un primer conjunto de páginas de memoria en una memoria de página que se han modificado, en el que el primer conjunto de páginas de memoria se asigna a uno de los procesos de programas que se ejecutan en un dispositivo informático. El primer conjunto de páginas de memoria se comprime en un almacenamiento comprimido que se compone de un segundo conjunto de páginas de memoria en la memoria paginada y está asociado solo con dicho uno de los procesos. Después de que el primer conjunto de páginas de memoria se haya comprimido en el almacenamiento comprimido, un administrador de memoria puede reutilizar el primer conjunto de páginas de memoria. Además, el segundo conjunto de páginas de memoria se escribe en un archivo de página en lugar de escribir el primer conjunto de páginas de memoria en el archivo de página, donde el archivo de página se encuentra en un dispositivo de almacenamiento secundario que tiene tiempos de lectura/escritura más lentos pero una capacidad de almacenamiento más grande que la memoria paginada.
De acuerdo con una o más realizaciones, un dispositivo informático incluye una memoria, un administrador de memoria configurado para gestionar páginas de memoria que es una memoria paginada, y un administrador de almacenamiento comprimido. El administrador de almacenamiento comprimido está configurado para comprimir un primer conjunto de páginas de memoria que se han modificado, en un almacenamiento comprimido de la memoria paginada, donde el primer conjunto de páginas de memoria se asigna a uno de los procesos de los programas que se ejecutan en el dispositivo informático, y el almacenamiento comprimido se compone de un segundo conjunto de páginas de memoria y está asociado solo con dicho uno de los procesos. El administrador de almacenamiento comprimido está configurado además para permitir, para cada página de memoria del primer conjunto de páginas de memoria, al administrador de memoria reutilizar la página de memoria después de que la página de memoria se haya comprimido en el almacenamiento comprimido, y escribir el segundo conjunto de memoria páginas a un archivo de página a falta de escribir el primer conjunto de páginas de memoria en el archivo de página. El archivo de
5
10
15
20
25
30
35
40
45
50
55
página se encuentra en un dispositivo de almacenamiento secundario que tiene tiempos de lectura/escritura más lentos pero mayor capacidad de almacenamiento que la memoria paginada.
Breve descripción de los dibujos
Los mismos números se usan a lo largo de los dibujos para hacer referencia a características similares.
La figura 1 ilustra un sistema de ejemplo que emplea compresión de memoria modificada de acuerdo con una o más realizaciones.
La figura 2 ilustra un ciclo de vida de ejemplo de páginas de memoria de acuerdo con una o más realizaciones.
La figura 3 ilustra un registro de ejemplo de memoria paginada de acuerdo con una o más realizaciones.
La figura 4 ilustra un ejemplo de compresión de páginas de memoria de acuerdo con una o más realizaciones.
La figura 5 es un diagrama de flujo que ilustra un proceso de ejemplo para comprimir páginas de memoria de acuerdo con una o más realizaciones.
La figura 6 es un diagrama de flujo que ilustra un proceso de ejemplo para recuperar páginas de memoria comprimidas de acuerdo con una o más realizaciones.
La figura 7 ilustra un mapa de página de memoria de ejemplo de acuerdo con una o más realizaciones.
La figura 8 ilustra un mapa de región de ejemplo de acuerdo con una o más realizaciones.
La figura 9 muestra un ejemplo de un intercambio de salida de un conjunto de trabajo de acuerdo con una o más realizaciones.
La figura 10 es un diagrama de flujo que ilustra un proceso de ejemplo para el intercambio de salida del conjunto de trabajo de acuerdo con una o más realizaciones.
La figura 11 es un diagrama de flujo que ilustra un proceso de ejemplo para el intercambio de conjuntos de trabajo de acuerdo con una o más realizaciones.
La figura 12 ilustra un sistema ejemplar que incluye un dispositivo informático ejemplar que es representativo de uno o más sistemas y/o dispositivos que pueden implementar las diversas técnicas descritas en este documento.
Descripción detallada
La compresión de memoria modificada se trata en el presente documento. Una memoria en un sistema se compone de múltiples bloques o porciones denominadas páginas de memoria (o simplemente páginas). Un conjunto de páginas de memoria de un conjunto de trabajo de un programa, como al menos algunas de las páginas de memoria en el conjunto de trabajo que se han modificado, se comprimen en un almacenamiento comprimido antes de escribirse en un archivo de página. Las páginas de memoria pueden ser readaptadas por un administrador de memoria después de ser comprimidas en el almacenamiento comprimido, independientemente de si el almacenamiento comprimido se ha escrito en el archivo de página. El almacenamiento comprimido se compone de varias páginas de memoria, y el administrador de memoria puede reutilizar las páginas de memoria de almacenamiento comprimidas después de escribirlas en el archivo de página. Las solicitudes subsiguientes del administrador de memoria para páginas de memoria comprimidas en un almacenamiento comprimido se satisfacen accediendo a las páginas de memoria de almacenamiento comprimidas (incluida la recuperación de las páginas de memoria de almacenamiento comprimidas del archivo de la página si están escritas en el archivo de página), descomprimiendo la memoria solicitada páginas, y devolver las páginas de memoria solicitadas al administrador de memoria.
Además, en ciertas situaciones, como cuando se suspende un programa, el conjunto de trabajo de las páginas de memoria se intercambia. El intercambio externo del conjunto de páginas de memoria incluye la identificación de una lista de páginas de memoria en el conjunto de trabajo de un proceso del programa, la compresión de las páginas de memoria identificadas y la escritura de las páginas de memoria identificadas comprimidas en el almacenamiento comprimido en orden secuencial por la dirección de memoria virtual de las páginas de memoria identificadas. El espacio está reservado en el archivo de página para el almacenamiento comprimido, y el almacenamiento comprimido se escribe en el espacio reservado en el archivo de página.
En respuesta a una determinación posterior de que el programa debe reanudarse, el conjunto de trabajo de las páginas de memoria para el programa se intercambia. Al intercambiar el conjunto de trabajo de las páginas de memoria, se recupera el almacenamiento comprimido del archivo de página y se almacena el almacenamiento comprimido en un conjunto de páginas de memoria de almacenamiento comprimidas. Las páginas de memoria de almacenamiento comprimidas se descomprimen y se devuelven a un administrador de memoria para incluirlas en el conjunto de trabajo del programa.
La figura 1 ilustra un sistema 100 de ejemplo que emplea compresión de memoria modificada de acuerdo con una o más realizaciones. El sistema 100 incluye un administrador 102 de memoria, un administrador 104 de almacenamiento comprimido, y una memoria 106 paginada. Generalmente, el administrador 102 de memoria gestiona el almacenamiento de datos en la memoria 106 paginada. El administrador 102 de memoria asigna porciones de la memoria 106 paginada a diversos programas 108 en el sistema 100. Un programa 108, cuando se ejecuta, también se denomina aquí proceso (que es una instancia de un programa 108 en ejecución), de modo que porciones de la memoria 106 paginada asignadas a un programa 108 también se denominan asignadas a un proceso del programa 108. Las páginas asignadas a un proceso son propiedad o están dedicadas a ese proceso y
5
10
15
20
25
30
35
40
45
50
55
60
son utilizadas por ese proceso y no por otro proceso (y, por lo tanto, también se las denomina páginas privadas). Los programas 108 pueden ser aplicaciones, programas de sistemas operativos u otros componentes o módulos. El administrador 102 de memoria recibe solicitudes de estos programas 108 para recuperar datos de la memoria 106 paginada y para escribir datos en la memoria 106 paginada. La memoria 106 paginada puede ser, por ejemplo, cualquier tipo de memoria direccionable de CPU (Unidad de Procesamiento Central), tal como memoria volátil (por ejemplo, RAM) o memoria no volátil (por ejemplo, memoria Flash).
El administrador 102 de memoria también asigna una o más porciones de la memoria 106 paginada al administrador 104 de almacenamiento comprimido. Aunque se ilustra por separado, el administrador 104 de almacenamiento comprimido se trata como un programa 108 con el fin de asignar páginas de memoria. El administrador 104 de almacenamiento comprimido genera uno o más almacenamientos 110 comprimidos para el almacenamiento de datos en forma comprimida, por ejemplo, un almacenamiento 110 comprimido para cada programa 108. El sistema 100 también incluye un archivo 112 de página, que es un archivo en un dispositivo de almacenamiento en el que pueden almacenarse páginas de memoria. El dispositivo de almacenamiento en el que está almacenado el archivo 112 de página es un dispositivo de almacenamiento secundario en el sistema 100, y en una o más realizaciones tiene tiempos de lectura/escritura más lentos pero una capacidad de almacenamiento mayor que la memoria 106 paginada. El dispositivo de almacenamiento en el que se almacena el archivo 112 de página puede ser, por ejemplo, una memoria Flash (por ejemplo, un disco de estado sólido (SSD)) o un disco magnético. Aunque se ilustra un único archivo 112 de página en la figura 1, debe tenerse en cuenta que pueden incluirse múltiples archivos de página en el sistema 100.
El administrador 102 de memoria gestiona la memoria 106 paginada usando la paginación. El administrador 102 de memoria organiza la memoria 106 (por ejemplo, RAM) en páginas, que son una unidad de datos de tamaño particular (por ejemplo, fijo). La acción de paginación se refiere a la lectura de datos en unidades de páginas del archivo de respaldo, que es el archivo 112 de página en el sistema 100, cuando los datos no están en la memoria 106. La acción de paginación también se refiere a escribir datos sucios (modificados) en unidades de páginas en el archivo 112 de página. Por lo tanto, las páginas de memoria también se denominan páginas de memoria respaldadas por archivos de páginas. Dichas técnicas de búsqueda son bien conocidas por los expertos en la técnica.
El administrador 102 de memoria incluye un controlador 114 de memoria que opera para llevar a cabo la funcionalidad del administrador 102 de memoria, y una tabla 116 de páginas que es un registro de diversa información con respecto a las páginas de memoria de la memoria 106 paginada. La tabla 116 de páginas incluye información que indica dónde se almacenan las páginas de memoria en cualquier momento dado. Como se analiza con más detalle a continuación, las páginas de memoria se almacenan normalmente en memoria física (memoria 106 paginada) o en un almacenamiento 110 comprimido (que puede almacenarse en la memoria física o en el archivo 112 de página), aunque en algunas situaciones las páginas de memoria no comprimida pueden almacenarse en el archivo 112 de página. Para las páginas de memoria almacenadas en la memoria física, el administrador 102 de memoria accede directamente a las páginas de memoria. Para las páginas de memoria almacenadas en un almacenamiento 110 comprimido, el administrador 102 de memoria solicita las páginas de memoria desde el administrador 104 de almacenamiento comprimido, que recupera y descomprime las páginas de memoria según corresponda, y devuelve las páginas de memoria descomprimidas al administrador 102 de memoria. En el caso de que una página de memoria no comprimida esté almacenada en el archivo 112 de página, el administrador de memoria recupera la página de memoria del archivo 112 de página.
La memoria 106 paginada incluye múltiples páginas que pueden clasificarse como una de múltiples tipos diferentes de páginas en cualquier momento dado, y esta clasificación puede cambiar a lo largo del tiempo. Un tipo de página de memoria es una página de memoria que ha sido asignada a un programa 108 y que actualmente está siendo utilizada por el programa 108, y este tipo de página de memoria se denomina página de conjunto de trabajo (o alternativamente una página asignada) en el conjunto de trabajo de un proceso del programa 108 (también denominado conjunto de trabajo del programa 108). Una página de memoria que se usa actualmente se refiere a una página de memoria a la que ha accedido el programa 108 dentro de una cantidad de tiempo umbral (por ejemplo, los 20 segundos anteriores), o el programa 108 está accediendo de tal manera que la memoria la página no debe ser reutilizada por el administrador 102 de memoria. La reutilización de una página de memoria se refiere a la página de memoria reutilizada por el administrador 102 de memoria para otra cosa, como el almacenamiento de datos diferentes para el mismo programa o uno diferente o para otro uso en el sistema.
Otro tipo de página de memoria es una página de memoria que ha sido asignada a un programa 108 y que no está siendo utilizada actualmente por el programa 108, y este tipo de página de memoria se denomina página de espera (o alternativamente, una página de reasignable). Una página de memoria que no se usa actualmente se refiere a una página cuyo contenido no se ha modificado (o se ha escrito en el archivo 112 de página o un almacenamiento 110 comprimido desde la última modificación) y que el programa 108 no ha accedido dentro de una cantidad de tiempo umbral (por ejemplo, los 20 segundos previos), o se accede de otra manera por el programa 108 de tal manera que la página de memoria puede ser reutilizada por el administrador 102 de memoria. Una página de memoria puede reutilizarse, por ejemplo, asignándole un tipo diferente de página (por ejemplo, trabajando), asignándola a un programa diferente, y así sucesivamente.
5
10
15
20
25
30
35
40
45
50
55
Otro tipo de página de memoria es una página de memoria cuyo contenido ha sido modificado, pero aún no copiado en el archivo 112 de página, y este tipo de página de memoria se denomina página modificada (o alternativamente, una página sucia). El administrador 102 de memoria no debe reutilizar una página de memoria modificada. Sin embargo, después de comprimir y almacenar una página de memoria modificada en un almacenamiento 110 comprimido como se analiza con más detalle a continuación, la clasificación de la página de memoria puede cambiarse (por ejemplo, a una página de espera o a una página libre).
Otro tipo de página de memoria es una página de memoria que no está asignada actualmente a un programa 108, y con la que el administrador 102 de memoria puede hacer cualquier cosa (incluida la reutilización). Este tipo de página de memoria se conoce como página libre (o, alternativamente, página desasignada).
El administrador 102 de memoria usa diversas reglas o criterios para determinar cuándo se asignan las páginas de memoria de la memoria 106 paginada a los programas 108, qué páginas de memoria están asignadas a qué programas 108, qué páginas de memoria previamente asignadas a un programa 108 van a ser reutilizadas, y así sucesivamente. El administrador 102 de memoria también determina la clasificación de los tipos de páginas de memoria, cambiando las clasificaciones de las páginas de memoria según corresponda. En una o más realizaciones, el administrador 102 de memoria mantiene una lista u otro registro cuyas páginas de memoria de la memoria 106 paginada se clasifican como qué tipo de página. Por ejemplo, el administrador 102 de memoria puede mantener una lista u otro registro de páginas de conjunto de trabajo, una lista u otro registro de páginas en espera, una lista o registro de páginas modificadas, una lista o registro de páginas libres, y así sucesivamente.
El sistema 100 representa uno o más dispositivos. En una o más realizaciones, los componentes 102 - 108 ilustrados en el sistema 100 se incluyen como parte del mismo dispositivo informático. Alternativamente, los componentes se pueden extender a través de dos o más dispositivos.
La figura 2 ilustra un ejemplo de ciclo de vida 200 de páginas de memoria de acuerdo con una o más realizaciones. Una página de memoria puede asignarse a un programa e incluirse en un conjunto 202 de trabajo del programa. El conjunto 202 de trabajo del programa incluye páginas de conjunto de trabajo del programa. El administrador 102 de memoria puede recortar (también referido como reducir) las páginas de memoria en el conjunto 202 de trabajo del programa en varios momentos y por diversas razones, tales como hacer que las páginas de memoria estén disponibles para otros programas. Las páginas de memoria que se han escrito (modificado) y recortado del conjunto 202 de trabajo se mueven 204 a una lista 206 modificada de páginas de memoria.
El administrador 104 de almacenamiento comprimido comprime las páginas de memoria en la lista 206 modificada y agrega 208 las páginas de memoria comprimida a las páginas de memoria del almacenamiento 110 comprimido. El administrador 104 de almacenamiento comprimido puede determinar el tiempo de compresión de páginas de memoria en la lista modificada de diferentes maneras, como comprimir páginas de memoria a intervalos regulares o irregulares, comprimir páginas de memoria en respuesta a al menos un número de umbral de páginas de memoria incluidas. en la lista modificada, comprimir las páginas de memoria en respuesta a una solicitud del administrador 102 de memoria, comprimir las páginas de memoria en respuesta a una determinación de que las páginas de memoria de un proceso se van a intercambiar, como se analiza con más detalle a continuación, y así sucesivamente. Después de comprimirse y añadirse al almacenamiento 110 comprimido, las páginas de memoria en la lista 206 modificada se mueven 210 a una lista 212 de espera. La lista 212 de espera es una lista de páginas en espera, aunque las páginas de memoria pueden moverse alternativamente a una lista de páginas libres.
El almacenamiento 110 comprimido está hecho a su vez de múltiples páginas de memoria, también denominadas en el presente documento páginas de memoria de almacenamiento comprimidas, y estas páginas de memoria de almacenamiento comprimidas pueden moverse 214 a la lista 206 modificada según lo desee el almacenamiento 110 comprimido o el administrador 102 de memoria. Sin embargo, las páginas de memoria de almacenamiento comprimidas no tienen que moverse a la lista modificada durante mucho tiempo (potencialmente de manera indefinida) como se desee. Las páginas de memoria de almacenamiento comprimidas pueden permanecer en el conjunto de trabajo de almacenamiento comprimido.
Para páginas de memoria de almacenamiento comprimidas movidas a la lista 206 modificada, el administrador 102 de memoria (o alternativamente el administrador 104 de almacenamiento comprimido) escribe 216 las páginas de memoria de almacenamiento comprimidas en el archivo 112 de página. De este modo, una página de memoria del conjunto 202 de trabajo, después de ser comprimida y almacenada en una página de memoria de almacenamiento comprimida, puede escribirse en el archivo 112 de página. Debe observarse que el administrador 104 de almacenamiento comprimido no intenta comprimir las páginas de memoria de almacenamiento comprimidas en la lista 206 modificada. El gestor 104 de almacenamiento comprimido puede identificar las páginas de memoria que no debe intentar comprimir de diferentes maneras, como las basadas en el proceso al que están asignadas las páginas de memoria (por ejemplo, si se asigna a un proceso del sistema, como el administrador 104 de almacenamiento comprimido), no se intenta comprimir las páginas de memoria), manteniendo un registro de las páginas de memoria de almacenamiento comprimidas, y así sucesivamente.
Pueden surgir situaciones en las que una página de memoria del conjunto 202 de trabajo que se mueve a la lista 206 modificada no se puede comprimir o agregar de otro modo a una página de memoria del almacenamiento 110
5
10
15
20
25
30
35
40
45
50
55
60
comprimido en un período de tiempo esperado (por ejemplo, dentro de una cantidad de tiempo umbral), o el sistema 100 elige no comprimir una página de memoria en absoluto por varias razones de política. Tales situaciones pueden ocurrir ocasionalmente, tal como debido al uso de una gran cantidad de memoria en el sistema 100, uso pesado del procesador en el sistema 100, varias políticas aplicadas al sistema 100, y así sucesivamente. En tales situaciones, el administrador 102 de memoria escribe 218 la página de memoria descomprimida en el archivo 112 de página. Dichas páginas de memoria no están incluidas en una página de memoria del almacenamiento 110 comprimido, pero el administrador 102 de memoria mantiene un registro (por ejemplo, en la tabla 116 de páginas) de que dichas páginas de memoria están disponibles desde el archivo 112 de página en lugar del administrador 104 de almacenamiento comprimido.
Volviendo a la figura 1, las páginas de memoria 106 paginada tienen cada una un nivel de prioridad correspondiente. Solo los tipos particulares de páginas de memoria (por ejemplo, páginas modificadas) pueden tener niveles de prioridad o, alternativamente, todos los tipos de páginas de memoria pueden tener niveles de prioridad. El administrador 102 de memoria establece el nivel de prioridad para cada página de memoria, y puede determinar el nivel de prioridad para una página de memoria en una variedad de maneras diferentes. En una o más realizaciones, el nivel de prioridad para una página de memoria es el nivel de prioridad asignado por un sistema operativo al proceso o el subproceso que solicita la asignación de la página de memoria. También se pueden usar otros criterios para determinar el nivel de prioridad para una página de memoria, tal como una solicitud de un programa 108, la página de memoria asociada con un tipo particular de recuperación (por ejemplo, recuperación especulativa de páginas), y así sucesivamente. El administrador 102 de memoria también puede cambiar los niveles de prioridad de las páginas de memoria a lo largo del tiempo (por ejemplo, bajando los niveles de prioridad de las páginas de memoria no accedidas por un programa 108 por un período de tiempo umbral, disminuyendo los niveles de prioridad de las páginas de memoria comprimida almacenadas). Escrito en el archivo 112 de página y movido a la lista 212 de espera, y así sucesivamente).
Los niveles de prioridad se pueden usar de varias maneras en el sistema 100. En una o más realizaciones, las páginas de memoria se escriben en el archivo 112 de página en función de su nivel de prioridad. Las páginas de memoria que se escriben en el archivo 112 de página que son de prioridad más baja se escriben en el archivo de página antes de las páginas de memoria que son de mayor prioridad. Esto permite que las páginas de memoria de mayor prioridad permanezcan en la memoria física más tiempo que las páginas de memoria de menor prioridad y evita un escenario de inversión de prioridad en el que las páginas de mayor prioridad se escriben en el archivo de página (y ya no están en la memoria física) antes que las páginas de memoria de menor prioridad (que permanecen en la memoria física). De manera similar, en una o más realizaciones, las páginas de memoria se reutilizan a partir de la lista de espera en función de su nivel de prioridad. Las páginas de memoria en la lista de espera que son de prioridad menor se reutilizan antes de las páginas de memoria que son de mayor prioridad. Esto permite que las páginas de memoria de mayor prioridad permanezcan en la lista de espera más tiempo que las páginas de memoria de menor prioridad.
La figura 3 ilustra un registro 300 de ejemplo de memoria paginada de acuerdo con una o más realizaciones. Se ilustra un conjunto 302 de niveles de prioridad múltiples (X), el conjunto 302 de niveles de prioridad que incluye los niveles de prioridad que pueden corresponder a páginas. El registro 300 de memoria paginada es un registro de, por ejemplo, páginas modificadas de la memoria 106 paginada de la figura 1. Los niveles de prioridad con números más grandes pueden ser de mayor prioridad que los niveles de prioridad con números más pequeños (por ejemplo, el nivel de prioridad 4 puede ser de mayor prioridad que el nivel de prioridad 1) o viceversa. Alternativamente, etiquetas que no sean números se pueden usar para identificar niveles de prioridad, como letras u otros caracteres.
Para cada nivel 302 de prioridad, el registro 300 identifica un conjunto de cero o más páginas de memoria que tienen ese nivel de prioridad. Por ejemplo, las páginas 304 corresponden al nivel de prioridad 1, las páginas 306 corresponden al nivel de prioridad 3, y así sucesivamente. El registro 300 puede mantenerse en cualquiera de una variedad de maneras diferentes, como una lista u otra estructura de datos que identifica las páginas de memoria correspondientes a un nivel de prioridad particular, utilizando diferentes áreas de almacenamiento (por ejemplo, cachés diferentes) para páginas de memoria correspondientes a diferentes niveles de prioridad, etc.
Volviendo a la figura 1, el almacenamiento 110 comprimido se implementa como una o más páginas de memoria asignadas al administrador 104 de almacenamiento comprimido por el administrador 102 de memoria. Estas páginas de memoria son páginas de memoria en el espacio de direcciones virtuales del modo de usuario del administrador 104 de almacenamiento comprimido, que proporciona diversas funcionalidades. Las páginas de memoria que implementan el almacenamiento 110 comprimido no consumen espacio de direcciones virtuales del kernel y proporcionan seguridad para evitar la exposición de datos porque ningún programa de modo de usuario sin privilegios puede acceder a los datos en las páginas de memoria. Además, al usar páginas de memoria en el espacio de direcciones virtuales del administrador 104 de almacenamiento comprimido, el administrador 102 de memoria y el administrador 104 de almacenamiento comprimido tienen control sobre las páginas de memoria usando interfaces de programación de aplicaciones (API) de administrador de memoria existentes, permitiendo al administrador 104 de almacenamiento comprimido para controlar la capacidad de página de sus datos de respaldo, capacidades de intercambio, etc., según lo desee.
En una o más realizaciones, el administrador 104 de almacenamiento comprimido comprime páginas de memoria
5
10
15
20
25
30
35
40
45
50
55
60
106 paginada y almacena las páginas comprimidas en una región de un almacenamiento 110 comprimido, también denominado compresión de las páginas de memoria en el almacenamiento 110 comprimido o en la región del almacenamiento 110 comprimido. El administrador 104 de almacenamiento comprimido genera un almacenamiento 110 comprimido separado para (y asociado a) cada programa 108, y agrega páginas de memoria comprimida desde la lista 206 modificada desde un programa particular 108 a regiones del almacenamiento 110 comprimido asociadas con el programa particular. Alternativamente, el administrador 104 de almacenamiento comprimido puede generar y mantener almacenamientos 110 comprimidos en diferentes granularidades distintas de un almacenamiento 110 comprimido para cada programa 108 (por ejemplo, el administrador 104 de almacenamiento comprimido puede generar y mantener almacenamientos 110 comprimidos para un conjunto arbitrario de programas 108, o para toda la memoria paginable en el sistema).
Cada región del almacenamiento 110 comprimido está compuesta por múltiples páginas de memoria de la memoria 106 paginada que están asignadas al administrador 104 de almacenamiento comprimido por el administrador 102 de memoria. Por ejemplo, una región puede ser de 128 kilobytes y las páginas de memoria pueden ser 4 kilobytes, aunque estos valores son ejemplos y, alternativamente, se pueden usar otros tamaños de región y/o de página. Las páginas de memoria 106 paginada que se comprimen en una región particular tienen al menos niveles de prioridad similares, y las páginas de memoria que constituyen una región de la memoria 106 paginada tienen al menos niveles de prioridad similares a las páginas de memoria comprimidas en esa región. Las páginas de memoria que tienen al menos niveles de prioridad similares se refieren a las páginas de memoria que tienen niveles de prioridad iguales o similares.
Debe observarse que las operaciones discutidas en este documento realizadas por el administrador 104 de almacenamiento comprimido o un almacenamiento 110 comprimido pueden ser realizadas por uno o ambos del administrador 104 de almacenamiento comprimido y un almacenamiento 110 comprimido, que las operaciones analizadas en el presente documento son realizado por el administrador 104 de almacenamiento comprimido puede ser realizado alternativamente por un almacenamiento 110 comprimido, y las operaciones analizadas en este documento como realizadas por un almacenamiento 110 comprimido pueden ser realizadas alternativamente por el administrador 104 de almacenamiento comprimido. En una o más realizaciones, el administrador 104 de almacenamiento comprimido es responsable de gestionar cada almacenamiento 110 comprimido, enrutar solicitudes de lectura y escritura al almacenamiento 110 comprimido apropiado, gestionar la memoria para el almacenamiento 110 comprimido (por ejemplo, solicitar que las páginas de memoria se asignen a un almacenamiento 110 comprimido), y así sucesivamente. En tales situaciones, cada almacenamiento 110 comprimido puede ser simplemente un conjunto de páginas de memoria. Alternativamente, al menos una parte del control y la lógica para gestionar la memoria para un almacenamiento 110 comprimido (por ejemplo, solicitar que un conjunto de páginas de la memoria 106 paginada sea asignado al almacenamiento 110 comprimido por el administrador 102 de memoria) puede ser implementado por el almacenamiento 110 comprimido en sí. En tales situaciones, el almacenamiento 110 comprimido incluye una o más páginas de memoria, así como un módulo de almacenamiento comprimido para implementar el control y la lógica para administrar la memoria para el almacenamiento 110 comprimido.
En una o más realizaciones, las páginas de memoria 106 paginada que se comprimen en una región particular del almacenamiento 110 comprimido tienen el mismo nivel de prioridad, y se usan regiones diferentes para diferentes niveles de prioridad. Las páginas de memoria que componen una región del almacenamiento 110 comprimido tienen el mismo nivel de prioridad que las páginas de memoria comprimidas en esa región. Por ejemplo, el administrador 104 de almacenamiento comprimido puede comprimir las páginas 304 de la figura 3 en una región que está compuesta de páginas de memoria asignadas al administrador 104 de almacenamiento comprimido y que tiene un nivel de prioridad 1. A modo de otro ejemplo, el administrador 104 de almacenamiento comprimido puede comprimir las páginas 306 de la figura 3 en otra región que está compuesta de páginas de memoria asignadas al administrador 104 de almacenamiento comprimido y que tiene un nivel de prioridad 3. Debe observarse que, para cada nivel de prioridad, el administrador 104 de almacenamiento comprimido puede crear cero o más regiones compuestas por páginas de memoria correspondientes a ese nivel de prioridad.
Alternativamente, las páginas de memoria 106 paginada que se comprimen en una región particular del almacenamiento 110 comprimido pueden tener niveles de prioridad similares, pero no necesariamente los mismos. Los niveles de prioridad que son similares se pueden determinar de diferentes maneras, como por ejemplo si los niveles de prioridad se encuentran dentro de un número umbral (por ejemplo, 1 o 2) de niveles uno del otro. Por ejemplo, el nivel de prioridad 1 y el nivel de prioridad 2 pueden ser similares y así las páginas de nivel de prioridad 1 y las páginas de nivel de prioridad 2 pueden comprimirse en la misma región, pero el nivel de prioridad 1 y el nivel de prioridad 5 pueden no ser similares y por lo tanto las páginas de nivel de prioridad 1 y las páginas de nivel de prioridad 5 no se comprimen en la misma región.
De forma similar, las páginas de memoria que constituyen una región de la memoria 106 paginada pueden tener niveles de prioridad similares, pero no necesariamente los mismos que las páginas de memoria comprimidas en esa región. Por ejemplo, las páginas de memoria que constituyen una región del almacenamiento 110 comprimido pueden tener un nivel de prioridad 3, y las páginas de memoria comprimidas en esa región pueden tener un nivel de prioridad 2 o un nivel de prioridad 3. Además, la región puede estar formada por páginas de memoria del mismo nivel de prioridad o similar. Por ejemplo, una región puede estar formada por algunas páginas de memoria con nivel de prioridad 2 y algunas páginas de memoria con nivel de prioridad 3.
5
10
15
20
25
30
35
40
45
50
55
60
Para crear una región, el administrador 104 de almacenamiento comprimido solicita que el administrador 102 de memoria asigne un conjunto de páginas de memoria 106 paginada al administrador 104. El conjunto de páginas asignado se clasifica como páginas de conjunto de trabajo, y el administrador 104 de almacenamiento comprimido asocia el conjunto de páginas asignadas con un almacenamiento 110 comprimido particular. El administrador 104 de almacenamiento comprimido comprime páginas de memoria en la lista 206 modificada, y almacena esas páginas comprimidas en el conjunto de páginas asignadas al administrador 104 de almacenamiento comprimido.
De este modo, por ejemplo, un conjunto particular de páginas se comprime en un conjunto adicional de páginas que corresponden al menos a niveles de prioridad similares. Después de que ese conjunto particular de páginas se comprime, el conjunto adicional de páginas también se clasifica como páginas modificadas. Por lo tanto, el administrador 104 de almacenamiento comprimido comprime ese conjunto particular de páginas en un conjunto diferente de páginas del mismo tipo (modificado) y que corresponde a niveles de prioridad al menos similares. Sin embargo, cuando el administrador 104 de almacenamiento comprimido comprime ese conjunto particular de páginas, la cantidad de páginas en ese conjunto particular de páginas es típicamente mayor que la cantidad de páginas en el conjunto comprimido de páginas. El conjunto comprimido de páginas se puede escribir en el archivo 112 de página. Se pueden aplicar varias políticas diferentes para determinar cuándo (o si) el conjunto comprimido de páginas se escribe en el archivo 112 de página.
La figura 4 ilustra un ejemplo de compresión de páginas de memoria de acuerdo con una o más realizaciones. La memoria 106 paginada incluye cinco páginas 306 de memoria que tienen el mismo nivel de prioridad (por ejemplo, nivel de prioridad 3 como se discutió anteriormente), como se ilustra en 402. El administrador 104 de almacenamiento comprimido tiene asignada una región de un almacenamiento comprimido que incluye dos páginas 404 de memoria que tienen al menos niveles de prioridad similares a los de las páginas 306 de memoria. El administrador 104 de almacenamiento comprimido comprime las páginas 306 de memoria en las páginas 404 de memoria, como se ilustra en 406. Después de la compresión, el administrador 102 de memoria puede reutilizar las páginas 306 de memoria porque la versión comprimida de las páginas 306 de memoria se almacena en la memoria 106 paginada como páginas 404 de memoria. Por lo tanto, después de la compresión, la memoria 106 paginada almacena las páginas 404 de memoria, pero no necesita almacenar las páginas 306 de memoria.
La figura 5 es un diagrama de flujo que ilustra un proceso 500 de ejemplo para comprimir páginas de memoria de acuerdo con una o más realizaciones. El proceso 500 se lleva a cabo por un administrador de almacenamiento comprimido, tal como el administrador 104 de almacenamiento comprimido de la figura 1, y puede implementarse en software, firmware, hardware o combinaciones de los mismos. El proceso 500 se muestra como un conjunto de acciones y no está limitado al orden mostrado para realizar las operaciones de las diversas acciones. El proceso 500 es un proceso de ejemplo para comprimir páginas de memoria; discusiones adicionales sobre la compresión de páginas de memoria se incluyen aquí con referencia a diferentes figuras.
En el proceso 500, se identifica un conjunto de una o más páginas de memoria en la lista modificada (acción 502). El conjunto de una o más páginas de memoria puede identificarse de diversas maneras, como identificarse en el orden en que las páginas de memoria se agregan a la lista modificada, según los niveles de prioridad de las páginas (por ejemplo, identificar páginas de prioridad más baja antes que las páginas de mayor prioridad), y demás.
El conjunto de páginas de memoria identificadas en la acción 502 se comprimen en una región de un almacenamiento comprimido de la memoria paginada (acción 504). Esta región del almacenamiento comprimido se compone de una o más páginas de memoria de almacenamiento comprimidas que tienen al menos niveles de prioridad similares al conjunto de páginas de memoria identificadas en la acción 502. Como parte de la compresión en la acción 504, el administrador de almacenamiento comprimido mantiene un registro de dónde en la región se almacena la versión comprimida de cada página de memoria del conjunto de páginas de memoria. Este registro puede tomar varias formas, como para cada versión comprimida de una página de memoria, un registro de las cuales una o más páginas de memoria comprimidas almacenan la versión comprimida de la página de memoria, para cada versión comprimida de una página de memoria un registro de un rango de dirección en la región que almacena la versión comprimida de la página de memoria, y así sucesivamente.
La compresión de una página de memoria se refiere a comprimir el contenido de (por ejemplo, datos almacenados en) la página de memoria. Cualquiera de una variedad de técnicas de compresión públicas y/o propietarias se puede usar para comprimir una página de memoria. Por ejemplo, una página de memoria se puede comprimir usando algoritmos de compresión de codificación de longitud de ejecución, algoritmos de compresión LZW, algoritmos de codificación Huffman, y así sucesivamente. Múltiples algoritmos de compresión diferentes pueden ser empleados opcionalmente, tales como diferentes algoritmos de compresión para diferentes tipos de contenido. Por ejemplo, se puede usar un algoritmo de compresión para contenido alfanumérico y/o de texto, otro algoritmo de compresión se puede usar para el contenido de la imagen, y otro algoritmo de compresión se puede usar para el contenido de audio. La técnica de compresión utilizada para comprimir una página de memoria es típicamente un algoritmo de compresión sin pérdida, aunque en ciertas circunstancias (por ejemplo, para cierto contenido de imagen y/o audio) se puede usar alternativamente un algoritmo de compresión con pérdida. El algoritmo de compresión particular también puede depender del dispositivo, donde un dispositivo más rápido (por ejemplo, con uno o más procesadores más potentes) puede configurarse con un algoritmo de compresión más intensivo en el procesador que se comprime mejor que un dispositivo más lento (por ejemplo, con uno menos potente o más procesadores) puede configurarse
5
10
15
20
25
30
35
40
45
50
55
con un algoritmo que requiere menos procesador y que no se comprime también. El algoritmo de compresión particular también puede basarse en una compensación con el rendimiento del dispositivo de almacenamiento. Si la CPU supera al dispositivo de almacenamiento por un amplio margen, se puede usar un algoritmo de compresión más intensivo en el procesador que se comprime mejor (y por lo tanto da como resultado menos entrada/salida del dispositivo de almacenamiento).
En una o más realizaciones, las páginas de memoria se comprimen en la acción 504 individualmente. Alternativamente, dos o más páginas de memoria se pueden comprimir juntas (por ejemplo, un algoritmo de compresión se puede ejecutar en dos o más páginas de memoria juntas en vez de individualmente).
El procesamiento adicional del conjunto de páginas de memoria también se puede realizar opcionalmente en la acción 504. Este procesamiento adicional puede encriptar el contenido del conjunto de páginas de memoria (por ejemplo, usando cifrado de clave simétrica, cifrado de clave pública, etc.), generando datos de detección de error como CRC (verificación de redundancia cíclica) para el conjunto de memoria páginas, generando información de autenticación tal como HMAC (Código de autenticación de mensaje hash) para el conjunto de páginas de memoria, y así sucesivamente.
El conjunto de páginas de memoria identificadas en la acción 502 se mueven a la lista de espera (acción 506) después de ser comprimidas en el almacenamiento comprimido, o alternativamente a la lista libre. El conjunto de páginas de memoria puede moverse a la lista de espera (o lista libre) de varias maneras, tal como en respuesta al administrador 104 de almacenamiento comprimido que notifica al administrador 102 de memoria que el conjunto de páginas de memoria puede liberarse. El conjunto de páginas de memoria identificadas en la acción 502 puede moverse a la lista de espera (o lista libre) y reutilizarse porque no es necesario mantener dos versiones de la misma página de memoria (una versión sin comprimir y una versión comprimida) en la memoria paginada puede que no sea un uso eficiente de la memoria paginada.
Las páginas de memoria de almacenamiento comprimidas que componen la región del almacenamiento comprimido se escriben en el archivo de página por el administrador de memoria (acción 508). Cabe señalar que las páginas de memoria comprimida del almacenamiento no necesitan escribirse en el archivo de la página de inmediato. Por el contrario, la escritura desde las páginas de memoria comprimida se puede retrasar hasta un momento posterior, tal como un momento en que el administrador 102 de memoria desea liberar páginas de memoria para asignarlas a otro programa 108, un momento en el que el administrador 104 de almacenamientos comprimido desea escribir las páginas de memoria de almacenamiento comprimidas, y así sucesivamente. También se debe tener en cuenta que se puede implementar cualquier cantidad de técnicas para mejorar la velocidad, eficiencia, etc., al escribir las páginas de memoria comprimida en el archivo de la página (por ejemplo, las páginas de memoria del almacenamiento comprimidas pueden escribirse en fragmentos contiguos, etc.).
Debe señalarse además que las páginas de memoria de almacenamiento comprimidas se escriben en el archivo 508 de página en lugar de escribir el conjunto de páginas de memoria identificadas en la acción 502 en el archivo de página. Por lo tanto, las versiones comprimidas del conjunto de páginas de memoria identificadas en la acción 502 se escriben en el archivo de página sin (o en ausencia de) escribir las versiones descomprimidas del conjunto de páginas de memoria en el archivo de página.
Una vez comprimidas las páginas de memoria de almacenamiento que conforman la región se escriben en el archivo de la página, las páginas de memoria de almacenamiento comprimidas se colocan en la lista de espera en el nivel de prioridad de las páginas de memoria de almacenamiento comprimidas (o alternativamente un nivel inferior). En este punto, las páginas de memoria de almacenamiento comprimidas se tratan como memoria disponible en el sistema 100 y se pueden reutilizar en cualquier momento según lo desee el administrador 102 de memoria.
En una o más realizaciones, el administrador de almacenamiento comprimido no permite que el administrador de memoria escriba una página de memoria de almacenamiento comprimida hasta que la página de memoria de almacenamiento comprimida esté sustancialmente llena. Una página de memoria de almacenamiento comprimida que se llena sustancialmente hace referencia a que queda poco espacio de almacenamiento en la página de memoria en el que se pueden almacenar páginas de memoria comprimidas adicionales. Por ejemplo, al menos una cantidad umbral del espacio de almacenamiento de la página de memoria de almacenamiento comprimido se ha utilizado para almacenar las páginas de memoria comprimida.
Debe observarse que, aunque algunas de las discusiones en este documento se refieren a comprimir páginas de memoria de uno o más procesos, las técnicas discutidas en este documento se aplican análogamente a la compresión de páginas de memoria para toda la memoria paginable, que puede incluir memoria paginada de modo de usuario y memoria paginada modo kernel. En tales situaciones, el archivo de página completo está representado por la memoria en el almacenamiento comprimido, y el almacenamiento comprimido administra esencialmente el archivo de página, ya que todas las páginas modificadas pasan por el almacenamiento comprimido.
La figura 6 es un diagrama de flujo que ilustra un proceso de ejemplo 600 para recuperar páginas de memoria comprimida de acuerdo con una o más realizaciones. El proceso 600 se lleva a cabo por un administrador de almacenamiento comprimido, tal como el administrador 104 de almacenamiento comprimido de la figura 1, y puede
5
10
15
20
25
30
35
40
45
50
55
implementarse en software, firmware, hardware o combinaciones de los mismos. El proceso 600 se muestra como un conjunto de acciones y no está limitado al orden mostrado para realizar las operaciones de las diversas acciones. El proceso 600 es un proceso de ejemplo para recuperar páginas de memoria comprimidas; discusiones adicionales para recuperar páginas de memoria comprimida se incluyen aquí con referencia a diferentes figuras.
Se recibe una solicitud de una página de memoria desde el administrador de memoria (acción 602). Esta solicitud puede ser, por ejemplo, en respuesta a una solicitud de un programa 108 que solicita acceso a contenido en una página de memoria después de que al menos una página de memoria se haya comprimido en un almacenamiento 110 comprimido. La solicitud incluye un identificador de al menos una página de memoria, también conocida como clave. El administrador de memoria puede solicitar una sola página de memoria o varias páginas de memoria.
En respuesta a la solicitud, se verifica si la página de memoria solicitada se encuentra en una página de memoria de almacenamiento comprimida en la memoria paginada (acción 604). Como se discutió anteriormente, las páginas de memoria de almacenamiento comprimidas no necesitan escribirse inmediatamente en el archivo 112 de página, por lo que la página de memoria solicitada todavía puede estar disponible en una página de memoria de almacenamiento comprimida de la memoria 106 paginada. Debe observarse que la página de memoria de almacenamiento comprimida puede estar en un conjunto de trabajo del administrador 104 de almacenamiento comprimido o en varias listas (por ejemplo, una lista modificada o una lista de espera), pero aún estar en memoria paginada.
Si la página de memoria solicitada está en un almacenamiento comprimido en la memoria paginada, entonces la página de memoria solicitada se descomprime (acción 606) y se devuelve al administrador de memoria (acción 608). Después de descomprimirse y devolverse, la página de memoria comprimida se elimina de la región del almacenamiento 110 comprimido, evitando así la duplicación de la página de memoria entre las formas comprimida y no comprimida de la página de memoria. Después de descomprimir y devolver el contenido de una página de memoria comprimida de almacenamiento, la página de la memoria comprimida de almacenamiento puede reutilizarse o liberarse.
La manera en que se descomprime la página de memoria solicitada puede variar en función, al menos en parte, de la técnica utilizada para comprimir la página de memoria solicitada. Cualquier otro procesamiento realizado en la página de memoria también se verifica o deshace en la acción 606, como descifrar la página de memoria, verificar los datos de detección de errores, verificar la información de autenticación, corregir los datos (si es posible) si esta verificación falla, y así sucesivamente. Si los datos de detección de errores o la información de autenticación no se pueden verificar y/o se corrigen los datos, se puede devolver una indicación de que la página de memoria solicitada está dañada en el administrador de memoria en lugar de la página de memoria solicitada descomprimida.
Si la página de memoria solicitada no está en un almacenamiento comprimido en la memoria paginada, entonces se recupera una página de memoria de almacenamiento comprimida que incluye la página de memoria solicitada del archivo de página (acción 610). Recuperar una página de memoria de almacenamiento comprimida incluye leer la página de memoria de almacenamiento comprimida desde el archivo de página y almacenar la página de memoria de almacenamiento comprimida en un almacenamiento 110 comprimido de la memoria 106 paginada. La página de memoria solicitada se encuentra entonces en un almacenamiento 110 comprimido en la memoria paginada, por lo que la página de memoria solicitada se descomprime (acción 606) y se devuelve al administrador de memoria (acción 608).
Debe observarse que las acciones 604 y 610 pueden realizarse juntas. Por ejemplo, el administrador 104 de almacenamiento comprimido mantiene un registro de qué páginas de memoria están comprimidas en qué páginas de memoria de almacenamiento comprimidas. En respuesta a la solicitud en la acción 602, el administrador 104 de almacenamiento comprimido lee la página de memoria de almacenamiento comprimida en la que se comprime la página de memoria solicitada. Si la página de memoria de almacenamiento comprimida está en el almacenamiento 110 comprimido de la memoria 106 paginada, entonces el administrador 104 de almacenamiento comprimido lee la página de memoria de almacenamiento comprimida de la memoria 106 paginada. Si la página de memoria comprimida no está en el almacenamiento 110 comprimido de la memoria 106 paginada, se produce un fallo de página, el administrador 102 de memoria recupera la página de memoria comprimida de almacenamiento desde el archivo de página y coloca la página de memoria comprimida en la memoria 106 paginada, entonces el administrador de almacenamiento comprimido lee la página de memoria comprimida de la memoria 106 paginada.
También debe observarse que el administrador 104 de almacenamiento comprimido puede elegir opcionalmente descomprimir y devolver (y recuperar del archivo de la página si es necesario) una o más páginas de memoria además de una página de memoria solicitada. Por ejemplo, el administrador 104 de almacenamiento comprimido puede elegir descomprimir y devolver una o más páginas de memoria cercanas (por ejemplo, dentro de un rango de direcciones de umbral) de una página de memoria solicitada en un intento de aumentar el rendimiento reduciendo futuras solicitudes de administrador de memoria para páginas de memoria.
Se debe observar además que, con la compresión de páginas de memoria y la recuperación de páginas de memoria tratadas en este documento, el administrador 104 de almacenamiento comprimido opera para garantizar el progreso de la solicitud de escritura (compresión) o lectura (recuperación) desde el administrador de memoria. El progreso
5
10
15
20
25
30
35
40
45
50
55
60
hacia delante garantizado por el administrador 104 de almacenamiento comprimido se refiere a evitar interbloqueos en el sistema 100 porque no hay páginas de memoria disponibles al menos en parte debido a la compresión de las páginas de memoria. El administrador 104 de almacenamiento comprimido opera para garantizar este progreso hacia delante independientemente de si una página de memoria solicitada ya ha sido comprimida y almacenada en el archivo 112 de página e independientemente de si una página de memoria solicitada ha sido reutilizada después de ser comprimida y almacenada en el archivo 112 de página. En una o más realizaciones, el progreso hacia delante para comprimir páginas de memoria se garantiza informando al administrador de memoria que escriba una o más páginas de memoria no comprimidas en la lista modificada en el archivo de página, liberando así una o más páginas de memoria. El progreso hacia delante para recuperar páginas de memoria se garantiza asignando previamente los recursos necesarios (por ejemplo, una o más páginas de memoria en el conjunto de trabajo del administrador de almacenamiento comprimido) por adelantado para garantizar que al menos una de tales lecturas siempre tendrá los recursos necesarios para proceder.
Volviendo a la figura 1, cada página de memoria tiene asociado un identificador (también denominado clave) que permite que las páginas de memoria se distingan entre sí. Este identificador puede ser asignado por cualquiera de varios componentes, tales como el administrador 102 de memoria o el administrador 104 de almacenamiento comprimido. La versión comprimida de una página de memoria ocupa menos espacio en la memoria 106 paginada que la propia página de memoria, de modo que el administrador 104 de almacenamiento comprimido no utiliza la misma estructura de unidad de datos. Por ejemplo, el administrador 102 de memoria puede gestionar la memoria 106 paginada por páginas de memoria, pero el administrador 104 de almacenamiento comprimido no lo haría.
El administrador 104 de almacenamiento comprimido mantiene un mapa de la página de memoria para identificar en qué regiones de los almacenes comprimidos 110 se almacenan las diversas páginas de memoria comprimida. La figura 7 ilustra un mapa 702 de página de memoria de ejemplo de acuerdo con una o más realizaciones. Para cada página de memoria comprimida en el almacenamiento 110 comprimido, el mapa 702 de página de memoria mantiene un registro 704 correspondiente que identifica dónde está almacenada esa página de memoria comprimida en las regiones de las páginas de memoria. El almacenamiento 110 comprimido se ilustra como una o más (n) regiones diferentes 706 (1), ..., 706 (n), cada una de las cuales está compuesta por múltiples páginas de memoria como se discutió anteriormente. En una o más realizaciones, se mantiene un mapa de página de memoria separado para cada almacenamiento 110 comprimido en la memoria 106 paginada. Alternativamente, los mapas de página de memoria para múltiples almacenamientos comprimidas se pueden combinar en un solo mapa de página de memoria, y el registro 704 puede incluir un identificador del almacenamiento 110 comprimido en el que se almacena la página de memoria comprimida.
Cada registro 704 incluye un campo 710 de clave de página, un campo 712 de número de región, un campo 714 de desplazamiento, un campo 716 de tamaño, y un campo 718 de indicador(es). El campo 710 de clave de página almacena el identificador de la página de memoria comprimida correspondiente. Este identificador puede tomar cualquiera de una variedad de formas diferentes. Por ejemplo, podría ser un identificador de proceso y una dirección virtual, un identificador de registro, etc.
El campo 712 de número de región almacena un identificador de la región 706 particular en la que se almacena la página de memoria comprimida correspondiente. Aunque típicamente es un número, esta región podría identificarse en cualquiera de una variedad de otras maneras. El campo 714 de desplazamiento almacena un identificador de un desplazamiento en la región 706 particular donde comienza el almacenamiento de los datos para la página de memoria comprimida correspondiente. Alternativamente, en lugar de identificadores de región y desplazamiento, se pueden usar uno o más campos que almacenan cualquier otro identificador(es) de la ubicación en la parte comprimida donde se almacena la página de memoria comprimida correspondiente.
El campo 716 de tamaño almacena un identificador del tamaño (por ejemplo, en bytes) de la página de memoria comprimida correspondiente. Dada la región, el desplazamiento en la región particular y el tamaño de la página de memoria comprimida, se puede identificar fácilmente un rango de direcciones de memoria en el que se almacena la página de memoria comprimida. El campo de indicador(es) 718 almacena diversa información de estado con respecto a la página de memoria comprimida correspondiente. Los ejemplos de dichos indicadores incluyen una prioridad de selección para la página de memoria utilizada para determinar qué páginas de memoria se seleccionan para ser comprimidas, un nivel de prioridad correspondiente a la página de memoria, y así sucesivamente.
Se debe apreciar que el mapa 702 de página de memoria es solo un ejemplo. En otras realizaciones, se pueden incluir campos adicionales en cada registro del mapa 702. Por ejemplo, datos de detección de errores tales como datos CRC, información de autenticación tal como datos HMAC, información que describe el historial de uso y/o la frecuencia de la página de memoria, y demás, pueden incluirse en cada registro del mapa 702. Además, uno o más de los campos 710 - 718 se pueden omitir de los registros del mapa 702. Adicionalmente, debe observarse que los datos en uno o más de los campos 710 - 718 pueden almacenarse con la página de memoria en la memoria 106 paginada en lugar de en un registro separado.
Además del mapa 702 de página de memoria, el administrador 104 de almacenamiento comprimido también mantiene un mapa de región para identificar qué página de memoria está almacenada en una ubicación particular de una región. Por lo tanto, el mapa 702 de página de memoria opera para identificar dónde se almacena una página
5
10
15
20
25
30
35
40
45
50
55
de memoria comprimida identificada, mientras que el mapa de la región funciona para identificar qué página de memoria comprimida se almacena en una ubicación determinada de una región.
La figura 8 ilustra un mapa 802 de región de ejemplo de acuerdo con una o más realizaciones. Para cada desplazamiento en una región donde se almacena una página de memoria diferente, el mapa 802 de región mantiene un registro 804 que identifica la página de memoria comprimida correspondiente almacenada en ese desplazamiento. Cada registro 804 incluye un campo 806 de clave de página, un campo 808 de número de región y un campo 810 de compensación.
El campo 806 de clave de página almacena el identificador de la página de memoria comprimida correspondiente, de manera análoga al campo 710 de clave de página del registro 704 de la figura 7. El campo 808 de número de región almacena un identificador de la región 706 particular en la que se almacena la página de memoria comprimida correspondiente, análoga al campo 712 de número de región del registro 704. El campo 810 de desplazamiento almacena un identificador de un desplazamiento en la región 706 particular donde comienza el almacenamiento de los datos para la correspondiente página de memoria comprimida, análoga al campo 714 de desplazamiento del registro 704. Alternativamente, en lugar de identificadores de región y desplazamiento, se pueden usar uno o más campos que almacenan cualquier otro identificador(es) de la ubicación en la parte comprimida donde se almacena la página de memoria comprimida correspondiente.
Se debe apreciar que el mapa 802 de región es solo un ejemplo. En otras realizaciones, se pueden incluir campos adicionales en cada registro 802 del mapa, y/o uno o más de los campos 806 - 810 se pueden omitir de los registros del mapa 802. Además, debe observarse que los datos en uno o más de los campos 806 - 810 pueden almacenarse con la página de memoria en la memoria 106 paginada de la figura 1 en lugar de en un registro separado.
El mapa 702 de página de memoria de la figura 7 y el mapa 802 de la región de la figura 8 pueden implementarse de cualquiera de una variedad de maneras diferentes. En una o más realizaciones, estos mapas se implementan cada uno como un árbol B + para un mayor rendimiento en el acceso a los registros individuales. Alternativamente, se puede usar cualquiera de una variedad de otras estructuras de datos convencionales para implementar estos mapas, tales como árboles AVL, tabla hash, matrices, etc.
Volviendo a la figura 1, pueden surgir situaciones en las que el administrador 102 de memoria desea mover el conjunto de trabajo completo para un programa 108 fuera de la memoria 108 paginada. En una o más realizaciones, tales situaciones surgen cuando se suspende un programa 108 en el sistema 100. Como parte del proceso de suspender el programa 108, el conjunto de trabajo de las páginas de memoria se comprime y se almacena en un almacenamiento 110 comprimido, que también se denomina intercambio de salida del conjunto de trabajo. Este almacenamiento 110 comprimido puede escribirse posteriormente en el archivo 112 de página. Si el programa 108 debe reanudarse posteriormente (por ejemplo, ya no está suspendido), el almacenamiento 110 comprimido se recupera del archivo 112 de página (si fue escrito en el archivo 112 de página), y las páginas de memoria en el almacenamiento 110 comprimido son descomprimidas y devueltas al conjunto 202 de trabajo, que también se conoce como intercambio interno del conjunto de trabajo.
La figura 9 muestra un ejemplo de intercambio de salida de un conjunto de trabajo de acuerdo con una o más realizaciones. En la figura 9, se ilustra un conjunto 202 de trabajo de un proceso particular de un programa 108, proceso X. El intercambio externo del conjunto 202 de trabajo se realiza generando una lista 902 de páginas de memoria, tal como una lista de direcciones y longitudes virtuales de inicio (por ejemplo, un recuento de páginas de memoria secuenciales en el conjunto de trabajo que comienza en esa dirección virtual inicial). La lista se ordena secuencialmente, como desde la dirección más pequeña a la dirección más grande (estas direcciones son direcciones virtuales del espacio de memoria en el que se ejecuta el proceso). Las páginas de memoria del conjunto 202 de trabajo se agregan a la lista 206 modificada en este mismo orden secuencial. Además, las páginas de memoria del conjunto 202 de trabajo se comprimen en este mismo orden secuencial, y se escriben en el almacenamiento 110 comprimido asociado con el programa 108 en este mismo orden secuencial como se muestra. Por lo tanto, aunque las páginas de memoria en el conjunto 202 de trabajo pueden ser no contiguas en el conjunto 202 de trabajo, se escriben en ubicaciones contiguas en el almacenamiento 110 comprimido.
El tamaño total del almacenamiento 110 comprimido también se determina, y el espacio reservado en el archivo 112 de página es suficiente para almacenar el almacenamiento 110 comprimido. Cuando el almacenamiento 110 comprimido se escribe en el archivo 112 de página, el almacenamiento 110 comprimido se escribe contiguamente al archivo 112 de página. La escritura de páginas en una porción contigua del archivo de página ordenada secuencialmente puede permitir que una operación de lectura posterior lea un bloque grande y ordenado secuencialmente del archivo 112 de página cuando las páginas se vuelven a leer en el conjunto 202 de trabajo durante una subsiguiente operación de intercambio.
La figura 10 es un diagrama de flujo que ilustra un proceso 1000 de ejemplo para el intercambio de salida del conjunto de trabajo de acuerdo con una o más realizaciones. El proceso 1000 se lleva a cabo por un administrador de almacenamiento comprimido, tal como el administrador 104 de almacenamiento comprimido de la figura 1, y puede implementarse en software, firmware, hardware o combinaciones de los mismos. El proceso 1000 se muestra como un conjunto de acciones y no está limitado al orden mostrado para realizar las operaciones de las diversas
5
10
15
20
25
30
35
40
45
50
55
60
acciones. El proceso 1000 es un proceso de ejemplo para intercambiar el conjunto de trabajo; se incluyen aquí discusiones adicionales sobre el intercambio del conjunto de trabajo con referencia a diferentes figuras.
En el proceso 1000, se realiza una determinación para intercambiar una o más páginas de un conjunto de trabajo de un proceso en un archivo de página (acción 1002). Esta determinación puede hacerse (por ejemplo, por el administrador 102 de memoria u otro administrador de políticas) en base a diversos criterios, tales como una determinación de que el proceso está inactivo o suspendido, que uno o más hilos asociados con el proceso no han estado activos durante un determinada cantidad de tiempo, que el proceso ha estado en segundo plano durante un período de tiempo determinado, que el proceso no ha utilizado un cierto número de páginas durante un período de tiempo determinado, que el sistema informático en su conjunto ha sido suspendido o inactivo, y así sucesivamente.
Una vez que se ha tomado la decisión de intercambiar una o más páginas, se identifican una o más páginas candidatas de un conjunto de trabajo del proceso y se genera una lista de estas páginas de memoria candidatas (acción 1004). La lista de páginas candidatas de memoria se ordena secuencialmente, como desde la dirección virtual más pequeña hasta la dirección virtual más grande. En una o más realizaciones, el administrador 102 de memoria analiza cada página del conjunto de trabajo y determina si cada página es candidata para el intercambio fuera de línea en base a ciertos criterios. En una o más realizaciones, los candidatos para el intercambio de salida pueden incluir las páginas privadas y/o páginas compartidas respaldadas por el archivo de página en el conjunto 202 de trabajo. Las páginas candidatas también se pueden identificar de diferentes maneras, como si esas páginas están limpias (páginas que se escribieron en el almacenamiento 110 comprimido pero que no se han modificado desde dicha escritura, de modo que la versión actual de la página en la memoria física) es lo mismo que la página en el almacenamiento 110 comprimido). Además, en una o más realizaciones, se puede considerar si una página está bloqueada o no en la memoria al decidir si la página es candidata para el intercambio fuera de línea.
Las páginas de memoria candidatas en la lista generada en la acción 1004 se agregan a la lista 206 modificada (acción 1006). Las páginas de memoria candidatas se agregan a la lista modificada en el mismo orden secuencial que aparece en la lista generada en la acción 1004.
Las páginas de memoria candidatas en la lista 206 modificada se comprimen y escriben en el almacenamiento 110 comprimido asociado con el programa en ejecución que es el proceso (acción 1008). La compresión se puede realizar en cualquiera de una variedad de maneras, análoga a la discusión anterior con respecto a la figura 5. Varias otras operaciones (por ejemplo, encriptación del contenido de las páginas de memoria, generación de datos de detección de errores, etc.) también pueden realizarse opcionalmente en las páginas de memoria, análoga a la discusión anterior con respecto a la figura 5. Las páginas de memoria comprimidas se escriben en el almacenamiento 110 comprimido en este mismo orden secuencial tal como aparecen en la lista generada en la acción 1004 y en las que aparecen en la lista 206 modificada. Por lo tanto, aunque las páginas de memoria en el conjunto 202 de trabajo pueden ser no contiguas en el conjunto 202 de trabajo, se escriben en ubicaciones contiguas en el almacenamiento 110 comprimido (por ejemplo, como se muestra en la figura 9). Después de que una página de memoria candidata se escribe en el almacenamiento 110 comprimido, la página de memoria candidata se elimina del conjunto 202 de trabajo (por ejemplo, y se agrega a una lista libre).
El espacio está reservado en el archivo 112 de página suficiente para almacenar el almacenamiento 110 comprimido (acción 1010). La reserva de espacio en el archivo 112 de página se refiere a dejar de lado o marcar parte del archivo 112 de página como aceptable para que se escriba en el almacenamiento 110 comprimido, pero no es aceptable que se escriban otros datos. El espacio en el archivo 112 de página se puede reservar de diversas maneras, como mantener una tabla de asignación u otras porciones de identificación de registro del archivo de página y si dichas porciones están reservadas (y si están reservadas, el almacenamiento 110 comprimido para el que están reservados). La reserva puede realizarse mediante, por ejemplo, el administrador 102 de memoria o el administrador 104 de almacenamiento comprimido.
En algún momento posterior, se toma una decisión (por ejemplo, mediante el administrado 102 de memoria o el administrador 104 de almacenamiento comprimido) de escribir el almacenamiento 110 comprimido que incluye las páginas comprimidas fuera de intercambio en su espacio reservado en el archivo 112 de página (acción 1012). En una o más realizaciones, esta decisión puede tomarse en base a una determinación de que ha pasado una determinada cantidad de tiempo umbral durante la cual los criterios que condujeron a la decisión de intercambiar (en la acción 1002) siguen siendo válidos. Por ejemplo, puede pasar una cantidad de tiempo particular (por ejemplo, 5 minutos) en la que un proceso todavía está inactivo o suspendido. La decisión también puede tomarse en base a una determinación por parte del administrador 102 de memoria de que se necesita más memoria física para ser utilizada por uno o más programas 108 diferentes.
En respuesta a la decisión en la acción 1012 de escribir el almacenamiento comprimido en el archivo de intercambio, las páginas de memoria de almacenamiento comprimidas se escriben en el espacio reservado en el archivo de página (acción 1014). En una o más realizaciones, todas las páginas de memoria de almacenamiento comprimidas se eliminan y se escriben en el archivo 112 de página en una o más operaciones de escritura. Alternativamente, solo una parte de las páginas de memoria de almacenamiento comprimidas puede eliminarse y escribirse en el archivo 112 de página. En algunas realizaciones, las páginas candidatas escritas pueden determinarse basándose en la presión para la memoria (por ejemplo, en base a la necesidad del administrador de memoria de más memoria física).
5
10
15
20
25
30
35
40
45
50
55
Después de escribirse en el archivo 112 de página, las páginas de memoria de almacenamiento comprimidas se colocan en la lista de espera en el nivel de prioridad de las páginas de memoria de almacenamiento comprimidas (o, alternativamente, en un nivel inferior). En este punto, las páginas de memoria de almacenamiento comprimidas se tratan como memoria disponible en el sistema y pueden reutilizarse en cualquier momento según lo desee el administrador 102 de memoria.
Volviendo a la acción 1012, en algunas situaciones se puede tomar la decisión de no escribir el almacenamiento comprimida. En tales situaciones, el espacio reservado para el almacenamiento comprimido se conserva hasta que se produzca el intercambio. En una o más realizaciones, se puede tomar la decisión de no escribir el almacenamiento comprimido si las condiciones que llevaron a la decisión inicial de cambiar las páginas (por ejemplo, en la acción 1002) ya no están presentes después de un umbral de cantidad tiempo particular. Por ejemplo, el proceso puede estar activo nuevamente o puede dejar de suspenderse. En otras situaciones, una decisión de intercambiar páginas puede ocurrir antes de que esas páginas candidatas se hayan escrito en el archivo de página.
La figura 11 es un diagrama de flujo que ilustra un proceso 1100 de ejemplo para intercambiar el conjunto de trabajo de acuerdo con una o más realizaciones. El proceso 1100 se lleva a cabo por un administrador de almacenamiento comprimido, tal como el administrador 104 de almacenamiento comprimido de la figura 1, y puede implementarse en software, firmware, hardware o combinaciones de los mismos. El proceso 1100 se muestra como un conjunto de acciones y no está limitado al orden mostrado para realizar las operaciones de las diversas acciones. El proceso 1100 es un proceso de ejemplo para intercambiar el conjunto de trabajo; discusiones adicionales sobre el intercambio del conjunto de trabajo se incluyen aquí con referencia a diferentes figuras.
En el proceso 1100, se realiza una determinación para intercambiar un almacenamiento comprimido que se había intercambiado previamente fuera de un conjunto de trabajo para un proceso (acción 1102). En una o más realizaciones, esta determinación se realiza por el administrador 102 de memoria u otro administrador de políticas, y se puede realizar en base a diversos criterios. Dichos criterios pueden incluir recibir una indicación de que el proceso ya no está inactivo o suspendido, un cese de esas condiciones que llevaron a la decisión de intercambiar en la acción 1002 de la figura 10, y así sucesivamente.
Se realiza una determinación de si las páginas de memoria de almacenamiento comprimidas de la memoria comprimida intercambiada permanecen en la memoria física (acción 1104). En algunas situaciones, las páginas de memoria de almacenamiento comprimidas pueden haber sido escritas en el archivo de la página, pero permanecer en la memoria física (por ejemplo, si las páginas fueron almacenadas en caché en la lista de espera y aún no han sido reutilizadas). En tales situaciones, estas páginas de memoria de almacenamiento comprimidas que permanecen en la memoria física se pueden descomprimir en lugar de leer las páginas de memoria de almacenamiento comprimidas desde el archivo de la página.
Si una página de memoria de almacenamiento comprimida de intercambio no está en la memoria física, entonces la página de memoria se recupera del archivo de página (acción 1106). Recuperar páginas de memoria de almacenamiento comprimidas incluye leer las páginas de memoria de almacenamiento comprimidas desde el archivo de página y almacenar las páginas de memoria de almacenamiento comprimidas en un almacenamiento 110 comprimido de la memoria 106 paginada. En una o más realizaciones, esta lectura de páginas de memoria de almacenamiento comprimidas se lee en grandes bloques de páginas de memoria de almacenamiento comprimidas del archivo de página, que son por lo tanto más eficientes que lecturas de bloques más pequeños desde ubicaciones arbitrarias en el archivo de página. Además, como las páginas se escribieron en un bloque contiguo reservado en el archivo de página y se escribieron en orden de dirección virtual secuencial, los clústeres de varias páginas se pueden leer en bloques grandes y en orden de direcciones virtuales secuenciales, proporcionando operaciones de lectura más eficientes.
Las páginas de memoria intercambiadas fuera de las páginas de memoria de almacenamiento comprimidas del almacenamiento 110 comprimido se descomprimen (acción 1108) y se devuelven al administrador de memoria (acción 1110). Devolver las páginas de memoria descomprimidas al administrador de memoria permite que las páginas de memoria descomprimidas se incluyan en el conjunto de trabajo del programa. La descompresión se puede realizar en cualquiera de una variedad de maneras, análoga a la discusión anterior con respecto a la figura 6. Varias otras operaciones (por ejemplo, descifrado del contenido de las páginas de memoria, verificación de datos de detección de errores, etc.) también pueden realizarse opcionalmente en las páginas de memoria, análogamente a la discusión anterior con respecto a la figura 6. Después de descomprimirse y devolverse, la página de memoria comprimida se elimina de la región del almacenamiento 110 comprimido. Después de descomprimir y devolver el contenido de una página de memoria comprimida de almacenamiento, la página de la memoria comprimida de almacenamiento puede reutilizarse o liberarse.
El espacio reservado para el almacenamiento comprimido en el archivo de página también se libera (acción 1112). El espacio reservado en el archivo de página está disponible para almacenar otros datos.
Volviendo a la acción 1104, si alguna de las páginas de memoria fuera de intercambio permanece en la memoria física, entonces esas páginas de memoria se descomprimen (acción 1108) y se devuelven al administrador de memoria (acción 1110). Las páginas de memoria de almacenamiento comprimidas que almacenan esas páginas de
5
10
15
20
25
30
35
40
45
50
55
memoria comprimida intercambiadas no necesitan leerse desde el archivo de página en la acción 1106 porque permanecen en la memoria física.
Se debe observar que la recuperación de las páginas de memoria de almacenamiento comprimidas intercambiadas en la acción 1106 y la descompresión de las páginas de memoria en la acción 1108 se pueden realizar en paralelo. En una o más realizaciones, las páginas de memoria que se han recuperado del archivo de la página se descomprimen mientras que, al mismo tiempo, se están leyendo otras páginas de memoria de almacenamiento comprimidas fuera del archivo de la página. Se pueden usar varios hilos para descomprimir páginas de memoria y recuperar páginas de memoria comprimida de almacenamiento desde el archivo de página. Por ejemplo, un subproceso que se ejecuta en un núcleo de procesador en el sistema 100 puede gestionar la recuperación de las páginas de memoria comprimida del archivo de página, y los subprocesos que se ejecutan simultáneamente o en paralelo en los núcleos de procesador restantes en el sistema 100 pueden gestionar la descompresión de páginas de memoria.
Por lo tanto, el rendimiento de las páginas de memoria de almacenamiento comprimidas en el intercambio se puede aumentar usando las técnicas discutidas en este documento. Las páginas de memoria están comprimidas, por lo que se leen menos páginas de memoria que las que se leerían sin compresión. Además, la descompresión se puede realizar en paralelo con la lectura de las páginas de memoria, y múltiples subprocesos de descompresión se pueden ejecutar simultáneamente, incrementando aún más la velocidad a la que las páginas de memoria descomprimidas pueden devolverse al administrador de memoria.
Las técnicas discutidas en este documento también respaldan diversas funcionalidades adicionales. El número de lecturas y escrituras en el dispositivo de almacenamiento que almacena el archivo de página se puede reducir debido a la compresión de las páginas de memoria. Reducir el número de lecturas y escrituras en el dispositivo de almacenamiento puede aumentar la vida útil del dispositivo de almacenamiento y reducir los cuellos de botella debido a la entrada/salida del dispositivo de almacenamiento. Además, la compresión de las páginas de memoria puede dar como resultado un aumento en el número de páginas de memoria disponibles para asignación a los programas por parte del administrador de memoria.
Además, las páginas de memoria de almacenamiento comprimidas intercambiadas fuera ocupan un número menor de páginas que las versiones descomprimidas de las páginas de memoria. Las páginas de memoria de almacenamiento comprimidas intercambiadas se escriben en el archivo 112 de página y se agregan a la lista de espera como se discutió anteriormente, y debido a su naturaleza comprimida, se puede mantener una mayor cantidad de almacenamientos comprimidos en la lista de espera. Esto puede aumentar la probabilidad de que, si se reanuda un programa suspendido, las páginas de memoria de almacenamiento comprimidas para el programa se encuentren en la memoria física y, por lo tanto, se puedan intercambiar más rápido que si se recuperaran del archivo de la página.
Además, las páginas de memoria comprimidas se almacenan en los almacenamientos comprimidos a niveles de prioridad similares a las que tenían las páginas de memoria antes de la compresión. Al mantener al menos niveles de prioridad similares de páginas de memoria, escenarios de inversión de prioridad se escriben en las páginas de memoria de prioridad significativamente mayor en el archivo de página antes de que se eviten las páginas de memoria de menor prioridad.
Aunque se discute aquí una funcionalidad particular con referencia a módulos particulares, debe observarse que la funcionalidad de los módulos individuales discutidos en este documento se puede separar en múltiples módulos, y/o al menos alguna funcionalidad de múltiples módulos se puede combinar en un único módulo. Además, un módulo particular discutido aquí como realizar una acción incluye ese módulo particular que realiza la acción, o alternativamente ese módulo particular invocando o de otra manera accediendo a otro componente o módulo que realiza la acción (o realiza la acción junto con ese módulo particular). Por lo tanto, un módulo particular que realiza una acción incluye ese módulo particular que realiza la acción y/u otro módulo invocado o de otro modo accedido por ese módulo particular que realiza la acción.
La figura 12 ilustra un sistema de ejemplo generalmente en 1200 que incluye un dispositivo 1202 informático de ejemplo que es representativo de uno o más sistemas y/o dispositivos que pueden implementar las diversas técnicas descritas en este documento. El dispositivo 1202 informático puede ser, por ejemplo, un servidor de un proveedor de servicios, un dispositivo asociado con un cliente (por ejemplo, un dispositivo cliente), un sistema en chip y/o cualquier otro dispositivo informático o sistema informático adecuado.
El ejemplo de dispositivo 1202 informático como se ilustra incluye un sistema 1204 de procesamiento, uno o más medios 1206 legibles por ordenador, y una o más interfaces 1208 de entrada/salida que están acopladas comunicativamente, una a otra. Aunque no se muestra, el dispositivo 1202 informático puede incluir además un bus de sistema u otro sistema de transferencia de datos y comandos que acopla los diversos componentes, uno con otro. Un bus de sistema puede incluir cualquiera o una combinación de diferentes estructuras de bus, como un bus de memoria o controlador de memoria, un bus periférico, un bus serie universal, y/o un procesador o bus local que utiliza cualquiera de una variedad de arquitecturas de bus. También se contemplan una variedad de otros ejemplos, tales como líneas de control y datos.
5
10
15
20
25
30
35
40
45
50
55
60
El sistema 1204 de procesamiento es representativo de la funcionalidad para realizar una o más operaciones usando hardware. En consecuencia, el sistema 1204 de procesamiento se ilustra como que incluye elementos 1210 de hardware que pueden configurarse como procesadores, bloques funcionales, etc. Esto puede incluir la implementación en hardware como un circuito integrado específico de aplicación u otro dispositivo lógico formado usando uno o más semiconductores. Los elementos 1210 de hardware no están limitados por los materiales a partir de los cuales se forman o los mecanismos de procesamiento empleados en el mismo. Por ejemplo, los procesadores pueden estar compuestos de semiconductor (es) y/o transistores (por ejemplo, circuitos integrados electrónicos (IC)). En tal contexto, las instrucciones ejecutables por el procesador pueden ser instrucciones ejecutables electrónicamente.
El medio 1206 legible por ordenador se ilustra como que incluye memoria/almacenamiento 1212. La memoria/almacenamiento 1212 representa la memoria/capacidad de almacenamiento asociada con uno o más medios legibles por ordenador. La memoria/almacenamiento 1212 puede incluir medios volátiles (tales como memoria de acceso aleatorio (RAM)) y/o medios no volátiles (tales como memoria de solo lectura (ROM), memoria Flash, discos ópticos, discos magnéticos, etc.). La memoria/almacenamiento 1212 puede incluir medios fijos (por ejemplo, RAM, ROM, un disco rígido fijo, etc.) así como medios extraíbles (por ejemplo, memoria Flash, un disco duro extraíble, un disco óptico, etc.). Los medios 1206 legibles por ordenador pueden configurarse de una variedad de otras formas como se describe adicionalmente a continuación.
Las interfaces 1208 de entrada/salida son representativas de la funcionalidad para permitir que un usuario introduzca comandos e información en el dispositivo 1202 informático, y también permiten que la información se presente al usuario y/o a otros componentes o dispositivos usando diversos dispositivos de entrada/salida. Ejemplos de dispositivos de entrada incluyen un teclado, un dispositivo de control del cursor (por ejemplo, un ratón), un micrófono (por ejemplo, para entradas de voz), un escáner, funcionalidad táctil (por ejemplo, sensores capacitivos u otros configurados para detectar el contacto físico). Una cámara (por ejemplo, que puede emplear longitudes de onda visibles o no visibles, como las frecuencias de infrarrojos para detectar movimientos que no impliquen contacto tales como gestos), y así sucesivamente. Los ejemplos de dispositivos de salida incluyen un dispositivo de visualización (por ejemplo, un monitor o proyector), altavoces, una impresora, una tarjeta de red, un dispositivo de respuesta táctil, y así sucesivamente. Por lo tanto, el dispositivo 1202 informático se puede configurar de varias maneras, tal como se describe a continuación, para soportar la interacción del usuario.
El dispositivo 1202 informático también incluye un administrador 1214 de almacenamiento. El administrador 1214 de almacenamiento proporciona varias funcionalidades modificadas de compresión de memoria como se discutió anteriormente. El administrador 1214 de almacenamiento puede implementar, por ejemplo, el administrador 104 de almacenamiento comprimido de la figura 1. Aunque se ilustra como separado del medio 1206 legible por ordenador, debe observarse que el administrador 1214 de almacenamiento puede implementarse alternativamente como parte del medio 1206 legible por ordenador.
Se pueden describir diversas técnicas en este documento en el contexto general de software, elementos de hardware o módulos de programa. Generalmente, dichos módulos incluyen rutinas, programas, objetos, elementos, componentes, estructuras de datos, etc., que realizan tareas particulares o implementan tipos de datos abstracciones particulares. Los términos "módulo", "funcionalidad" y "componente" como se usan en este documento generalmente representan software, firmware, hardware o una combinación de los mismos. Las características de las técnicas descritas en este documento son independientes de la plataforma, lo que significa que las técnicas se pueden implementar en una variedad de plataformas informáticas que tienen una variedad de procesadores.
Una implementación de los módulos y técnicas descritos puede almacenarse o transmitirse a través de algún tipo de medio legible por ordenador. Los medios legibles por ordenador pueden incluir una variedad de medios a los que se puede acceder mediante el dispositivo 1202 informático. A modo de ejemplo, y sin limitación, los medios legibles por ordenador pueden incluir "medios de almacenamiento legibles por ordenador" y "medios de señal legibles por ordenador".
Los "medios de almacenamiento legibles por ordenador" se refieren a medios y/o dispositivos que permiten el almacenamiento persistente de información y/o almacenamiento que es tangible, en contraste con la mera transmisión de señal, las ondas portadoras, o señales per se. Por lo tanto, los medios de almacenamiento legibles por ordenador se refieren a medios sin soporte de señales. Los medios de almacenamiento legibles por ordenador incluyen hardware tales como dispositivos de almacenamiento y/o almacenamiento volátiles y no volátiles, extraíbles y no extraíbles implementados en un procedimiento o tecnología adecuada para el almacenamiento de información tal como instrucciones legibles por ordenador, estructuras de datos, módulos de programa, elementos/circuitos lógicos u otros datos. Los ejemplos de medios de almacenamiento legibles por ordenador pueden incluir, entre otros, memoria RAM, ROM, EEPROM, memoria flash u otra tecnología de memoria, CD-ROM, discos versátiles digitales (DVD) u otro almacenamiento óptico, discos duros, casetes magnéticos, cinta magnética, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético u otro dispositivo de almacenamiento, medios tangibles o artículos de fabricación adecuados para almacenar la información deseada y a la que se puede acceder mediante un ordenador.
Los "medio de señal legible por ordenador" se refieren a un medio portador de señal que está configurado para
5
10
15
20
25
30
35
40
45
50
55
60
transmitir instrucciones al hardware del dispositivo 1202 informático, tal como a través de una red. Los medios de señal típicamente pueden incorporar instrucciones legibles por ordenador, estructuras de datos, módulos de programa u otros datos en una señal de datos modulada, tales como ondas portadoras, señales de datos u otro mecanismo de transporte. Los medios de señal también incluyen cualquier medio de entrega de información. El término "señal de datos modulada" significa una señal que tiene una o más de sus características establecidas o cambiadas de tal manera que codifican información en la señal. A modo de ejemplo, y no de limitación, los medios de comunicación incluyen medios cableados tales como una red cableada o conexión de cableado directo, y medios inalámbricos tales como medios acústicos, de RF, infrarrojos y otros medios inalámbricos.
Como se describió previamente, los elementos 1210 de hardware y los medios 1206 legibles por ordenador son representativos de instrucciones, módulos, lógica de dispositivo programable y/o lógica de dispositivo fijo implementada en una forma de hardware que puede emplearse en algunas realizaciones para implementar al menos algunos aspectos de las técnicas descritas en este documento. Los elementos de hardware pueden incluir componentes de un circuito integrado o sistema en chip, un circuito integrado de aplicación específica (ASIC), un arreglo de compuerta programable en campo (FPGA), un dispositivo lógico programable complejo (CPLD) y otras implementaciones en silicio o otros dispositivos de hardware. En este contexto, un elemento de hardware puede funcionar como un dispositivo de procesamiento que realiza tareas de programa definidas por instrucciones, módulos y/o lógica incorporada por el elemento de hardware, así como un dispositivo de hardware utilizado para almacenar instrucciones para su ejecución, por ejemplo, el ordenador. Medios de almacenamiento legibles descritos previamente.
También se pueden emplear combinaciones de los anteriores para implementar diversas técnicas y módulos descritos en este documento. Por consiguiente, el software, hardware o módulos de programa y otros módulos de programa pueden implementarse como una o más instrucciones y/o lógica incorporada en alguna forma de medios de almacenamiento legibles por ordenador y/o por uno o más elementos 1210 de hardware. El dispositivo 1202 informático puede estar configurado para implementar instrucciones y/o funciones particulares correspondientes a los módulos de software y/o hardware. Por consiguiente, la implementación de módulos como un módulo ejecutable por el dispositivo 1202 informático como software puede lograrse al menos parcialmente en hardware, por ejemplo, mediante el uso de medios de almacenamiento legibles por ordenador y/o elementos 1210 de hardware del sistema de procesamiento. Las instrucciones y/o funciones pueden ser ejecutables/operables por uno o más artículos de fabricación (por ejemplo, uno o más dispositivos 1202 informáticos y/o sistemas 1204 de procesamiento) para implementar técnicas, módulos y ejemplos descritos aquí.
Como se ilustra adicionalmente en la figura 12, el sistema 1200 de ejemplo habilita entornos ubicuos para una experiencia de usuario sin fisuras cuando se ejecutan aplicaciones en un ordenador personal (PC), un dispositivo de televisión y/o un dispositivo móvil. Los servicios y las aplicaciones son sustancialmente similares en los tres entornos para una experiencia de usuario común al pasar de un dispositivo a otro mientras se utiliza una aplicación, se reproduce un videojuego, se mira un video, y así sucesivamente.
En el sistema 1200 de ejemplo, múltiples dispositivos están interconectados a través de un dispositivo informático central. El dispositivo informático central puede ser local para los dispositivos múltiples o puede estar ubicado de forma remota desde los dispositivos múltiples. En una o más realizaciones, el dispositivo informático central puede ser una nube de uno o más ordenadores servidores que están conectados a los dispositivos múltiples a través de una red, Internet u otro enlace de comunicación de datos.
En una o más realizaciones, esta arquitectura de interconexión permite que la funcionalidad se entregue a través de múltiples dispositivos para proporcionar una experiencia común e integrada a un usuario de múltiples dispositivos. Cada uno de los múltiples dispositivos puede tener requisitos y capacidades físicas diferentes, y el dispositivo informático central utiliza una plataforma para permitir la entrega de una experiencia al dispositivo que se adapta tanto al dispositivo como a todos los dispositivos. En una o más realizaciones, se crea una clase de dispositivos de destino y las experiencias se adaptan a la clase genérica de dispositivos. Una clase de dispositivos puede definirse por características físicas, tipos de uso u otras características comunes de los dispositivos.
En diversas implementaciones, el dispositivo 1202 informático puede asumir una variedad de configuraciones diferentes, tales como para usos en el ordenador 1216, el móvil 1218 y la televisión 1220. Cada una de estas configuraciones incluye dispositivos que pueden tener construcciones y capacidades generalmente diferentes y, por lo tanto, el dispositivo 1202 informático puede configurarse de acuerdo con una o más de las diferentes clases de dispositivos. Por ejemplo, el dispositivo 1202 informático puede implementarse como la clase del ordenador 1216 de un dispositivo que incluye un ordenador personal, un ordenador de escritorio, un ordenador de pantallas múltiples, un ordenador portátil, una netbook, y así sucesivamente.
El dispositivo 1202 informático también puede implementarse como la clase de dispositivo móvil 1218 que incluyen dispositivos móviles, tales como un teléfono móvil, un reproductor de música portátil, un dispositivo de juego portátil, una tableta, un ordenador de pantalla múltiple, etc. El dispositivo 1202 informático también puede implementarse como la clase de dispositivo de televisión 1220 que incluye dispositivos que tienen o están conectados a pantallas generalmente más grandes en entornos de visualización informales. Estos dispositivos incluyen televisores, decodificadores, consolas de videojuegos, etc.
Las técnicas descritas en este documento pueden ser soportadas por estas diversas configuraciones del dispositivo 1202 informático y no están limitadas a los ejemplos específicos de las técnicas descritas en el presente documento. Esta funcionalidad también puede implementarse total o parcialmente mediante el uso de un sistema distribuido, tal como sobre una "nube" 1222 a través de una plataforma 1224 como se describe a continuación.
5 La nube 1222 incluye y/o es representativa de una plataforma 1224 para los recursos 1226. La plataforma 1224 abstrae la funcionalidad subyacente del hardware (por ejemplo, servidores) y los recursos de software de la nube 1222. Los recursos 1226 pueden incluir aplicaciones y/o datos que pueden utilizarse mientras el procesamiento del ordenador se ejecuta en servidores que están alejados del dispositivo 1202 informático. Los recursos 1226 también pueden incluir servicios prestados a través de Internet y/oa través de una red de suscriptores, como una red celular 10 o Wi-Fi.
La plataforma 1224 puede abstraer recursos y funciones para conectar el dispositivo 1202 informático con otros dispositivos informáticos. La plataforma 1224 también puede servir para escalar de forma abstracta los recursos para proporcionar un nivel de escala correspondiente a la demanda encontrada de los recursos 1226 que se implementan a través de la plataforma 1224. Por consiguiente, en una realización de dispositivo interconectado, la 15 implementación de la funcionalidad descrita en este documento puede distribuirse a través del sistema 1200. Por ejemplo, la funcionalidad puede implementarse en parte en el dispositivo 1202 informático, así como a través de la plataforma 1224 que abstrae la funcionalidad de la nube 1222.
Aunque el tema se ha descrito en un lenguaje específico para características estructurales y/o acciones metodológicas, debe entenderse que el tema definido en las reivindicaciones adjuntas no está necesariamente 20 limitado a las características o acciones específicos descritos anteriormente. Por el contrario, las características y acciones específicos descritos anteriormente se describen como formas ejemplares de implementación de las reivindicaciones.

Claims (8)

  1. 5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55
    REIVINDICACIONES
    1. Un procedimiento implementado por ordenador para aumentar la cantidad de memoria disponible para asignación a procesos de programas que se ejecutan en un dispositivo informático, donde la memoria es una memoria (106) paginada, comprendiendo el procedimiento:
    identificar (502) un primer conjunto de páginas de memoria que se han modificado, en el que el primer conjunto de páginas de memoria se asigna a uno de los procesos;
    comprimir (504) el primer conjunto de páginas de memoria en un almacenamiento (110) comprimido de la memoria (106) paginada, en el que el almacenamiento comprimido está compuesto por un segundo conjunto de páginas de memoria;
    permitir (506) a un administrador (102) de memoria reutilizar el primer conjunto de páginas de memoria después de que el primer conjunto de páginas de memoria haya sido comprimido en el almacenamiento (110) comprimido; y
    escribir (508) el segundo conjunto de páginas de memoria en un archivo (112) de página en lugar de escribir el primer conjunto de páginas de memoria en el archivo (112) de página, caracterizado porque
    el almacenamiento (110) comprimido está asociado solo con dicho uno de los procesos, y
    el archivo (112) de página está ubicado en un dispositivo de almacenamiento secundario que tiene tiempos de
    lectura/escritura más lentos pero mayor capacidad de almacenamiento que la memoria (106) paginada.
  2. 2. Un procedimiento según la reivindicación 1, que comprende además permitir (506) que el administrador (102) de memoria reutilice el segundo conjunto de páginas de memoria después de que el segundo conjunto de páginas de memoria se haya escrito en el archivo (112) de página.
  3. 3. Un procedimiento según la reivindicación 1, en el que dichas etapas de identificar, comprimir y escribir comprenden, además, en respuesta a la determinación (1002) de un intercambio de dicho primer conjunto de páginas de memoria como páginas de memoria candidatas de dicho uno de los procesos:
    identificar (1004) una lista de las páginas de memoria candidatas en un conjunto de trabajo de dicho uno de los procesos;
    comprimir (1008) las páginas de memoria candidatas identificadas;
    escribir (1008) las páginas de memoria candidatas identificadas comprimidas en el almacenamiento (110) comprimido en orden secuencial por dirección de memoria virtual de las páginas de memoria candidatas identificadas;
    reservar (1010) espacio en el archivo (112) de página para el almacenamiento (110) comprimido; y
    escribir (1014) fuera del almacenamiento (110) comprimido en el espacio reservado en el archivo (112) de
    página.
  4. 4. Un procedimiento según la reivindicación 3, que comprende, además, en respuesta a la determinación de intercambiar (1102) el almacenamiento (110) comprimido, que se intercambió previamente fuera del conjunto de trabajo de dicho uno de los procesos:
    recuperar (1106) el almacenamiento (110) comprimido del archivo (112) de página;
    almacenar (1106) el almacenamiento (110) comprimido recuperado en un tercer conjunto de páginas de memoria;
    descomprimir (1108) las páginas de memoria comprimidas en el tercer conjunto de páginas de memoria; y devolver (1110) las páginas de memoria descomprimidas para incluirlas en el conjunto de trabajo del proceso.
  5. 5. Un procedimiento según la reivindicación 1, que comprende además garantizar el progreso hacia adelante en la devolución del primer conjunto de páginas de memoria después de que el primer conjunto de páginas de memoria se ha comprimido y sin importar si el segundo conjunto de páginas de memoria se ha escrito en el archivo (112) de página o reutilizado después de haber sido escrito en el archivo (112) de página.
  6. 6. Un procedimiento según la reivindicación 1, en el que cada uno del primer conjunto de páginas de memoria tiene al menos niveles de prioridad similares, y cada uno del segundo conjunto de páginas de memoria tiene al menos niveles de prioridad similares.
  7. 7. Un dispositivo informático configurado para aumentar la cantidad de memoria disponible para asignación a procesos de programas que se ejecutan en un dispositivo informático, comprendiendo el dispositivo:
    una memoria (106);
    un administrador (102) de memoria configurado para administrar páginas de la memoria, siendo la memoria una memoria (106) paginada; y
    un administrador (104) de almacenamiento comprimido configurado para aumentar la cantidad de la memoria que está disponible para el administrador (102) de memoria para asignar a los procesos de programas que se ejecutan en el dispositivo informático mediante:
    5
    10
    15
    20
    25
    30
    comprimir (504) un primer conjunto de páginas de memoria que se han modificado, en un almacenamiento (110) comprimido de la memoria (106) paginada, constituyendo el almacenamiento comprimido un segundo conjunto de páginas de memoria, en el que el primer conjunto de páginas de memoria se asigna a uno de los procesos;
    permitir (506), para cada página de memoria del primer conjunto de páginas de memoria, que el administrador (102) de memoria reutilice la página de memoria después de que la página de memoria haya sido comprimida en el almacenamiento (110) comprimido; y
    escribir (508) el segundo conjunto de páginas de memoria en un archivo (112) de página en ausencia de escribir el primer conjunto de páginas de memoria en el archivo (112) de página,
    caracterizado porque
    el almacenamiento (110) comprimido está asociado solo con dicho uno de los procesos, y
    el archivo (112) de página está ubicado en un dispositivo de almacenamiento secundario que tiene tiempos de
    lectura/escritura más lentos pero mayor capacidad de almacenamiento que la memoria (106) paginada.
  8. 8. Un dispositivo informático según la reivindicación 7, estando el administrador (104) de almacenamiento comprimido configurado adicionalmente, con respecto a la compresión y escritura, para: en respuesta a la determinación (1002) de un intercambio de salida de dicho primer conjunto de páginas de memoria como páginas de memoria candidatas de dicho uno de los procesos:
    identificar (1004) una lista de las páginas de memoria candidatas en un conjunto de trabajo de dicho uno de los procesos, comprimir (1008) las páginas de memoria candidatas identificadas,
    escribir (1008) las páginas de memoria candidatas identificadas comprimidas en el almacenamiento (110) comprimido en orden secuencial por dirección de memoria virtual de las páginas de memoria candidatas identificadas,
    reservar (1010) espacio en el archivo (112) de página para el almacenamiento (110) comprimido, y
    escribir (1014) fuera del almacenamiento (110) comprimido contiguamente al espacio reservado en el archivo
    (112) de página; y
    en respuesta a la determinación (1102) para intercambiar el almacenamiento (110) comprimido, que anteriormente se intercambió fuera del conjunto de trabajo de dicho uno de los procesos: recuperar (1106) el almacenamiento (110) comprimido del archivo (112) de página,
    almacenar (1106) el almacenamiento (110) comprimido recuperado en un tercer conjunto de páginas de memoria,
    descomprimir (1108) las páginas de memoria comprimidas en el tercer conjunto de páginas de memoria, y devolver (1110) las páginas de memoria descomprimidas para incluirlas en el conjunto de trabajo del proceso.
ES15759972.1T 2014-02-21 2015-02-18 Compresión de memoria modificada Active ES2657800T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201414187031 2014-02-21
US14/187,031 US20150242432A1 (en) 2014-02-21 2014-02-21 Modified Memory Compression
PCT/US2015/016237 WO2015175062A2 (en) 2014-02-21 2015-02-18 Modified memory compression

Publications (1)

Publication Number Publication Date
ES2657800T3 true ES2657800T3 (es) 2018-03-06

Family

ID=53882401

Family Applications (1)

Application Number Title Priority Date Filing Date
ES15759972.1T Active ES2657800T3 (es) 2014-02-21 2015-02-18 Compresión de memoria modificada

Country Status (11)

Country Link
US (1) US20150242432A1 (es)
EP (1) EP3108371B1 (es)
JP (1) JP6412583B2 (es)
KR (1) KR20160124181A (es)
CN (1) CN106030547A (es)
AU (1) AU2015259834A1 (es)
CA (1) CA2938891A1 (es)
ES (1) ES2657800T3 (es)
MX (1) MX2016010706A (es)
RU (1) RU2673694C2 (es)
WO (1) WO2015175062A2 (es)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10102148B2 (en) 2013-06-13 2018-10-16 Microsoft Technology Licensing, Llc Page-based compressed storage management
US9684625B2 (en) 2014-03-21 2017-06-20 Microsoft Technology Licensing, Llc Asynchronously prefetching sharable memory pages
US9940733B2 (en) * 2014-06-26 2018-04-10 Intel Corporation Virtual memory supported compression control surfaces
US20160098203A1 (en) * 2014-12-18 2016-04-07 Mediatek Inc. Heterogeneous Swap Space With Dynamic Thresholds
US9632924B2 (en) 2015-03-02 2017-04-25 Microsoft Technology Licensing, Llc Using memory compression to reduce memory commit charge
US10037270B2 (en) 2015-04-14 2018-07-31 Microsoft Technology Licensing, Llc Reducing memory commit charge when compressing memory
US20160320972A1 (en) * 2015-04-29 2016-11-03 Qualcomm Incorporated Adaptive compression-based paging
CN105631035B (zh) * 2016-01-04 2018-04-17 北京百度网讯科技有限公司 数据存储方法和装置
EP3278229B1 (en) * 2016-04-29 2020-09-16 Hewlett-Packard Enterprise Development LP Compressed pages having data and compression metadata
CN109313604B (zh) 2016-06-27 2023-05-23 英特尔公司 用于压缩虚拟存储器的动态配置的计算系统、装置和方法
US10515006B2 (en) 2016-07-29 2019-12-24 Samsung Electronics Co., Ltd. Pseudo main memory system
TWI710903B (zh) * 2016-09-30 2020-11-21 南韓商三星電子股份有限公司 偽主記憶體系統及操作該系統的方法
KR101995433B1 (ko) * 2017-09-13 2019-09-24 엘지전자 주식회사 디지털 디바이스 및 그 제어 방법
CN111108484A (zh) * 2017-12-14 2020-05-05 英特尔公司 带有降低的页面交换开销的传感器中枢和存储器系统
KR102533726B1 (ko) * 2018-04-06 2023-05-18 삼성전자주식회사 전자 장치 및 그의 제어방법
SE543649C2 (en) * 2018-11-14 2021-05-18 Zeropoint Tech Ab Managing free space in a compressed memory system
KR20210049602A (ko) * 2019-10-25 2021-05-06 삼성전자주식회사 컴퓨팅 장치 및 그 동작 방법
CN113138941A (zh) * 2020-01-20 2021-07-20 华为技术有限公司 内存交换的方法、装置
KR20220051546A (ko) * 2020-10-19 2022-04-26 삼성전자주식회사 전자장치 및 그 제어방법
US11861395B2 (en) 2020-12-11 2024-01-02 Samsung Electronics Co., Ltd. Method and system for managing memory for applications in a computing system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04205634A (ja) * 1990-11-30 1992-07-27 Matsushita Electric Ind Co Ltd 記憶装置制御方法
DE69719377D1 (de) * 1997-03-21 2003-04-03 Canal & Technologies Paris Speicherorganisation eines rechners und verfahren dafür
US6516397B2 (en) * 2001-04-09 2003-02-04 Hewlett-Packard Company Virtual memory system utilizing data compression implemented through a device
US6910106B2 (en) * 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
CN100580627C (zh) * 2003-09-24 2010-01-13 T1科技有限公司 启动计算机系统的方法和设备
WO2007005829A2 (en) * 2005-07-01 2007-01-11 Nec Laboratories America, Inc. Operating system-based memory compression for embedded systems
US7895242B2 (en) * 2007-10-31 2011-02-22 Microsoft Corporation Compressed storage management
US8484405B2 (en) * 2010-07-13 2013-07-09 Vmware, Inc. Memory compression policies
EP2630573B1 (en) * 2010-10-22 2015-05-20 ST-Ericsson SA Methods and devices for reducing compressed page loading time on page fault
US8972696B2 (en) * 2011-03-07 2015-03-03 Microsoft Technology Licensing, Llc Pagefile reservations
CN102760099B (zh) * 2011-04-29 2015-10-14 群联电子股份有限公司 数据写入方法、存储器控制器与存储器储存装置
US8832411B2 (en) * 2011-12-14 2014-09-09 Microsoft Corporation Working set swapping using a sequentially ordered swap file
US9053018B2 (en) * 2012-06-29 2015-06-09 International Business Machines Corporation Compressed memory page selection based on a population count of a dataset
US10565099B2 (en) * 2012-12-28 2020-02-18 Apple Inc. Methods and apparatus for compressed and compacted virtual memory
US9400754B2 (en) * 2013-12-19 2016-07-26 International Business Machines Corporation Asynchronous swap mechanism and page eviction from memory

Also Published As

Publication number Publication date
MX2016010706A (es) 2016-11-10
EP3108371B1 (en) 2017-11-29
CN106030547A (zh) 2016-10-12
KR20160124181A (ko) 2016-10-26
RU2016134017A (ru) 2018-02-22
AU2015259834A1 (en) 2016-08-18
WO2015175062A3 (en) 2016-01-07
WO2015175062A2 (en) 2015-11-19
JP2017512340A (ja) 2017-05-18
RU2016134017A3 (es) 2018-09-20
CA2938891A1 (en) 2015-11-19
JP6412583B2 (ja) 2018-10-24
US20150242432A1 (en) 2015-08-27
RU2673694C2 (ru) 2018-11-29
EP3108371A2 (en) 2016-12-28

Similar Documents

Publication Publication Date Title
ES2657800T3 (es) Compresión de memoria modificada
KR102069940B1 (ko) 페이지 기반 압축 저장 관리
US10198215B2 (en) System and method for multi-stream data write
US10310893B2 (en) Managing container pause and resume
US9262313B2 (en) Provisioning in heterogenic volume of multiple tiers
EP3283965B1 (en) Reducing memory commit charge when compressing memory
US9116904B2 (en) File system operation on multi-tiered volume
US9524300B2 (en) Heterogenic volume generation and use system
US9141626B2 (en) Volume having tiers of different storage traits
US9684625B2 (en) Asynchronously prefetching sharable memory pages
CN109725823B (zh) 用于管理混合存储盘阵列的方法和设备
ES2711561T3 (es) Uso de compresión de memoria para reducir la carga de compromiso de memoria
US20120144111A1 (en) Method and device for utilizing application-level prior knowledge for selectively storing data in higher performance media
US8977814B1 (en) Information lifecycle management for binding content
US11755233B2 (en) System and method for memory management using memory device cleansing
US11347596B2 (en) Preliminary data protection using composite copies of data in a data storage system
US20220066877A1 (en) Storing erasure coded data based on reliability of storage devices