ES2711561T3 - Uso de compresión de memoria para reducir la carga de compromiso de memoria - Google Patents

Uso de compresión de memoria para reducir la carga de compromiso de memoria Download PDF

Info

Publication number
ES2711561T3
ES2711561T3 ES16708857T ES16708857T ES2711561T3 ES 2711561 T3 ES2711561 T3 ES 2711561T3 ES 16708857 T ES16708857 T ES 16708857T ES 16708857 T ES16708857 T ES 16708857T ES 2711561 T3 ES2711561 T3 ES 2711561T3
Authority
ES
Spain
Prior art keywords
memory
program
commitment
amount
pages
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
ES16708857T
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 ES2711561T3 publication Critical patent/ES2711561T3/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/253Centralized memory
    • G06F2212/2532Centralized memory comprising a plurality of modules
    • 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)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

Un método (300) de reducir una cantidad de compromiso de memoria para un programa en un dispositivo de cálculo (502), comprendiendo el método: determinar (304) que el programa está en un estado a partir del cual el programa puede ser terminado, habiendo sido comprometida al programa una cantidad de memoria, siendo la cantidad de memoria un compromiso de memoria que garantiza la disponibilidad de una cantidad de memoria asignada al programa, habiendo sido usado por el programa un subconjunto de la cantidad de memoria comprometida al programa, e incluyendo la cantidad de memoria comprometida al programa varias páginas de memoria; comprimir (308) el contenido de las páginas de memoria en el subconjunto de memoria usado por el programa, en donde la compresión comprende comprimir, por un controlador de la memoria del dispositivo de cálculo (502), uno o más del subconjunto las páginas de memoria mientras que el programa se está ejecutando y antes de que el programa sea pasado al estado a partir del cual el programa puede ser terminado; determinar (310) una cantidad del compromiso de memoria para el programa que puede ser liberada; liberar (312), después de que el subconjunto de memoria usado por el programa ha sido comprimido, la cantidad determinada del compromiso de memoria para el programa, efectiva para reducir la cantidad de memoria garantizada para estar disponible al programa en una cantidad menor de la que es normalmente asignada al programa; y mantener un registro del compromiso de memoria liberado.

Description

DESCRIPCION
Uso de compresion de memoria para reducir la carga de compromiso de memoria
Antecedentes
A medida que la tecnolog^a de los ordenadores ha avanzado el rendimiento de los procesadores del ordenador ha aumentado. Este mayor rendimiento ha dado como resultado unos programas de ordenador mas complejos que proporcionan una mayor funcionalidad a los usuarios. No obstante, este mayor rendimiento no esta exento de problemas. Uno de tales problemas es que los programas de ordenador se hacen mas complejos ya que usan mayores cantidades de memoria del ordenador. Esto ha llevado a la necesidad de incluir mas memoria del ordenador en los ordenadores, lo que aumenta el coste de tales ordenadores. El documento US6298422 describe un metodo para reducir las necesidades de memoria, y el consumo del ciclo del CPU de un programa de ejecucion en un estado suspendido suspende el programa interceptando los puntos de entrada del programa. Los metodos, sistemas y programas de ordenador del documento US2013/0160011 gestionan la memoria de un entorno de tiempo de ejecucion en una maquina virtual. El documento US2005/0132161 describe un metodo de creacion de un espacio de memoria virtual en una memoria.
Compendio
La presente invencion esta definida en las reivindicaciones independientes anejas a las que se debena hacer referencia.
Unas caractensticas ventajosas se exponen en las reivindicaciones independientes anejas.
Las realizaciones o ejemplos de la siguiente descripcion que no estan cubiertas por las reivindicaciones son consideradas como que no son parte de la invencion de acuerdo con esta descripcion. Este Resumen se proporciona para introducir una seleccion de conceptos en una forma simplificada que estan ademas descritos mas adelante en la Descripcion Detallada. Este Resumen no pretende identificar caractensticas clave o caractensticas esenciales de la materia objeto reivindicada, ni se pretende que sea usado para limitar el alcance de la materia objeto reivindicada.
Se ha proporcionado un metodo de acuerdo con la reivindicacion independiente 1 y un dispositivo de ordenador de acuerdo con la reivindicacion independiente 10. De acuerdo con uno o mas aspectos, se hace una determinacion de que un programa esta en un estado a partir del cual el programa puede ser terminado, una cantidad de memoria que ha sido comprometida al programa, siendo la cantidad de memoria un compromiso de memoria para el programa, y un subconjunto de la cantidad de memoria comprometida al programa que ha sido usada por el programa. La cantidad de memoria comprometida al programa incluye muchas paginas de memoria. El contenido de las paginas de memoria en el subconjunto de memoria usado por el programa es comprimido, y se determina una cantidad del compromiso de memoria para el programa que puede ser liberada. Despues de que el subconjunto de memoria usado por el programa ha sido comprimido, la cantidad determinada de la memoria comprometida para el programa es liberada.
De acuerdo con uno o mas aspectos se hace una determinacion de que se va a acceder a una o mas paginas de un programa, habiendo el programa tenido liberado al menos parte de su compromiso de memoria. Se realiza un intento para obtener de nuevo el compromiso de memoria para al menos una o mas paginas de memoria del programa. En respuesta al intento de obtener de nuevo el compromiso de memoria que tiene exito, se permite acceder a una o mas paginas de memoria. En respuesta al intento de obtener de nuevo el compromiso de memoria sin exito, el programa es terminado y lanzado de nuevo.
Breve descripcion de los dibujos
En los dibujos se usan los mismos numeros como referencia de similares caractensticas.
La Figura 1 ilustra un sistema de ejemplo que emplea el uso de la compresion de memoria para reducir la carga de compromiso de memoria de acuerdo con una o mas realizaciones.
Las Figuras 2A y 2B ilustran unos diagramas de estado de ejemplo que muestran diferentes estados en los que un programa puede estar de acuerdo con una o mas realizaciones.
La Figura 3 es un diagrama de flujos que ilustra un proceso de ejemplo para conservar el compromiso de memoria cuando un programa es terminable de acuerdo con una o mas realizaciones.
La Figura 4 es un diagrama de flujos que ilustra un proceso de ejemplo para permitir el acceso a la memoria de un programa que ha sido suspendido o de otro modo hecho terminable de acuerdo con una o mas realizaciones.
La Figura 5 ilustra un sistema de ejemplo que incluye un dispositivo de calculo de ejemplo que es representativo de uno o mas sistemas y/o dispositivos que pueden aplicar las diversas tecnicas aqrn descritas.
Descripcion detallada
El uso de la compresion de memoria para reducir la carga de compromiso de memoria (en adelante tambien referida como “carga de compromiso” o “compromiso de memoria”) se discute aqm. Una memoria en un dispositivo de calculo esta formado por muchos bloques o porciones denominados paginas de memoria (o simplemente paginas). Estas paginas estan respaldadas por un archivo de paginas en un dispositivo de almacenamiento (por ejemplo, un disco), y un gestor de la memoria del dispositivo de calculo gestiona la transferencia de datos de las diversas paginas entre la memoria y el archivo de paginas segun sea conveniente. El gestor de la memoria tambien asigna cantidades de memoria a programas que funcionan en el dispositivo de calculo.
Cuando la memoria es asignada a un programa, un espacio de direcciones es asignado o destinado al programa. Este espacio de direcciones incluye la cantidad de memoria asignada, y el gestor de la memoria destina una carga de compromiso para la cantidad de memoria asignada. Esta cantidad de memoria asignada es la cantidad de memoria que esta comprometida al programa, y tambien se denomina como el compromiso de memoria para el programa (o simplemente el compromiso para el programa). El compromiso de memoria garantiza la disponibilidad de la cantidad de memoria asignada al programa - el gestor de la memoria garantiza que si se accede a una direccion virtual comprometida en la memoria asignada al programa, unas paginas en memoria ffsica (por ejemplo RAM) pueden ser hechas disponibles para la direccion. En el momento en el que la memoria es asignada al programa, no es necesario que paginas ffsicas sean (pero alternativamente pueden ser) asignadas al programa. Una cantidad maxima de carga de compromiso permisible en el dispositivo de calculo es igual a la cantidad de memoria ffsica (por ejemplo RAM) mas el tamano de todos los archivos de paginas en un dispositivo de almacenamiento que respalda la memoria ffsica (por ejemplo RAM).
El contenido de una o mas de las paginas de memoria de un programa es comprimido. Esta compresion puede ocurrir mientras que el programa esta activo (por ejemplo, ejecutandose o de otro modo esta permitido acceder a la memoria asignada al programa) y/o en respuesta al programa que es suspendido (o de otro modo colocado en un estado no activo). Cuando un programa es suspendido, se determina un compromiso de cantidad de memoria para el programa que puede ser liberada. Esta cantidad de compromiso de memoria que puede ser liberada es la cantidad que fue comprometida al programa menos cualquier cantidad aun almacenada (en formato comprimida) de informacion (por ejemplo, datos o instrucciones) para el programa. La cantidad determinada de compromiso de memoria es liberada, permitiendo que el compromiso de cantidad de memoria liberada sea consumido por otros programas segun convenga.
Cuando deben ser accedidas una o mas paginas de memoria de un programa suspendido, tal como debido a que el programa suspendido que es hecho activo de nuevo o codigo de modo nuclear que se adjunta al espacio de memoria del programa suspendido, se hace un intento de adquirir de nuevo el compromiso de memoria para esas paginas de memoria. Dependiendo de que memoria ha sido asignada a que otros programas, el intento puede tener exito o no tenerlo. Si el intento tiene exito, entonces esta permitido el acceso a una o mas paginas de memoria. No obstante, si el intento no tiene exito, entonces el programa es terminado, y el programa es opcionalmente lanzado de nuevo. El lanzamiento de nuevo del programa permite que el programa se ejecute, asignando una memoria como convenga al programa (y opcionalmente resultando en uno o mas de otros programas que son terminados). Si el programa es lanzado de nuevo puede variar basado en el tipo de acceso (por ejemplo, el programa puede ser lanzado de nuevo si el acceso es debido a que el programa suspendido esta siendo hecho activo nuevamente, pero no puede ser lanzado de nuevo si el acceso es debido al codigo de modo nuclear que se adjunta al espacio de memoria del programa suspendido).
La Figura 1 ilustra un sistema 100 de ejemplo que emplea el uso de la compresion de memoria para reducir la carga de compromiso de memoria de acuerdo con una o mas realizaciones. El sistema 100 es aplicado por un dispositivo de calculo e incluye un gestor 104 de memoria, un dispositivo de almacenamiento 106, y una memoria paginada 108. Generalmente, el gestor 104 de la memoria gestiona el almacenamiento de datos en la memoria paginada 108. El gestor 104 de la memoria incluye un controlador 110 de la memoria y un asignador 112 de memoria. El asignador 112 de memoria destina unas porciones de la memoria paginada 108 a diversos programas 114 en el sistema 100. La porcion de la memoria paginada 108 asignada a un programa 114 tambien se denomina el espacio de direcciones del programa 114. El controlador 110 de la memoria controla la transferencia de paginas de memoria entre la memoria paginada 108 y el dispositivo de almacenamiento 106, asf como la compresion de las diferentes porciones de la memoria paginada 108.
Un programa 114, cuando esta ejecutandose, es tambien denominado aqm como un proceso (que es un caso de un programa 114 que esta ejecutandose), de este modo porciones de la memoria paginada 108 destinadas a un programa 114 tambien se les conoce como asignadas a un proceso del programa 114. Las paginas asignadas a un proceso son propiedad de o dedicadas a ese proceso y son usadas por ese proceso y no otro proceso (y por tanto son tambien denominadas como paginas privadas). Los programas 114 pueden ser aplicaciones, programas del sistema operativo u otros componentes o modulos. El gestor 104 de la memoria recibe solicitudes desde estos programas 114 para recuperar datos desde la memoria paginada 108 y para escribir datos en la memoria paginada 108. La memoria paginada 108 puede ser, por ejemplo, cualquier tipo de memoria direccionable de la CPU (Unidad de Procesamiento Central), tal como una memoria volatil (por ejemplo, RAM) o una memoria no volatil (por ejemplo, una memoria flash).
El controlador 110 de la memoria gestiona la memoria paginada 108 usando el paginamiento. El controlador 110 de la memoria organiza la memoria 108 (por ejemplo, RAM) en paginas, que son una unidad particular (por ejemplo, fija) de tamano de datos. La accion de paginar se refiere a leer datos en unidades de paginas del archivo de respaldo (tambien denominado como el archivo de intercambio), que es el archivo de paginas 116 en el sistema 100, cuando los datos no estan en la memoria 108. La accion de paginar tambien se refiere a escribir datos sucios (modificados) de nuevo en unidades de paginas en el archivo de paginas 116. Las paginas de memoria son asf tambien denominadas paginas de memoria respaldadas por paginas de archivo. Tales tecnicas de paginamiento son bien conocidas por los expertos en la tecnica.
En respuesta a una solicitud de asignacion de memoria para un programa, el asignador 112 de la memoria asigna una carga de compromiso para la cantidad de memoria solicitada, que garantiza que si se tuviera que acceder a una direccion virtual en esa memoria en algun momento, las paginas ffsicas en la memoria senan hechas disponibles al programa. La solicitud es tfpicamente recibida desde el programa propiamente dicho. El contenido (por ejemplo, datos) de paginas de la memoria asignada al programa puede ser transferido a y desde el archivo de paginas 116 en momentos diferentes, pero esa transferencia es gestionada por el controlador 110 de la memoria y el programa tiene acceso a la memoria que es destinada al programa.
Alternativamente, la asignacion 112 de la memoria y los programas 114 siguen un enfoque de compromiso de memoria retrasada. En el enfoque de compromiso de memoria retrasada no sucede una asignacion de compromiso real cuando una solicitud de asignacion de memoria es hecha por el programa 114. En vez de ello, un compromiso es asignado a peticion cuando el programa 114 escribe primero en la memoria asignada. Si el compromiso no puede ser asignado en ese momento, surge una excepcion y/o el programa es terminado.
El sistema 100 incluye un modulo 118 de preparacion de la terminacion del programa y un modulo 120 de acceso al programa. El modulo 118 de preparacion de la terminacion del programa gestiona poner el programa en un estado en el que el programa pueda ser terminado (tambien denominado como un estado terminable). Esto puede implicar la comunicacion con el programa de modo que el programa guarde un estado de procesamiento del programa, que se refiere a los diversos datos, ajustes, u otra informacion usada por el programa. Guardando el estado de procesamiento del programa, si el programa es terminado el programa puede ser posteriormente lanzado de nuevo y devuelto al mismo estado de procesamiento como lo habfa tenido antes de ser terminado. Poner un programa en un estado en el que el programa puede ser terminado incluye tambien liberar al menos parte del compromiso de memoria para el programa, como se discute mas adelante con mas detalle. En una o mas realizaciones un programa que es puesto en un estado en el que el programa puede ser terminado es suspendido, lo que se refiere al programa que no funciona en el sistema 100 (por ejemplo, el programa no esta programado para ejecucion por cualesquiera procesadores del sistema 100). Alternativamente, un programa puede der puesto en un estado en el que el programa pueda ser terminado sin suspender el programa.
En una o mas realizaciones el sistema 100 sigue un enfoque de suspension de liberacion del compromiso. En el enfoque de suspension de liberacion del compromiso el modulo 118 de preparacion de la terminacion del programa gestiona poner el programa en un estado en el que el programa puede ser terminado como se ha discutido antes. Alternativamente, el sistema 100, como reivindicado, puede seguir un enfoque de liberacion de tiempo de ejecucion. En el enfoque de liberacion de tiempo de ejecucion un programa es considerado terminable en todo momento, incluso cuando el programa esta activo (por ejemplo, ejecutandose). El compromiso de memoria puede ser guardado en el tiempo de ejecucion cuando la aplicacion esta todavfa activa (pero terminable) de modo que la carga de compromiso para el subconjunto de paginas en el espacio de direcciones que estan comprimidas puede ser liberada tan pronto como las paginas son comprimidas en las paginas de memoria comprimida. En este enfoque (por ejemplo, usado en conjuncion con el enfoque de compromiso de memoria retrasada antes discutido), el almacenamiento de los datos comprimidos (las paginas de memoria comprimida) carga su propio compromiso. Cuando el programa accede a una pagina liberada de compromiso, el compromiso es vuelto a cargar, una pagina ffsica es asignada, y los datos son descomprimidos desde el almacen comprimido en la pagina ffsica. Si la carga de compromiso falla (la carga de compromiso no puede ser adquirida de nuevo), entonces surge una excepcion (y/o el programa es terminado).
El modulo 120 de acceso al programa gestiona permitir el acceso a la memoria de un programa que ha sido suspendido o de otro modo hecho terminable. Este acceso permitido puede incluir la reanudacion de la ejecucion del programa, tal como el lanzamiento de nuevo de un programa que fue terminado o reanudar la ejecucion de un programa suspendido. Este permiso de acceso puede tambien incluir adquirir de nuevo al menos parte de la carga del compromiso de memoria previamente asignada a un programa de modo que otro programa pueda acceder a la memoria, como se discute mas adelante con mas detalle.
Las Figuras 2A y 2B ilustran unos diagramas de estado de ejemplo 200 que muestran diferentes estados en los que un programa puede estar de acuerdo con una o mas realizaciones. El diagrama de estado 200 incluye un estado activo 202, un estado terminable 204, y un estado terminado 206. Un programa puede pasar entre los diferentes estados 202, 204 y 206 como esta ilustrado por las flechas. A partir del estado terminable 204 el programa puede pasar al estado activo 202 o al estado terminable 206. A partir del estado terminable 206 el programa puede pasar al estado terminable 204 o al estado activo 202.
En una o mas realizaciones como esta ilustrado en la Figura 2A, el estado activo 202 y el estado terminable 204 no se solapan. De este modo, en tales realizaciones el programa puede ser activo o terminable, pero no activo y terminable a la vez. Alternativamente, como se ha ilustrado en la Figura 2B, el estado activo 202 y el estado terminable 204 se solapan parcialmente. Por lo tanto, en tales realizaciones el programa puede ser activo pero no terminable, terminable pero no activo, o activo y terminable a la vez.
En el estado activo 202 el programa esta funcionando (por ejemplo, esta siendo programado para ejecucion por uno o mas procesadores del sistema o dispositivo que hace funcionar el programa). Mientras tanto, en el estado activo 202 el programa es capaz de acceder a la memoria que ha sido asignada al programa. Desde el estado activo 202 el programa puede pasar al estado terminable 204, tal como cuando el programa es suspendido o de otro modo ser puesto en un estado en el que el programa pueda ser terminado.
En el estado terminable 204 el programa esta en un estado en el que el programa puede ser terminado (por ejemplo, el programa es suspendido). Mientras que se pasa del estado activo 202 al estado terminable 204 el programa guarda el estado de procesamiento del programa de modo que si el programa es terminado, el programa puede a continuacion ser lanzado de nuevo y devuelto al mismo estado de procesamiento como lo habfa hecho antes del paso al estado terminable 204. Mientras que en el estado terminable 204 el programa no es capaz de acceder a la memoria que ha sido asignada al programa, y al menos parte de la carga de compromiso de memoria que ha sido asignado al programa puede ser liberada, como se discute mas adelante con mas detalle.
A partir del estado terminable 204 el programa puede pasar al estado activo 202. El paso al estado activo 202 puede ocurrir debido a diversos sucesos diferentes, tal como una solicitud de un usuario de ejecutar el programa, una solicitud por otro programa de adjuntarse al espacio de memoria del programa, y asf sucesivamente. Tambien desde el estado terminable 204 el programa puede pasar al estado terminado 206. El paso al estado terminado 206 puede ocurrir debido a diversos sucesos diferentes, tales como una solicitud de un usuario de cerrar un programa, una determinacion que la memoria previamente asigno al programa debe ser usada para uno o mas programas adicionales, y asf sucesivamente.
En el estado terminado 206, el programa no esta ejecutandose. El programa no esta cargado en la memoria (por ejemplo, RAM) del sistema o del dispositivo de calculo que ejecutana el programa, aunque esta almacenado en otro dispositivo de almacenamiento y puede ser cargado en la memoria del sistema o dispositivo de calculo. A partir del estado terminado 206 el programa puede pasar al estado activo 202. El paso al estado activo 202 puede ocurrir debido a diversos sucesos diferentes tales como una solicitud de un usuario de ejecutar el programa. Tambien desde el estado terminado 204 el programa puede pasar al estado terminable 204. El paso al estado terminable 204 puede ocurrir debido a diversos sucesos diferentes, tal como una solicitud del usuario para cargar pero no ejecutar el programa.
Volviendo a la Figura 1, el controlador 110 de la memoria gestiona la compresion de la memoria usada por un programa. La memoria usada por un programa se refiere a las paginas de memoria que han sido instanciadas por el programa o de otro modo han sido accedidas (por ejemplo, para escribir o almacenar datos) por el programa. La compresion de la memoria de o usada por un programa se refiere a la compresion del contenido de (por ejemplo, datos almacenados en) una o mas paginas de memoria asignada al programa. Cualquiera de una variedad de diferentes tecnicas de compresion publicas o privadas puede ser usada para comprimir una pagina de memoria. Por ejemplo, una pagina de memoria puede ser comprimida usando unos algoritmos de compresion de codificacion de longitud de ejecucion, algoritmos de compresion LZW, algoritmos de compresion Huffman, y asf sucesivamente. Se pueden emplear opcionalmente muchos algoritmos de compresion diferentes, tal como algoritmos de compresion para diferentes tipos de contenidos. Por ejemplo, un algoritmo de compresion puede ser usado para un contenido alfanumerico y/o de texto, otro algoritmo de compresion puede ser usado para un contenido de imagenes, y otro algoritmo de compresion puede ser usado para un contenido de audio. La tecnica de compresion usada para comprimir una pagina de memoria es tfpicamente un algoritmo de compresion sin perdidas, aunque en ciertos casos (por ejemplo, para ciertos contenidos de imagenes y/o de contenidos de audio) alternativamente se puede usar un algoritmo de compresion con perdidas. El particular algoritmo de compresion puede tambien ser dependiente del dispositivo, en donde un dispositivo mas rapido (por ejemplo, con un procesador mas potente o mas procesadores) puede ser configurado con un algoritmo de compresion mas intensivo en procesadores que comprima mejor en tanto que un dispositivo mas lento (por ejemplo, con uno o mas procesadores menos potentes) puede ser configurado con un algoritmo menos intensivo en procesadores que no comprime tan bien.
La memoria usada por un programa puede ser comprimida en momentos diferentes. En una o mas realizaciones la memoria usada por un programa es comprimida mientras que el programa esta ejecutandose. El controlador 110 de la memoria puede usar cualquiera de una variedad de reglas o criterios diferentes para determinar que paginas de memoria son comprimidas. Por ejemplo, todas las paginas de memoria usadas por el programa pueden ser comprimidas, paginas de memoria que no han sido accedidas por el programa para una cantidad umbral de tiempo pueden ser comprimidas, paginas de memoria que se estan escribiendo en un archivo de paginas pueden ser comprimidas, y asf sucesivamente.
Adicional o alternativamente para comprimir la memoria mientras el programa se esta ejecutando, la memoria del programa puede ser comprimida en respuesta al paso del programa a un estado terminable. El controlador 110 de la memoria puede comprimir todas las paginas de memoria que son usadas por el programa (y todavfa no han sido comprimidas), o alternativamente aplicar otras reglas o criterios para determinar que paginas de memoria son comprimidas. En una o mas realizaciones el controlador 110 de la memoria comprime todas las paginas de memoria en la memoria asignada al programa que han sido accedidas (estan instanciadas por) el programa no almacenanan ningun contenido para el programa, y por lo tanto no habna un contenido que comprimir.
El modulo 118 de preparacion de la terminacion del programa gestiona poner el programa en un estado en el que el programa pueda ser terminado. Esto incluye comunicar con el controlador 110 de la memoria para comprimir las paginas de memoria que todavfa no han sido comprimidas. Adicionalmente, el modulo 118 de preparacion de la terminacion del programa determina una cantidad de compromiso de memoria para el programa que puede ser liberada. El modulo 118 de preparacion de la terminacion del programa almacena las paginas de memoria comprimida en la memoria paginada 108 y/o el dispositivo de almacenamiento 106. La cantidad de memoria comprometida para el programa que puede ser liberada puede variar basado en la manera en la que las paginas de memoria comprimida son almacenadas.
En una o mas realizaciones el modulo 118 de preparacion de la terminacion del programa escribe las paginas de memoria comprimida en uno o mas archivos adicionales (distintos del archivo 116 de paginas) del dispositivo 106 de almacenamiento. En esta situacion las paginas de memoria comprimida no son almacenadas en la memoria paginada 108 ni en el archivo 116 de paginas, y de este modo todo el compromiso de memoria para el programa puede ser liberado. Por ejemplo, supongase que 100 Megabitios (MB) de memoria son comprometidos al programa, y que las paginas de memoria usadas por el programa pueden ser comprimidas de modo que tomen, en forma comprimida, 40 MB de la memoria. En este ejemplo los contenidos de los 40 MB de la memoria pueden ser escritos en un archivo del dispositivo de almacenamiento, y los 100 MB del compromiso de memoria para el programa pueden ser liberados.
Alternativamente, el modulo 118 de preparacion de la terminacion del programa escribe las paginas de memoria comprimida en la memoria paginada 108 (despues de lo cual una o mas paginas pueden ser transferidas al archivo 116 de paginas por el controlador 110 de la memoria). En esta situacion las paginas de memoria comprimida son almacenadas en la memoria paginada 108 o en el archivo 116 de paginas, y la cantidad de compromiso de memoria que puede ser liberada es la cantidad comprometida al programa menos la cantidad de memoria en la cual las paginas de memoria fueron comprimidas. Por ejemplo, supongase que 100 MB de memoria son comprometidos al programa, y que las paginas de memoria usadas por el programa pueden ser comprimidas de modo que tomen, en forma comprimida, 40 MB de la memoria. En este ejemplo, el compromiso de memoria para los 40 MB de memoria comprimida no pueden ser liberados, pero una cantidad igual a la diferencia entre la cantidad de memoria comprometida al programa (100 MB) y la cantidad de memoria en la cual las paginas de memoria fueron comprimidas (40 Mb) puede ser liberada (60 MB pueden ser liberados). Este ejemplo supone que las paginas de memoria en las que los datos estan comprimidos ellos mismos no toman un compromiso de memoria adicional. Si las paginas de memoria en las que los datos estan comprimidos ellos mismos toman un compromiso de memoria adicional, entonces todos los 100 MB de compromiso de memoria para el programa pueden ser liberados.
El modulo 118 de preparacion de la terminacion del programa notifica al asignador 112 de la memoria de la cantidad de compromiso de memoria para el programa que puede ser liberada, y el compromiso de memoria es liberado. El asignador 112 de la memoria mantiene un registro (por ejemplo, en el dispositivo 106 de almacenamiento, la memoria paginada 108, u otra memoria o almacenamiento del sistema 100) de la cantidad de compromiso de memoria para el programa que es liberada. Este registro de la cantidad de compromiso de memoria para el programa puede ser usado en situaciones en las que la aplicacion es posteriormente reanudada, como se discute mas adelante con mas detalle.
Alternativamente, como se ha reivindicado, en algunas situaciones las paginas de memoria son liberadas en el tiempo de ejecucion como se ha discutido antes. En tales situaciones el programa es activo y el compromiso de memoria es liberado en una base por pagina a medida que las paginas de memoria son comprimidas, y se realiza un intento de adquirir de nuevo el compromiso de memoria en respuesta al programa que accede a una pagina de memoria comprimida, como se ha discutido antes. En tales situaciones el asignador 112 de la memoria libera unas paginas de memoria a medida que son comprimidas (por ejemplo, y escritas en las paginas de memoria en un almacen comprimido), y ademas mantiene un registro que identifica que paginas de memoria comprometidas a un programa han tenido su compromiso de memoria liberado. Este registro (por ejemplo, un registro por pagina de cada pagina de memoria) es usado por el asignador 112 de la memoria para determinar si el compromiso de memoria para una pagina de memoria debe ser adquirido de nuevo si despues se accede a la pagina de memoria. Si el compromiso de memoria no ha sido liberado para una pagina particular, entonces el compromiso de memoria para esa pagina particular no necesita ser adquirido de nuevo. No obstante, si el compromiso de la memoria ha sido liberado para una pagina particular, entonces se realiza un intento de adquirir de nuevo el compromiso de la memoria para esa pagina particular.
La liberacion del compromiso de memoria para el programa da como resultado la conservacion del compromiso de memoria en el sistema 100. El compromiso de memoria que fue previamente comprometido a un programa que no es capaz de acceder a la memoria en el momento actual en cualquier modo (por ejemplo, debido a la suspension del programa) es liberado, permitiendo que el compromiso de memoria sea consumido por otros programas. Por ejemplo, si 60 MB del compromiso de memoria son liberados debido a la suspension del programa, esos 60 MB pueden ser asignados a otro programa (y de este modo se convierten en el compromiso de memoria de ese otro programa). Se debena tener en cuenta que si el programa no es suspendido, entonces el programa puede intentar acceder a una pagina de memoria liberada de compromiso, en cuyo punto el gestor de la memoria intentara adquirir de nuevo el compromiso para la pagina de memoria, asignar una pagina ffsica (si el intento de adquirir de nuevo el compromiso tiene exito), y descomprimir los datos comprimidos en esa pagina ffsica.
El modulo 120 de acceso al programa gestiona permitir un acceso a la memoria de un programa que ha sido suspendido o terminado. Mientras que en el estado terminable la memoria asignada al programa no puede ser accedida directamente por el programa propiamente dicho u otros programas debido a que el contenido esta comprimido y la memoria en la que el contenido (si esta descomprimido) sena colocado ha sido liberada. Varios sucesos pueden ocurrir que incluyen solicitudes para acceder al espacio de direcciones de un programa en el estado terminable. En respuesta a tal situacion el modulo 120 de acceso al programa gestiona permitir acceso a al menos parte de la memoria previamente asignada al programa intentando obtener de nuevo (tambien denominado adquirir de nuevo) el compromiso de memoria para al menos parte de la memoria que fue previamente comprometida al programa y liberada. Si el intento de obtener de nuevo el compromiso de memoria para al menos parte de la memoria tiene exito, entonces el acceso solicitado al espacio de direcciones del programa esta permitido. No obstante, si el intento de obtener de nuevo el compromiso de memoria para al menos parte de la memoria no tiene exito, entonces el programa es terminado (cesa la ejecucion del programa). El programa puede opcionalmente ser lanzado de nuevo, lo que da como resultado hacer una nueva asignacion de memoria al programa (lo que puede dar como resultado que uno o mas de otros programas son pasados a un estado terminable o terminado).
En situaciones en las que la ejecucion de un programa ha sido suspendida (o de otro modo situada en un estado no activo), el modulo 120 de acceso al programa puede reanudar la ejecucion del programa en respuesta a diversos acontecimientos. En una o mas realizaciones estos acontecimientos incluyen una solicitud para reanudar la ejecucion del programa, tal como una entrada de usuario que solicita hacer la peticion una peticion activa (una peticion que esta actualmente ejecutandose en el dispositivo de calculo). Adicional o alternativamente estos acontecimientos pueden incluir otras solicitudes, tal como una solicitud de otro programa o codigo para adjuntar al espacio de direcciones del programa. Estos otros programas o codigos son ffpicamente ejecutados en un espacio mas privilegiado (por ejemplo, en un modo nuclear) que el programa a cuyo espacio de direcciones se esta accediendo. Estos otros programas pueden realizar diversas operaciones en el espacio de direcciones, tal como analizar el espacio de direcciones para identificar programas malignos.
En tales situaciones el modulo 120 de acceso al programa puede intentar obtener de nuevo el compromiso de memoria para toda la memoria que fue previamente comprometida al programa y liberada, o alternativamente solamente parte de la memoria que fue previamente comprometida al programa y liberada. Por ejemplo, el modulo 120 de control del programa puede intentar obtener de nuevo el compromiso de memoria para una memoria suficiente para permitir que se acceda a un numero particular de paginas de memoria (por ejemplo, las paginas de memoria que incluyen las porciones del espacio de direcciones al que se esta accediendo). En tales situaciones el controlador 110 de la memoria asegura que no se puede acceder a las paginas que no han tenido su carga de compromiso obtenida de nuevo (con el fin de impedir la violacion de las reglas de los ffmites de compromiso).
El modulo 120 de acceso al programa puede tambien determinar si intentar obtener de nuevo parte o todo el compromiso de memoria que fue previamente comprometido al programa y liberado basado en el tipo de acceso que se esta realizando. Por ejemplo, si el tipo de acceso es una solicitud del usuario para reanudar la ejecucion del programa, entonces el modulo 120 de acceso al programa intenta obtener de nuevo todo el compromiso de memoria que fue previamente comprometido al programa y liberado. Por medio de otro ejemplo, si el tipo de acceso es una solicitud por otro programa para adjuntar a un espacio de direcciones del programa, entonces el modulo 120 de acceso al programa intenta obtener de nuevo un compromiso de memoria suficiente para permitir la descompresion y acceder a las paginas de memoria que incluyen las porciones del espacio de direcciones al que se esta accediendo.
El modulo 120 de acceso al programa tambien puede determinar que, para ciertos tipos de accesos, el compromiso de memoria que fue previamente comprometido al programa y liberado no necesita ser obtenido de nuevo. En una o mas realizaciones, si el tipo de solicitud es una solicitud por otro programa para adjuntar a y leer desde un espacio de direcciones del programa, entonces el compromiso de memoria que fue previamente comprometido al programa y liberado no necesita ser obtenido de nuevo. El compromiso de memoria para una pagina de memoria que ya esta respaldada (por ejemplo, en forma comprimida) en el archivo de paginas 116 no necesita ser obtenido de nuevo si la pagina de memoria debe ser lefda debido a que no se haran cambios en la pagina de memoria que resultana que dana lugar a la necesidad de guardar la pagina de memoria en el archivo de paginas o mantenida en la memoria paginada 108. No obstante, si el tipo de solicitud es una solicitud por otro programa para adjuntar a y realizar un acceso sin lectura (por ejemplo, un acceso de escritura, un acceso de bloqueo de pagina de memoria, etc), entonces el modulo 120 de acceso al programa intenta obtener de nuevo un suficiente compromiso de memoria para permitir la descompresion y el acceso a las paginas de memoria que incluyen las porciones del espacio de direcciones al que se esta accediendo.
En otras situaciones como se ha discutido antes, en donde el gestor de la memoria sigue un enfoque de liberacion en tiempo de ejecucion, el programa permanece activo y el modulo 120 de acceso al programa no necesita reanudar la ejecucion del programa. Mas bien, se recibe cuando una solicitud (por ejemplo, por el programa, o una solicitud por otro programa para adjuntar a y leer desde un espacio de direcciones del programa) para acceder a una pagina de memoria del programa liberada de compromiso, el compromiso es vuelto a cargar, una pagina ffsica es asignada, y los datos son descomprimidos desde el almacen comprimido en la pagina ffsica. Si la carga de compromiso falla (la carga de compromiso no puede ser adquirido de nuevo), entonces surge una excepcion (y/o el programa es terminado) como se ha discutido antes.
La Figura 3 es un diagrama de flujos que ilustra un proceso de ejemplo 300 para conservar el compromiso de memoria cuando un programa es terminable de acuerdo con una o mas realizaciones. El proceso 300 es realizado por un gestor de la memoria y el modulo de preparacion de terminacion del programa, tal como el gestor 104 de la memoria y el modulo 118 de preparacion de la terminacion del programa de la Figura 1, y puede ser aplicado en soporte logico, microprogramacion cableada, soporte ffsico, o una combinacion de ellos. El proceso 300 se muestra como un conjunto de acciones y no esta limitado al orden mostrado para realizar las operaciones de las diversas acciones. El proceso 300 es un proceso de ejemplo para conservar el compromiso de memoria cuando un programa es terminable; discusiones adicionales de conservacion del compromiso de memoria cuando un programa es terminable estan aqu incluidas con referencia a diferentes figuras.
En el proceso 300 las paginas de memoria de un programa son comprimidas mientras que el programa esta activo (accion 302). Al menos algunas de las paginas de memoria de un programa pueden ser comprimidas por el controlador de la memoria para conservar la memoria mientras que el programa esta ejecutandose como se ha discutido antes. No obstante, en realizaciones alternativas no reivindicadas, no ocurre tal compresion de paginas de memoria mientras que el programa esta activo.
En algun momento se hace una determinacion de que un programa esta en un estado desde el cual el programa puede ser terminado (accion 304). Como se ha discutido antes, el programa puede estar en un estado desde el cual el programa puede ser terminado siendo pasado a un estado terminable, o estando a la vez en un estado activo y terminable.
Se identifica un subconjunto de las paginas de memoria del programa para ser comprimido (accion 306). El subconjunto de las paginas de memoria para ser comprimido son las paginas de memoria incluidas en la memoria asignada al programa a las que se ha accedido por (son instanciadas por) el programa y que todavfa no han sido comprimidas (por ejemplo, en la accion 302).
El subconjunto identificado de las paginas de memoria es comprimido (accion 308). Las paginas de memoria pueden ser comprimidas usando cualquiera de una variedad de diferentes algoritmos o tecnicas de compresion como se ha discutido antes.
Una cantidad de compromiso de memoria para el programa que puede ser liberada es determinada (accion 310). La cantidad de compromiso de memoria que puede ser liberado es igual al valor obtenido sustrayendo la cantidad de memoria en la que las paginas de memoria fueron comprimidas de la cantidad del compromiso de memoria para el programa. El compromiso de memoria para las paginas no instanciadas (paginas de memoria del programa que no fueron usadas por el programa) es incluido en la cantidad del compromiso de memoria para el programa que puede ser liberado. La cantidad de compromiso de memoria que puede ser liberado puede ser menor que todo el compromiso de memoria para el programa (por ejemplo, en situaciones en las que la memoria comprimida es almacenada en una memoria paginada o archivo de paginas), o todo el compromiso de memoria para el programa (por ejemplo, en situaciones en las que la memoria comprimida es almacenada en un archivo adicional en un dispositivo de almacenamiento distinto del archivo de paginas, o en situaciones en las que la memoria comprimida ha cargado un compromiso para ella misma).
Se debena tener en cuenta que en algunas situaciones cierto compromiso de memoria para el programa no puede ser liberado debido a las garantfas hechas a otros programas o codigo (por ejemplo, controladores de modo nuclear). Tal compromiso de memoria esta excluido de la cantidad de compromiso de memoria que puede ser liberado como se ha determinado en la accion 310. De este modo, la cantidad de compromiso de memoria que puede ser liberado es igual al valor obtenido sustrayendo de la cantidad de compromiso de memoria para el programa, la cantidad de memoria en la que las paginas de memoria fueron comprimidas y la cantidad del compromiso de memoria que no puede ser liberado debido a las garantfas hechas a otros programas o codigos. La cantidad de compromiso de memoria determinada en la accion 310 es liberada (accion 312). La liberacion del compromiso de memoria permite que la cantidad del compromiso de memoria sea consumida por otros programas que estan ejecutandose en el dispositivo de calculo. La carga del compromiso de paginas de memoria del programa que no fueron usadas por el programa es reducida a cero, y la carga de compromiso para paginas de memoria que fueron usadas por el programa (y posteriormente comprimidas) es reducida en la relacion de compresion.
Se mantiene un registro de la cantidad del compromiso de memoria que es liberado (accion 314). Este registro permite que se realice a continuacion una determinacion sobre como cuanto compromiso de memoria ha de obtenerse de nuevo para un programa. En una o mas realizaciones el registro incluye una indicacion de que paginas de memoria comprometidas a un programa han tenido su compromiso de memoria liberado, permitiendo que el gestor de la memoria conozca si el compromiso de memoria para una pagina de memoria debe ser adquirido de nuevo si se accede a la pagina de memoria como se ha discutido antes.
La Figura 4 es un diagrama de flujos que ilustra un proceso de ejemplo 400 para permitir el acceso a la memoria de un programa que ha sido suspendido o de otro modo hecho terminable de acuerdo con una o mas realizaciones. El proceso 400 es realizado por un gestor de la memoria y un modulo de acceso al programa, tal como el gestor 104 de la memoria y el modulo 120 de acceso al programa de la Figura 1, y puede ser aplicado en soporte logico, microprogramacion cableada, soporte ffsico, o una combinacion de ellos. El proceso 400 se muestra como un conjunto de acciones y no esta limitado al orden mostrado para realizar las operaciones de las diversas acciones. El proceso 400 es un proceso de ejemplo para permitir el acceso a la memoria de un programa que ha sido suspendido o de otro modo hecho terminable; discusiones adicionales de permitir el acceso a la memoria de un programa que ha sido suspendido o de otro modo hecho terminable estan incluidas aqrn con referencia a diferentes figuras.
En el proceso 400 se hace una determinacion de que se va a acceder a una o mas paginas de memoria de un programa que ha tenido al menos parte de su compromiso de memoria liberado (accion 402). Se puede acceder a una o mas paginas de memoria como parte de diversos sucesos como se ha discutido antes.
Se hace un intento para obtener de nuevo el compromiso de memoria para al menos una o mas paginas de memoria del programa (accion 404). Este intento puede ser realizado para obtener de nuevo todo el compromiso de memoria que fue liberado (por ejemplo, como esta indicado en el registro mantenido en la accion 314 de la Figura 3), o un subconjunto del compromiso de memoria (por ejemplo, compromiso de memoria para paginas de memoria particulares a las que se esta accediendo) como se ha discutido antes.
El proceso 400 sigue su curso basado en si el intento en la accion 404 tiene exito (accion 406). Si el intento en la accion 404 tiene exito, entonces se permite el acceso a una o mas paginas de memoria (accion 408). No obstante, si el intento no tiene exito, entonces el programa es terminado (accion 410) y opcionalmente es lanzado de nuevo (accion 412). Se debena tener en cuenta que terminando y lanzando de nuevo el programa la memoria es asignada al programa en respuesta a una solicitud de asignacion de memoria para el programa, lo que puede dar como resultado que uno o mas de otros programas en el dispositivo de calculo sean terminados.
Las acciones realizadas en la terminacion del programa pueden variar basadas en la aplicacion. En una o mas realizaciones la terminacion del programa incluye desmontar el espacio de direcciones del programa (como si el programa estuviera saliendo), y la activacion de la terminacion de la fibra fuerte para todas las fibras en el proceso que es el programa en ejecucion (por ejemplo, que pone en cola mensajes a las fibras para sacarlas de su estado suspendido y terminar).
En una o mas realizaciones se tiene cuidado al terminar un programa de modo que se mantenga la sincronizacion con otros programas en el dispositivo de calculo. El programa es terminado en la accion 410 de una manera que es congruente con lo que el programa asf como cualquier otro programa (por ejemplo que puede estar adjunto al programa que esta siendo terminado) espera. Por ejemplo, el programa es terminado en la accion 410 solamente si ningun otro programa esta actualmente adjunto al espacio de direcciones del programa.
Volviendo a la Figura 1, en una o mas realizaciones el sistema 102 de gestion de la memoria proporciona un soporte adicional para facilitar guardar el compromiso de memoria. El sistema 102 de gestion de la memoria permite que un programa 114 indique que una particular cantidad de compromiso de memoria previamente asignado al programa 114 pueda ser liberado si el sistema 102 de gestion de la memoria lo desea. Proporcionando tal indicacion el programa 114 esta reconociendo que el programa 114 puede aceptar una perdida de compromiso de memoria previamente asignado al programa 114. Tal indicacion puede ser proporcionada, por ejemplo, invocando una interfaz de programacion de aplicacion (API) expuesta por el asignador 112 de la memoria. La provision de la indicacion permite al asignador 112 de la memoria liberar parte del compromiso de memoria previamente asignado al programa 114 y asignar el compromiso de memoria a otro programa que solicite asignacion de memoria.
Las tecnicas aqrn discutidas soportan diversas situaciones de uso. Las tecnicas aqrn discutidas conservan un compromiso de memoria en un dispositivo de calculo reduciendo la cantidad del compromiso de memoria asignado a programas en el dispositivo de calculo. Esto aumenta el numero de programas que pueden ser ejecutados o suspendidos en un dispositivo de calculo en cualquier momento dado sin tener que terminar los programas. Esto tambien disminuye la cantidad de memoria paginada y/o el espacio del dispositivo de almacenamiento (para el archivo de paginas) necesario para permitir que un numero dado de programas sean ejecutados o suspendidos en un dispositivo de calculo en cualquier momento dado sin tener que terminar cualquiera de los programas.
Aunque aqrn se discute la funcionalidad particular con referencia a modulos particulares, se debena tener en cuenta que la funcionalidad de los modulos individuales aqrn discutidos puede ser separada en multiples modulos, y/o al menos alguna funcionalidad de los multiples modulos puede ser combinada en un unico modulo. Adicionalmente, un modulo particular aqrn discutido realizando una accion incluye ese particular modulo propiamente dicho realizando la accion, o alternativamente ese modulo particular invocando o de otro modo accediendo a otro componente o modulo que realiza la accion (o realiza la accion en conjuncion con ese modulo particular). De este modo, un modulo particular que realiza una accion incluye el modulo particular propiamente dicho realizando la accion y/o otro modulo invocado o de otro modo accedido por ese modulo particular que realiza la accion.
La Figura 5 ilustra un sistema de ejemplo generalmente en 500 que incluye un dispositivo de calculo 502 de ejemplo que es representativo de uno o mas sistemas y/o dispositivos que pueden aplicar las diversas tecnicas aqrn descritas. El dispositivo de calculo 502 puede ser, por ejemplo, un servidor de un proveedor del servicio, un dispositivo asociado con un cliente (un dispositivo cliente), y un sistema en chip, y/o cualquier otro dispositivo de calculo o sistema de calculo adecuados.
El dispositivo de calculo 502 de ejemplo como esta ilustrado incluye un sistema de procesamiento 504, uno o mas medios 506 legibles por ordenador, y una o mas interfaces I/O 508 que estan acoplados comunicativamente uno con otro. Aunque no mostrado, el dispositivo de calculo 502 puede ademas incluir un sistema de barra colectora u otros datos y un sistema de transferencia de ordenes que acopla los diversos componentes, uno con otro. Un sistema de barra colectora puede incluir cualquiera o una combinacion de diferentes estructuras de barra colectora, tal como una barra colectora de memoria o controlador de memoria, una barra colectora periferica, una barra colectora en serie universal, y/o un procesador o barra colectora local que utiliza cualquiera de una variedad de arquitecturas de barra colectora. Tambien se contemplan una variedad de otros ejemplos tales como lmeas de control y datos.
El sistema de procesamiento 504 es representativo de la funcionalidad para realizar una o mas operaciones usando un soporte ffsico. En consecuencia, el sistema de procesamiento 504 esta ilustrado como incluyendo elementos de soporte ffsico 510 que pueden ser configurados como procesadores, bloques funcionales, y asf sucesivamente. Esto puede incluir la aplicacion en soporte ffsico como un circuito integrado de aplicacion espedfica u otro dispositivo logico formado que usa uno o mas semiconductores. Los elementos de soporte ffsico 510 no estan limitados por los materiales de los que estan formados o los mecanismos de procesamiento atff empleados. Por ejemplo, los procesadores pueden estar compuestos por un o unos semiconductores y/o transistores (por ejemplo, circuitos electronicos integrados (ICs)). En tal contexto, las instrucciones ejecutables por un procesador pueden ser unas instrucciones electronicamente ejecutables.
Los medios 506 legibles por ordenador estan ilustrados como incluyendo una memoria/almacenamiento 512. La memoria/almacenamiento 512 representa una capacidad de memoria/almacenamiento asociada con uno o mas medios legibles por ordenador. La memoria/almacenamiento 512 puede incluir unos medios volatiles (tal como una memoria de acceso aleatorio (RAM)) y/o unos medios no volatiles (tal como una memoria de solo lectura (ROM), una memoria Flash, discos opticos, discos magneticos, y asf sucesivamente). La memoria/almacenamiento 512 puede incluir unos medios fijos (por ejemplo, RAM, ROM, un disco duro fijo, y asf) y tambien medios extrafbles (por ejemplo, una memoria Flash, un disco duro extrafble, un disco optico, y asf sucesivamente). Los medios 506 legibles por ordenador pueden estar configurados en una variedad de otras formas como se describira mas adelante.
La o las interfaces entrada/salida 508 son representativas de la funcionalidad para permitir a un usuario introducir instrucciones e informacion al dispositivo de calculo 502, y tambien permitir que la informacion sea presentada al usuario y/o otros componentes o dispositivos usando diversos dispositivos de entrada/salida. Los ejemplos de los dispositivos de entrada incluyen un teclado, un dispositivo de control del cursor (por ejemplo, un raton), un microfono (por ejemplo, para entradas de voz), un dispositivo de exploracion, una funcionalidad tactil (por ejemplo, capacitiva u otros sensores que estan configurados para detectar el toque ffsico), una camara (por ejemplo, que puede emplear longitudes de onda visibles o no visibles tales como frecuencias infrarrojas para detectar el movimiento que no implica el tacto como gestos), y asf sucesivamente. Ejemplos de dispositivos de salida incluyen un dispositivo de visualizacion (por ejemplo, un monitor o proyector), altavoces, una impresora, una tarjeta de red, un dispositivo de respuesta tactil, y asf sucesivamente. De este modo, el dispositivo de calculo 502 puede ser configurado en una variedad de modos como se describira mas adelante para soportar la interaccion con el usuario.
El dispositivo de calculo 502 incluye tambien un sistema 514 de gestion de la memoria. El sistema 514 de gestion de la memoria proporciona una funcionalidad diversa para conservar la memoria reduciendo la carga de compromiso de memoria como se ha discutido antes. El sistema 514 de gestion de la memoria puede aplicar, por ejemplo, el sistema 102 de gestion de la memoria de la Figura 1. Aunque esta ilustrado como separado de los medios 506 legibles por ordenador, se debena tener en cuenta que el sistema 514 de gestion de la memoria puede alternativamente ser aplicado como parte de los medios 506 legibles por ordenador.
Diversas tecnicas pueden ser descritas aqrn en el contexto general del soporte logico, elementos del soporte ffsico, o modulos de programa. Generalmente, tales modulos incluyen rutinas, programas, objetos, elementos, componentes, estructuras de datos, y asf sucesivamente que realizan unas tareas particulares o aplican tipos de datos abstractos particulares. Los terminos “modulo”, “funcionalidad”, y “componente” como se usan aqrn generalmente representan soporte logico, microprogramacion cableada, soporte ffsico, o una combinacion de ellos. Las caractensticas de las tecnicas aqrn descritas son independientes de la plataforma, lo que significa que las tecnicas pueden ser aplicadas en una variedad de plataformas de calculo que tengan una variedad de procesadores.
Una aplicacion de los modulos y tecnicas descritos pueden ser almacenados en y transmitidos a traves de alguna forma de medios legibles por ordenador. Los medios legibles por ordenador pueden incluir una variedad de medios que pueden ser accedidos por el dispositivo de calculo 502. A modo de ejemplo, y no de limitacion, los medios legibles por ordenador pueden incluir “medios de almacenamiento legibles por ordenador” y “medios de senales legibles por ordenador”.
Los “medios de almacenamiento legibles por ordenador” se refieren a medios y/o dispositivos que permiten el almacenamiento permanente de informacion y/o almacenamiento que es tangible, en contraste con una simple transmision de senales, ondas portadoras, o senales en sf mismas. De este modo, los medios de almacenamiento legibles por ordenador se refieren a medios que no llevan senales. Los medios de almacenamiento legibles por ordenador incluyen un soporte ffsico tal como volatil y no volatil, unos medios extrafbles y no extrafbles y/o unos dispositivos de almacenamiento aplicados en un metodo o tecnologfa apropiada para almacenamiento de informacion tal como instrucciones legibles por ordenador, estructuras de datos, modulos de programa, elementos logicos / circuitos, u otros datos. Ejemplos de medios de almacenamiento legibles por ordenador pueden incluir, pero no estan limitados a, RAM, ROM, EEPROM, memoria Flash u otra tecnologfa de memoria, CD-ROM, discos digitales versatiles (DVD) u otro almacenamiento optico, discos duros, casetes magneticas, cintas magneticas, almacenamiento en disco magnetico u otros dispositivos de almacenamiento magnetico, u otros dispositivos de almacenamiento, medios tangibles, o arffculos de fabricacion apropiada para almacenar la informacion deseada y que puedan ser accedidos por un ordenador.
Los “medios de senales legibles por ordenador” se refieren a un medio portador de senales que esta configurado para transmitir instrucciones al soporte ffsico del dispositivo de calculo 502, tal como por medio de una red. Los medios de senales ffpicamente pueden incorporar instrucciones legibles por ordenador, estructuras de datos, modulos de programas, u otros datos en una senal de datos modulados tal como ondas portadoras, senales de datos, u otro mecanismo de transporte. Los medios de senales tambien incluyen cualquier medio de entrega de informacion. El termino “senal de datos modulados” significa una senal que tiene una o mas de sus caractensticas fijadas o cambiadas de tal manera como para codificar informacion en la senal. A modo de ejemplo, y no de limitacion, los medios de comunicacion incluyen medios por cable tal como una red por cable o una conexion directa por cable, y unos medios inalambricos tales como acusticos, RF, infrarrojos, y otros medios inalambricos.
Como previamente se ha descrito, los elementos 510 de soporte ffsico y los medios 506 legibles por ordenador son representativos de instrucciones, modulos, dispositivos logicos programables y/o logica del dispositivo fijo aplicado en una forma de soporte ffsico que puede ser empleado en algunas realizaciones para aplicar al menos algunos aspectos de las tecnicas aqrn descritas. Los elementos de soporte ffsico pueden incluir componentes de un circuito integrado o un sistema en chip, un circuito integrado de aplicacion espedfica (ASIC), una matriz de puerta programable de campo (FPGA), un dispositivo logico programable complejo (CPLD), y otras aplicaciones en silicio u otros dispositivos de soporte ffsico. En este contexto, un elemento de soporte ffsico puede operar como un dispositivo de procesamiento que realiza tareas de programas definidas por instrucciones, modulos, y/o una logica incorporada por el elemento de soporte ffsico asf como un dispositivo de soporte ffsico utilizado para almacenar instrucciones para ejecucion, por ejemplo, los medios de almacenamiento legibles por ordenador previamente descritos.
Unas combinaciones de lo anterior pueden tambien ser empleadas para aplicar las diversas tecnicas y modulos aqrn descritos. Por lo tanto, el soporte logico, el soporte ffsico, o los modulos de programas y otros modulos de programas pueden ser aplicados como una o mas instrucciones y/o logica incorporada en alguna forma de medios de almacenamiento legibles por ordenador y/o por uno o mas elementos 510 de soporte ffsico. El dispositivo de calculo 502 puede ser configurado para aplicar instrucciones particulares y/o funciones que corresponden a los modulos de soporte logico y/o soporte ffsico. Por consiguiente, la aplicacion de modulos como un modulo que es ejecutable por el dispositivo de calculo 502 como soporte logico puede ser conseguida, al menos parcialmente, en soporte ffsico, por ejemplo, a traves del uso de medios de almacenamiento legibles por ordenador y/o elementos 510 de soporte ffsico del sistema de procesamiento. Las instrucciones y/o funciones pueden ser ejecutables/operables por uno o mas arffculos de fabricacion (por ejemplo, uno o mas dispositivos de calculo 502 y/o sistemas de procesamiento 504) para aplicar las tecnicas, modulos, y ejemplos aqrn descritos.
Como ademas esta ilustrado en la Figura 5, el sistema 500 de ejemplo permite unos entornos ubicuos para experiencia de un usuario sin problemas cuando ejecuta aplicaciones en un ordenador personal (PC), un dispositivo de television, y/o un dispositivo movil. Los servicios y aplicaciones se ejecutan sustancialmente igual en los tres entornos para una experiencia de usuario comun cuando se pasa de un dispositivo al siguiente mientras que se utiliza una aplicacion, jugando a un juego de video, viendo un video, y ast
En el sistema 500 de ejemplo, varios dispositivos estan interconectados a traves de un dispositivo de calculo central. El dispositivo de calculo central puede ser local para los varios dispositivos o puede estar situado lejos de los varios dispositivos. En una o mas realizaciones el dispositivo de calculo central puede ser una nube de uno o mas ordenadores servidores que estan conectados a los varios dispositivos a traves de una red, la internet, u otro enlace de comunicacion de datos.
En una o mas realizaciones esta arquitectura de interconexion permite que una funcionalidad sea entregada a traves de varios dispositivos para proporcionar una experiencia comun y sin problemas a un usuario de los varios dispositivos. Cada uno de los varios dispositivos puede tener diferentes exigencias y capacidades ffsicas, y el dispositivo de calculo central usa una plataforma para permitir la entrega de una experiencia al dispositivo que esta adaptado al dispositivo y ademas comun a todos los dispositivos. En una o mas realizaciones se crea una clase de dispositivos objetivo y las experiencias se adaptan a la clase generica de dispositivos. Una clase de dispositivos puede ser definida por caractensticas ffsicas, tipos de uso, u otras caractensticas comunes de los dispositivos. En diversas aplicaciones el dispositivo de calculo 502 puede adoptar una variedad de diferentes configuraciones, tal como para el uso del ordenador 516, el dispositivo movil 518, y la television 520. Cada una de estas configuraciones incluye unos dispositivos que pueden tener unas estructuras y capacidades generalmente diferentes, y asf el dispositivo de calculo 502 puede ser configurado de acuerdo con una o mas de las diferentes clases de dispositivos. Por ejemplo, el dispositivo de calculo 502 puede ser aplicado como la clase de un ordenador 516 de un dispositivo que incluye un ordenador personal, un ordenador multipantalla, un ordenador portatil, un libro de notas, y asf sucesivamente.
El dispositivo de calculo 502 puede tambien ser aplicado como la clase de dispositivo movil 518 que incluye dispositivos moviles, tales como un telefono movil, un reproductor de musica portatil, un dispositivo de juegos portatil, un ordenador de tableta, un ordenador multipantalla, y asf sucesivamente. El dispositivo de calculo 502 puede tambien ser aplicado como la clase de dispositivo de television 520 que incluye unos dispositivos que tienen o estan conectados a generalmente pantallas mayores en ambientes de vision informales. Estos dispositivos incluyen televisiones, cajas encima de objetos, consolas de juegos, y asf sucesivamente.
Las tecnicas aqrn descritas pueden ser soportadas por estas diversas configuraciones del dispositivo de calculo 502 y no estan limitadas por los ejemplos espedficos de las tecnicas aqrn descritas. Esta funcionalidad puede tambien ser aplicada toda o en parte mediante el uso de un sistema distribuido tal como una “nube” 522 por medio de una plataforma 524 como se describe mas adelante.
La nube 522 incluye y/o es representativa de una plataforma 524 para recursos 526. La plataforma 524 abstrae la funcionalidad subyacente del soporte ffsico (por ejemplo, servidores) y recursos del soporte logico de la nube 522. Los recursos 526 pueden incluir aplicaciones y/o datos que pueden ser utilizados mientras el procesamiento informatico es ejecutado con servidores que estan alejados del dispositivo de calculo 502. Los recursos 526 pueden tambien incluir servicios proporcionados en internet y/o a traves de una red de suscriptores tal como una red celular o Wi-Fi.
La plataforma 524 puede abstraer recursos y funciones para conectar el dispositivo de calculo 502 con otros dispositivos de calculo. La plataforma 524 puede tambien servir para abstraer la escalada de recursos para proporcionar un correspondiente nivel de escala a la demanda encontrada de recursos 526 que son aplicados por medio de la plataforma 524. En consecuencia, en una realizacion del dispositivo interconectado la aplicacion de la funcionalidad aqrn descrita puede ser distribuida en todo el sistema 500. Por ejemplo, la funcionalidad puede ser aplicada en parte en el dispositivo de calculo 502 asf como por medio de la plataforma 524 que abstrae la funcionalidad de la nube 522.
En estas discusiones se han descrito diversas realizaciones diferentes. Hay que apreciar y entender que cada realizacion aqrn descrita puede ser usada por sf misma o en conexion con una o mas de otras realizaciones aqrn descritas. Aspectos adicionales de las tecnicas aqrn discutidas se refieren a una o mas de las siguientes realizaciones.
Aunque la materia objeto ha sido descrita en un lenguaje espedfico de las caractensticas estructurales y/o acciones metodologicas, se ha de entender que la materia objeto definida en las reivindicaciones anejas no esta necesariamente limitada a las caractensticas o acciones espedficas antes descritas. Mas bien, las caractensticas y acciones espedficas antes descritas estan descritas como ejemplos de formas de aplicacion de las reivindicaciones.

Claims (15)

REIVINDICACIONES
1. Un metodo (300) de reducir una cantidad de compromiso de memoria para un programa en un dispositivo de calculo (502), comprendiendo el metodo:
determinar (304) que el programa esta en un estado a partir del cual el programa puede ser terminado, habiendo sido comprometida al programa una cantidad de memoria, siendo la cantidad de memoria un compromiso de memoria que garantiza la disponibilidad de una cantidad de memoria asignada al programa, habiendo sido usado por el programa un subconjunto de la cantidad de memoria comprometida al programa, e incluyendo la cantidad de memoria comprometida al programa varias paginas de memoria;
comprimir (308) el contenido de las paginas de memoria en el subconjunto de memoria usado por el programa, en donde la compresion comprende comprimir, por un controlador de la memoria del dispositivo de calculo (502), uno o mas del subconjunto las paginas de memoria mientras que el programa se esta ejecutando y antes de que el programa sea pasado al estado a partir del cual el programa puede ser terminado;
determinar (310) una cantidad del compromiso de memoria para el programa que puede ser liberada;
liberar (312), despues de que el subconjunto de memoria usado por el programa ha sido comprimido, la cantidad determinada del compromiso de memoria para el programa, efectiva para reducir la cantidad de memoria garantizada para estar disponible al programa en una cantidad menor de la que es normalmente asignada al programa; y
mantener un registro del compromiso de memoria liberado.
2. El metodo (300) citado en la reivindicacion 1, el estado a partir del cual el programa puede ser terminado comprendiendo un estado terminable en el que un estado de procesamiento del programa ha sido guardado y al cual el programa puede ser posteriormente recuperado.
3. El metodo (300) citado en la reivindicacion 1, el estado a partir del cual el programa puede ser terminado comprendiendo un estado activo.
4. El metodo (300) citado en cualquiera de las reivindicaciones 1 a 3, la compresion del contenido de las paginas de memoria comprendiendo tambien la compresion, por un controlador de la memoria del dispositivo de calculo (502) en respuesta a determinar que el programa ha sido pasado al estado a partir del cual el programa puede ser terminado, de una o mas del subconjunto de las paginas de memoria.
5. El metodo (300) citado en cualquiera de las reivindicaciones 1 a 4, el subconjunto de memoria usada por el programa comprendiendo paginas de memoria accedidas por o instanciadas por el programa.
6. El metodo (300) citado en cualquiera de las reivindicaciones 1 a 5, el subconjunto de memoria usada por el programa comprendiendo menos que toda la memoria comprometida al programa.
7. El metodo (300) citado en cualquiera de las reivindicaciones 1 a 6, la cantidad del compromiso de memoria para el programa que puede ser liberada comprendiendo toda la memoria comprometida al programa.
8. El metodo (300) citado en cualquiera de las reivindicaciones 1 a 6, la cantidad del compromiso de memoria para el programa que puede ser liberada comprendiendo una cantidad igual a toda la memoria comprometida para el programa menos una cantidad de memoria usada en la cual el contenido comprimido es almacenado.
9. El metodo (300) citado en cualquiera de las reivindicaciones 1 a 8 comprende ademas, despues de liberar el compromiso de memoria por la cantidad de memoria que puede ser liberada:
determinar que una o mas paginas de memoria del programa deben ser accedidas;
intentar obtener de nuevo el compromiso de memoria para al menos una o mas paginas de memoria del programa usando el registro;
permitir, en respuesta al intento de obtener de nuevo el compromiso de memoria que tiene exito, el acceso a una o mas paginas de memoria; y
terminar y lanzar de nuevo el programa en respuesta al intento de obtener de nuevo el compromiso de memoria que no tiene exito.
10. Un dispositivo de calculo (502) que incluye un sistema (514) de gestion de la memoria configurado para conservar el compromiso de memoria en el dispositivo de calculo (502), comprendiendo el sistema de gestion de la memoria:
un modulo de preparacion de la terminacion del programa configurado para:
determinar (304) que un programa esta en un estado a partir del cual el programa puede ser terminado, habiendo sido comprometida al programa una cantidad de memoria, siendo la cantidad de memoria un compromiso de memoria que garantiza la disponibilidad de una cantidad de memoria asignada al programa, habiendo sido usado por el programa un subconjunto de la cantidad de memoria comprometida al programa, e incluyendo la cantidad de memoria comprometida al programa varias paginas de memoria;
tener (308) el contenido de las paginas de memoria en el subconjunto de memoria usado por el programa comprimido, y para tener una o mas del subconjunto de las paginas de memoria comprimida mientras que el programa esta ejecutandose y antes de que el programa sea pasado al estado a partir del cual el programa puede ser terminado;
determinar (310) una cantidad del compromiso de memoria para el programa que puede ser liberado; liberar, despues de que el subconjunto de memoria usado por el programa haya sido comprimido, la cantidad de compromiso de memoria determinada para el programa, efectiva para reducir la cantidad de memoria usada por el programa; y
mantener un registro del compromiso de memoria liberada.
11. El dispositivo de calculo (502) citado en la reivindicacion 10, que ademas comprende un modulo de acceso al programa configurado para, despues de la liberacion de la carga de compromiso para la cantidad de memoria que puede ser liberada:
determinar que una o mas paginas de memoria del programa van a ser accedidas;
intentar obtener de nuevo el compromiso de memoria para al menos la una o mas paginas de memoria del programa, usando el registro;
permitir, en respuesta al intento de obtener de nuevo el compromiso de memoria con exito, la una o mas paginas de memoria que pueden ser accedidas, y;
terminar y lanzar de nuevo el programa en respuesta al intento de obtener de nuevo el compromiso de memoria sin exito.
12. El dispositivo de calculo (502) citado en la reivindicacion 11, incluyendo el sistema de gestion de la memoria ademas un asignador de la memoria configurado para recibir del programa una indicacion de que un compromiso de la cantidad de memoria previamente asignada puede ser liberado si se desea por el asignador de la memoria, y liberar la cantidad de compromiso de memoria previamente asignada y asignar el compromiso de la cantidad de memoria previamente asignada a otro programa del dispositivo de calculo (502).
13. El dispositivo de calculo (502) citado en la reivindicacion 11 o la reivindicacion 12, estando el modulo de preparacion de la terminacion del programa configurado ademas para tener comprimido el contenido de las paginas de memoria, por un controlador de la memoria del sistema de gestion de la memoria, tambien en respuesta a la determinacion de que el programa ha sido pasado al estado a partir del cual el programa puede ser terminado.
14. El dispositivo de calculo (502) citado en cualquiera de las reivindicaciones 11 a 13, en donde para intentar obtener de nuevo el compromiso de memoria para al menos una o mas paginas de memoria se debe intentar obtener de nuevo el compromiso de memoria para cada una de una o mas paginas en una base por pagina a medida que las solicitudes de acceso son recibidas.
15. El dispositivo de calculo (502) citado en cualquiera de las reivindicaciones 11 a 14, en donde para determinar que una o mas paginas de memoria del programa deben ser accedidas es determinar que una o mas paginas de memoria deben ser accedidas adjuntando el codigo a un espacio de direcciones del programa.
ES16708857T 2015-03-02 2016-02-19 Uso de compresión de memoria para reducir la carga de compromiso de memoria Active ES2711561T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/635,302 US9632924B2 (en) 2015-03-02 2015-03-02 Using memory compression to reduce memory commit charge
PCT/US2016/018559 WO2016140808A1 (en) 2015-03-02 2016-02-19 Using memory compression to reduce memory commit charge

Publications (1)

Publication Number Publication Date
ES2711561T3 true ES2711561T3 (es) 2019-05-06

Family

ID=55487135

Family Applications (1)

Application Number Title Priority Date Filing Date
ES16708857T Active ES2711561T3 (es) 2015-03-02 2016-02-19 Uso de compresión de memoria para reducir la carga de compromiso de memoria

Country Status (5)

Country Link
US (1) US9632924B2 (es)
EP (1) EP3265918B1 (es)
CN (2) CN107408073B (es)
ES (1) ES2711561T3 (es)
WO (1) WO2016140808A1 (es)

Families Citing this family (5)

* 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
US10037270B2 (en) 2015-04-14 2018-07-31 Microsoft Technology Licensing, Llc Reducing memory commit charge when compressing memory
US11150929B2 (en) * 2018-05-29 2021-10-19 Red Hat, Inc. Enhanced memory management for virtual machines
US10977172B2 (en) * 2018-06-03 2021-04-13 Apple Inc. Memory page reclamation in a user idle mode

Family Cites Families (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3379081D1 (en) 1982-06-21 1989-03-02 Ibm Method and apparatus for managing a buffer pool referenced by batch and interactive process
EP0346039A2 (en) 1988-06-06 1989-12-13 Demax Software, Inc Dynamic load balancing for multi-user computers
CA1329432C (en) 1988-11-02 1994-05-10 William Davy Method of memory and cpu time allocation for a multi-user computer system
US4965717A (en) 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
US5125086A (en) 1989-06-29 1992-06-23 Digital Equipment Corporation Virtual memory paging apparatus with variable size in-page clusters
US5101485B1 (en) 1989-06-29 1996-12-10 Frank L Perazzoli Jr Virtual memory page table paging apparatus and method
US5394537A (en) 1989-12-13 1995-02-28 Texas Instruments Incorporated Adaptive page placement memory management system
US5247687A (en) 1990-08-31 1993-09-21 International Business Machines Corp. Method and apparatus for determining and using program paging characteristics to optimize system productive cpu time
CA2285096C (en) 1991-11-12 2000-05-09 Ibm Canada Limited-Ibm Canada Limitee Logical mapping of data objects using data spaces
US5826057A (en) 1992-01-16 1998-10-20 Kabushiki Kaisha Toshiba Method for managing virtual address space at improved space utilization efficiency
US5628023A (en) 1993-04-19 1997-05-06 International Business Machines Corporation Virtual storage computer system having methods and apparatus for providing token-controlled access to protected pages of memory via a token-accessible view
US5696926A (en) 1993-07-30 1997-12-09 Apple Computer, Inc. Method and apparatus for transparently compressing data in a primary storage device
WO1995018997A2 (en) 1993-12-30 1995-07-13 Connectix Corporation Virtual memory management system and method using data compression
US5802599A (en) 1994-02-08 1998-09-01 International Business Machines Corporation System and method for allocating storage in a fragmented storage space
US5555399A (en) 1994-07-07 1996-09-10 International Business Machines Corporation Dynamic idle list size processing in a virtual memory management operating system
JP2831602B2 (ja) 1995-01-13 1998-12-02 富士通株式会社 圧縮データ管理装置及び圧縮データ管理方法
US5544349A (en) 1995-01-23 1996-08-06 International Business Machines Corporation Method and system for improving the performance of memory in constrained virtual memory environments by reducing paging activity
US5758174A (en) 1995-06-07 1998-05-26 International Business Machines Corporation Computer system having a plurality of stored system capability states from which to resume
US6298422B1 (en) 1996-06-17 2001-10-02 Network Associates, Inc. Method for reducing the memory requirements for an application program executing in a multi-tasking environment
US5966735A (en) 1996-11-22 1999-10-12 Digital Equipment Corporation Array index chaining for tree structure save and restore in a process swapping system
US6681239B1 (en) 1996-12-23 2004-01-20 International Business Machines Corporation Computer system having shared address space among multiple virtual address spaces
US6128713A (en) 1997-09-24 2000-10-03 Microsoft Corporation Application programming interface enabling application programs to control allocation of physical memory in a virtual memory system
US7024512B1 (en) * 1998-02-10 2006-04-04 International Business Machines Corporation Compression store free-space management
US6330572B1 (en) 1998-07-15 2001-12-11 Imation Corp. Hierarchical data storage management
JP3444346B2 (ja) 1999-01-04 2003-09-08 日本電気株式会社 仮想メモリ管理方式
US6496912B1 (en) 1999-03-25 2002-12-17 Microsoft Corporation System, method, and software for memory management with intelligent trimming of pages of working sets
US6496909B1 (en) 1999-04-06 2002-12-17 Silicon Graphics, Inc. Method for managing concurrent access to virtual memory data structures
US6349372B1 (en) 1999-05-19 2002-02-19 International Business Machines Corporation Virtual uncompressed cache for compressed main memory
US6442664B1 (en) 1999-06-01 2002-08-27 International Business Machines Corporation Computer memory address translation system
US6564305B1 (en) 2000-09-20 2003-05-13 Hewlett-Packard Development Company Lp Compressing memory management in a device
US7047382B2 (en) 2000-11-29 2006-05-16 Quickshift, Inc. System and method for managing compression and decompression and decompression of system memory in a computer system
US6877081B2 (en) 2001-02-13 2005-04-05 International Business Machines Corporation System and method for managing memory compression transparent to an operating system
US6516397B2 (en) 2001-04-09 2003-02-04 Hewlett-Packard Company Virtual memory system utilizing data compression implemented through a device
US7107299B2 (en) 2001-08-14 2006-09-12 Hewlett-Packard Development Company, L.P. Method and apparatus for managing large numbers of objects having the same property
US6775751B2 (en) 2002-08-06 2004-08-10 International Business Machines Corporation System and method for using a compressed main memory based on degree of compressibility
US6968424B1 (en) 2002-08-07 2005-11-22 Nvidia Corporation Method and system for transparent compressed memory paging in a computer system
US6910106B2 (en) 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US6956507B2 (en) 2002-12-12 2005-10-18 International Business Machines Corporation Method and apparatus for morphing memory compressed machines
US20050132161A1 (en) 2003-12-15 2005-06-16 Nokia Corporation Creation of virtual memory space in a memory
US7296139B1 (en) 2004-01-30 2007-11-13 Nvidia Corporation In-memory table structure for virtual address translation system with translation units of variable range size
TWI267024B (en) 2004-06-18 2006-11-21 Winbond Electronics Corp Method and apparatus for connecting LPC bus and serial flash memory
US7587572B1 (en) 2004-08-31 2009-09-08 Sun Microsystems, Inc. Method and system for managing process memory configured in resizable uncompressed and compressed regions
US20060161912A1 (en) 2005-01-18 2006-07-20 Barrs John W Infrastructure for device driver to monitor and trigger versioning for resources
US7437529B2 (en) 2005-06-16 2008-10-14 International Business Machines Corporation Method and mechanism for efficiently creating large virtual memory pages in a multiple page size environment
WO2007005829A2 (en) 2005-07-01 2007-01-11 Nec Laboratories America, Inc. Operating system-based memory compression for embedded systems
US7984084B2 (en) 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
US7461242B2 (en) 2005-11-03 2008-12-02 Ati Technologies Ulc Method and apparatus for providing context switching of logic in an integrated circuit using test scan circuitry
US7475183B2 (en) 2005-12-12 2009-01-06 Microsoft Corporation Large page optimizations in a virtual machine environment
US20070156386A1 (en) 2005-12-30 2007-07-05 Guenthner Russell W Linearization of page based memory for increased performance in a software emulated central processing unit
US7484074B2 (en) 2006-01-18 2009-01-27 International Business Machines Corporation Method and system for automatically distributing real memory between virtual memory page sizes
US7702843B1 (en) 2006-04-27 2010-04-20 Vmware, Inc. Determining memory conditions in a virtual machine
US7624240B1 (en) 2006-10-17 2009-11-24 Vmware, Inc. Separate swap files corresponding to different virtual machines in a host computer system
US8015367B1 (en) 2007-02-16 2011-09-06 Vmware, Inc. Memory management methods in a computer system with shared memory mappings
US7895242B2 (en) 2007-10-31 2011-02-22 Microsoft Corporation Compressed storage management
US8631203B2 (en) * 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
US20090327621A1 (en) 2008-06-27 2009-12-31 Microsoft Corporation Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager
US8024546B2 (en) 2008-10-23 2011-09-20 Microsoft Corporation Opportunistic page largification
US8341380B2 (en) 2009-09-22 2012-12-25 Nvidia Corporation Efficient memory translator with variable size cache line coverage
US8239610B2 (en) 2009-10-29 2012-08-07 Red Hat, Inc. Asynchronous page faults for virtual machines
US20110153978A1 (en) 2009-12-21 2011-06-23 International Business Machines Corporation Predictive Page Allocation for Virtual Memory System
US8386740B2 (en) 2010-03-29 2013-02-26 International Business Machines Corporation Modeling memory compression
US9015441B2 (en) 2010-04-30 2015-04-21 Microsoft Technology Licensing, Llc Memory usage scanning
US8484405B2 (en) 2010-07-13 2013-07-09 Vmware, Inc. Memory compression policies
CN103329112B (zh) 2010-10-22 2015-12-16 意法爱立信有限公司 用于减少页面错误发生时压缩页面加载时间的方法和装置
US8495267B2 (en) 2010-11-24 2013-07-23 International Business Machines Corporation Managing shared computer memory using multiple interrupts
KR20120066198A (ko) 2010-12-14 2012-06-22 삼성전자주식회사 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법
US8370667B2 (en) * 2010-12-22 2013-02-05 Intel Corporation System context saving based on compression/decompression time
US8972696B2 (en) 2011-03-07 2015-03-03 Microsoft Technology Licensing, Llc Pagefile reservations
US8661221B2 (en) 2011-03-16 2014-02-25 International Business Machines Corporation Leasing fragmented storage between processes
US9286101B2 (en) 2011-07-28 2016-03-15 Red Hat, Inc. Free page hinting
JP5385347B2 (ja) 2011-08-02 2014-01-08 レノボ・シンガポール・プライベート・リミテッド メイン・メモリのフリー・メモリ量を拡大する方法およびコンピュータ
KR101221241B1 (ko) 2011-08-26 2013-01-11 린나이코리아 주식회사 실 팩킹 및 조리장치와 외부 설치구조물의 실 팩킹구조
US8832411B2 (en) 2011-12-14 2014-09-09 Microsoft Corporation Working set swapping using a sequentially ordered swap file
US9183015B2 (en) 2011-12-19 2015-11-10 Vmware, Inc. Hibernate mechanism for virtualized java virtual machines
US9053018B2 (en) 2012-06-29 2015-06-09 International Business Machines Corporation Compressed memory page selection based on a population count of a dataset
US9489293B2 (en) 2012-08-17 2016-11-08 Netapp, Inc. Techniques for opportunistic data storage
US9354916B2 (en) 2012-11-29 2016-05-31 Red Hat Israel, Ltd. Detection of guest disk cache
KR102011135B1 (ko) 2012-12-11 2019-08-14 삼성전자주식회사 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법
US10565099B2 (en) 2012-12-28 2020-02-18 Apple Inc. Methods and apparatus for compressed and compacted virtual memory
US9852055B2 (en) * 2013-02-25 2017-12-26 International Business Machines Corporation Multi-level memory compression
US9396030B2 (en) 2013-03-13 2016-07-19 Samsung Electronics Co., Ltd. Quota-based adaptive resource balancing in a scalable heap allocator for multithreaded applications
US10102148B2 (en) 2013-06-13 2018-10-16 Microsoft Technology Licensing, Llc Page-based compressed storage management
KR20150043102A (ko) 2013-10-14 2015-04-22 한국전자통신연구원 하이브리드 메모리의 데이터 관리 장치 및 방법
US9400754B2 (en) 2013-12-19 2016-07-26 International Business Machines Corporation Asynchronous swap mechanism and page eviction from memory
US20150242432A1 (en) 2014-02-21 2015-08-27 Microsoft Corporation Modified Memory Compression
US9684625B2 (en) 2014-03-21 2017-06-20 Microsoft Technology Licensing, Llc Asynchronously prefetching sharable memory pages
US10037270B2 (en) 2015-04-14 2018-07-31 Microsoft Technology Licensing, Llc Reducing memory commit charge when compressing memory

Also Published As

Publication number Publication date
CN112231238A (zh) 2021-01-15
CN107408073A (zh) 2017-11-28
US20160259720A1 (en) 2016-09-08
WO2016140808A1 (en) 2016-09-09
EP3265918A1 (en) 2018-01-10
EP3265918B1 (en) 2018-11-14
US9632924B2 (en) 2017-04-25
CN107408073B (zh) 2020-11-10
CN112231238B (zh) 2024-04-16

Similar Documents

Publication Publication Date Title
ES2711561T3 (es) Uso de compresión de memoria para reducir la carga de compromiso de memoria
ES2657800T3 (es) Compresión de memoria modificada
US10310893B2 (en) Managing container pause and resume
ES2886760T3 (es) Redirección de API para sistemas operativos de capacidad limitada
KR102069940B1 (ko) 페이지 기반 압축 저장 관리
KR102507743B1 (ko) 메모리 관리 방법 및 그 전자 장치
ES2439804B1 (es) Procedimiento, sistema y pieza de código ejecutable para virtualizar un recurso de hardware asociado a un sistema informático
EP3283965B1 (en) Reducing memory commit charge when compressing memory
US10437601B2 (en) Centralized memory management for multiple device streams
US20210200668A1 (en) Reserved memory in memory management system
US10467052B2 (en) Cluster topology aware container scheduling for efficient data transfer
WO2022121866A1 (zh) 一种基于加速卡的服务运行方法、装置、电子设备及计算机可读存储介质
US9514072B1 (en) Management of allocation for alias devices
US11599376B1 (en) Deep learning architecture for edge computing system
US8751724B2 (en) Dynamic memory reconfiguration to delay performance overhead
CN114691300A (zh) 一种虚拟机实例的热迁移方法
US10664282B1 (en) Runtime augmentation of engine instructions
CN114254305A (zh) Android系统应用隔离方法及装置
WO2014161374A1 (zh) 对移动通信设备进行加速的方法及装置
US20210326150A1 (en) Integrated network boot operating system installation leveraging hyperconverged storage
US20190042797A1 (en) Security Hardware Access Management
US10877552B1 (en) Dynamic power reduction through data transfer request limiting
US20200301718A1 (en) Resetting a peripheral device