ES2371454T3 - Procedimiento y mecanismos para una gestión proactiva de la memoria. - Google Patents

Procedimiento y mecanismos para una gestión proactiva de la memoria. Download PDF

Info

Publication number
ES2371454T3
ES2371454T3 ES03022573T ES03022573T ES2371454T3 ES 2371454 T3 ES2371454 T3 ES 2371454T3 ES 03022573 T ES03022573 T ES 03022573T ES 03022573 T ES03022573 T ES 03022573T ES 2371454 T3 ES2371454 T3 ES 2371454T3
Authority
ES
Spain
Prior art keywords
pages
memory
page
data
information
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.)
Expired - Lifetime
Application number
ES03022573T
Other languages
English (en)
Inventor
Stuart Sechrest
Michael R. Fortin
Mehmet Iyigun
Cenk Ergan
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 Corp
Original Assignee
Microsoft Corp
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 Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of ES2371454T3 publication Critical patent/ES2371454T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)
  • Static Random-Access Memory (AREA)

Abstract

Un sistema en un entorno informático que comprende: un mecanismo (402) de seguimiento que hace seguimiento de la utilización de páginas de memoria y registra los datos de contexto, correspondiendo los datos de contexto a un estado del sistema (110) de ordenador en asociación con la utilización de una página, para una pluralidad de páginas; un mecanismo (426) de priorización que asocia una puntuación con cada página de la que se hace seguimiento en base a los datos de contexto proporcionados por dicho mecanismo (402) de seguimiento para esa página; y un reequilibrador (424) que determina qué paginas están en memoria (202) en base a la puntuación asociada con cada página de la que se hace seguimiento sustituyendo al menos algunas de las páginas en memoria que son de valor relativamente menor con al menos algunas páginas provenientes de un dispositivo secundario (204) de almacenamiento que son de valor relativamente mayor, en el que el valor de una página está determinado por su puntuación.

Description

Procedimientos y mecanismos para una gestión proactiva de la memoria
La presente invención reivindica prioridad con respecto a la solicitud de patente provisional estadounidense con nº de serie 60/416.115, presentada el 4 de octubre de 2002.
La invención versa en general acerca de la gestión de la memoria de ordenador.
Los sistemas contemporáneos de ordenadores están equipados con cantidades significativas de memoria de acceso aleatorio, o RAM, en la actualidad en el orden de 256 megabytes a un par de gigabytes. Sin embargo, los mecanismos y los procedimientos actuales de gestión de la memoria fueron diseñados hace muchos años, cuando la RAM era un recurso informático relativamente escaso. Para proporcionar grandes cantidades de memoria virtual a los procesos de los programas, tales mecanismos de gestión de la memoria se valían de técnicas como la paginación bajo petición, esencialmente transfiriendo páginas de datos de la RAM a una unidad de disco cuando otro proceso requería cierta cantidad de RAM y, si esos datos transferidos eran requeridos de nuevo alguna vez por su proceso correspondiente, volviendo a leer los datos del disco introduciéndolos en la RAM.
Con tal gestión convencional de la memoria, las páginas necesarias están a menudo ausentes de la memoria, aunque la cantidad total de código y datos a la que se hace referencia en los patrones típicos de utilización es muy constante en el tiempo y es pequeña con respecto a los tamaños de las memorias actuales. Esto es fundamentalmente resultado de dos factores: concretamente, a que el sistema experimente transiciones que puedan obligar a que las páginas necesarias salgan de la memoria y/o a cambiar rápidamente el conjunto de páginas que se necesitan, y la erosión, en la que las páginas que no están en uso activo resulten sobrescritas con otros datos.
Ejemplos de tales transiciones incluyen el arranque partiendo de un estado de alimentación desconectada, el cambio de un usuario a otro, la reanudación partiendo de un modo en espera o en hibernación, el uso de una aplicación que consuma mucha memoria (por ejemplo, jugar un juego) y volver luego a un uso típico del sistema, y volver al ordenador después de una demora prolongada. Ni que decir tiene, además de una operación normal rápida, los clientes desean muchísimo un arranque rápido del sistema y de los programas tras tales transiciones. Sin embargo, con la actual gestión de la memoria, ello no es posible en la actualidad. Por ejemplo, las pruebas han demostrado que tras una reanudación después de una hibernación, el lanzamiento de una aplicación puede llevar entre nueve y once segundos, aunque en ese momento haya grandes cantidades de memoria sin usar. Esto se debe a que la mayor parte del tiempo de lanzamiento se consume en transferencias de disco, con la CPU bloqueada, esperando que se lean del disco el código y las páginas de datos necesarios, lo que, como consecuencia de la paginación bajo petición, se lleva a cabo en esencia página a página. En resumidas cuentas, después de tales transiciones, a menudo, el conjunto de páginas de mayor utilidad no está en la memoria, lo que lleva a la paginación bajo petición, lo que proporciona una experiencia deficiente de usuario debido a los tiempos lentos de transferencia de entrada/salida (E/S).
Aunque algunas transiciones implican el desalojo deliberado de páginas de la memoria y otras dan como resultado una demanda repentina de memoria, otras distintas dan como resultado páginas que quedan inactivas y que se intercambian al disco. Más en particular, las páginas que están en conjuntos de trabajo pueden ser eliminadas y colocadas en una memoria asociada de páginas que no están en uso, denominada en el presente documento conjunto de páginas en espera (por ejemplo, una lista en espera en un sistema basado en Windows®), junto con las páginas de los ficheros que están cerrados. Para reducir el número de lecturas y escrituras a disco, la gestión de memoria hace seguimiento de qué páginas de la memoria del conjunto de páginas en espera tuvieron el menor número de acceso recientemente y, cuando se necesita memoria, selecciona esas páginas para transferirlas a disco, esencialmente un tipo de cola en la que la primera en entrar es la primera en salir (FIFO).
Aunque esta técnica funciona hasta cierto punto en la reducción de transferencias al disco, dado que da como resultado que las páginas usadas más recientemente por los procesos sean las que permanecen en memoria, las aplicaciones modernas tienen requisitos grandes de código y datos. En consecuencia, a corto plazo, generalmente las páginas pueden ser recuperadas de este conjunto de páginas en espera; sin embargo, a largo plazo, con la gestión convencional de la memoria, la simple gestión de colas FIFO del conjunto de páginas en espera da como resultado una erosión en la que posibles páginas valiosas (pero no usadas recientemente) son sobrescritas con páginas menos valiosas (pero usadas más recientemente). En consecuencia, es necesario un número significativo de transferencias de E/S al disco y desde el mismo. Incluso en sistemas potentes, estas transferencias de E/S actúan como un cuello de botella por el que el sistema infrautiliza las grandes cantidades de memoria disponible, dejando inactiva la CPU durante lapsos prolongados de tiempo.
En suma, los programas contemporáneos requieren grandes cantidades de memoria de acceso aleatorio y capacidades de proceso rápido, ofrecidas por los dispositivos informáticos contemporáneos. Sin embargo, la tecnología actual de gestión de la memoria no empareja adecuadamente estos recursos, porque la actual gestión de la memoria fue desarrollada en una época en que la memoria era escasa y, así, fue diseñada con la visión general de que era inevitable una utilización sustancial del disco que, no obstante, no resultaba tan gravosa, porque las aplicaciones eran pequeñas y la multitarea era infrecuente. Por ello, la gestión convencional de la memoria no
55 E03022573 10-11-2011
intenta limitar el uso del disco más allá de mantener en memoria las páginas a las que se ha accedido más recientemente. En la informática contemporánea, esto da como resultado una cantidad significativa de uso del disco, proporcionando con ello un cuello de botella que perjudica tanto el rendimiento real como el percibido.
El documento US 2002/087797 A1 se ocupa de la introducción en memoria asociada de ficheros que se originan en un servidor remoto. El servidor de la memoria asociada ejecuta una lista de un historial de peticiones y calcula valores de popularidad asociados con cada uno de una pluralidad de ficheros introducidos y no introducidos en la memoria asociada usando un módulo de cálculo de la popularidad. Un módulo de análisis de lo introducido en la memoria asociada compara los valores de popularidad del contenido introducido en la memoria asociada con los valores de popularidad del contenido no introducido en la memoria asociada y determina qué ficheros serán sustituidos por ficheros no introducidos en la memoria asociada.
El documento US-B1-6 378 043 aborda la generación de una lista ordenada de memorias intermedias en base a diversas características de acceso, como la frecuencia de acceso, la reciencia del acceso y la tenencia. Además, se disminuye la considerable carga general que se requiere para reordenar la lista usando un intervalo de acceso libre al comienzo de la lista. Si una memoria intermedia está dentro de dicho intervalo de acceso libre, se actualiza su lista de historial de accesos, pero el orden de las memorias intermedias en el intervalo de acceso libre queda inalterado. Cuando se añaden nuevos datos a una memoria intermedia, esta memoria intermedia es puesta entonces en un punto de inserción de la lista de memorias intermedias. Cuando se accede la próxima vez a la memoria intermedia insertada, se pone entonces al comienzo de la lista. Cuando otras memorias intermedias se mueven después al comienzo de la lista, dicha memoria intermedia es empujada hacia abajo en la lista hasta que alcanza del final del intervalo de acceso libre, lugar en el que se usa la lista del historial de accesos para calcular un valor de beneficio que dicta el lugar de la memoria intermedia en la lista.
El objeto de la presente invención es minimizar el número de errores de paginación. Este objeto se resuelve por medio de la invención según se declara en las reivindicaciones independientes.
Puede derivarse realizaciones preferentes de dicha invención a partir de las reivindicaciones dependientes.
En breve, la presente invención va dirigida hacia una arquitectura mejorada de gestión de la memoria que comprende sistemas, procedimientos y mecanismos que proporcionan un sistema de gestión de la memoria proactivo, resiliente y de calibrado automático. El sistema de gestión de la memoria funciona proporcionando mejoras reales y percibidas de rendimiento en la gestión de la memoria, cargando y manteniendo en la memoria datos que es probable que se necesiten, antes de que los datos se necesiten realmente. Las páginas de datos pueden ser priorizadas con un valor o una puntuación según diversos factores, incluyendo su utilidad, su frecuencia de utilización, el momento de su última utilización, la facilidad de la transferencia de datos y otra información basada en el contexto. Los mecanismos funcionan realizando búsquedas previas y/o manteniendo los datos más valiosos en la memoria. Si es preciso retirar datos por intercambio o sobrescribirlos, los datos pueden ser recuperados automáticamente de manera resiliente no por una demanda real, sino, más bien, debido a la demanda esperada.
Al hacer que la memoria esté llena de datos apropiados antes de que esas páginas sean necesarias, el sistema de gestión de la memoria reduce sustancialmente o elimina las operaciones de transferencia a disco bajo demanda y, así, reduce o elimina los cuellos de botella de E/S en muchos escenarios significativos para los consumidores. Con este fin, las implementaciones de la presente invención comprenden diversos mecanismos dirigidos hacia la monitorización histórica de la utilización de la memoria, el análisis de la utilización de la memoria, la actualización de la memoria con páginas muy valoradas (por ejemplo, muy utilizadas), la eficiencia de la búsqueda previa de E/S y una gestión intensa del disco.
Para obtener la información necesaria para asignar un valor a una página, se hacia seguimiento de un conjunto enriquecido de información sobre cada página mediante técnicas de seguimiento y de registro, preferentemente durante un periodo de tiempo relativamente prolongado. Estos datos medidos son procesados, convirtiéndolos en información gestionable, que es mantenida y a la que se accede como parte de un proceso de toma de decisiones que equilibra el contenido de la memoria en respuesta a eventos relacionados con la memoria y/o en base a una temporización, para que los datos más valiosos se mantengan en memoria y/o se busquen de antemano y sean introducidos en la misma con preferencia a los datos menos valiosos.
El valor de prioridad permite que se priorice un conjunto de páginas en espera (por ejemplo, una lista en espera en un sistema basado en Windows®) de páginas de memoria, de modo que páginas del conjunto en espera puedan ser de prioridad mayor en términos de valor con respecto a otras páginas, con independencia de cuándo se hizo referencia a ellas por última vez, y, por ello, mantenerlas en memoria con preferencia a otras páginas. La búsqueda previa proactiva y resiliente carga páginas valiosas de disco al conjunto de páginas en espera en un orden determinado por la prioridad. Preferentemente, la carga se lleva a cabo en una transferencia de E/S de baja prioridad en segundo plano para evitar interferir en la operación normal del usuario, aunque también puede llevarse a cabo en una operación en primer plano.
Como resultado de la presente invención, la utilización de la CPU aumenta significativamente sin interferir en la utilización normal del sistema. Para muchos usuarios de ordenador, el conjunto completo de páginas de memoria 3
usadas realmente es lo bastante pequeño como para mantenerlo en la memoria, lo que da como resultado que el número de errores de demanda (para leer de disco los datos necesario) se reduzca a cero o casi a cero.
En una implementación, un mecanismo de seguimiento observa la actividad relacionada con la memoria y un registrador registra los resultados de las observaciones. Un integrador combina en una base de datos de información
5 de páginas los resultados actuales registrados con registros previos. Un servicio de extracción accede a los datos de la base de datos de información de páginas para desarrollar a partir de los mismos planes de escenario, y los planes de escenario son analizados para priorizar las páginas formando una lista. A continuación, la lista es ordenada según el valor calculado para cada página, que se basó en observaciones de la utilización de la memoria y, posiblemente, en otros factores.
10 Un reequilibrador, activado por un evento (por ejemplo, generado por el sistema o de forma temporizada), actúa con un planificador de E/S añadiendo las páginas a un conjunto priorizado de páginas en espera, en un orden determinado por el valor calculado de cada página. El conjunto priorizado de páginas en espera incluye varios subconjuntos correspondientes a los valores de cada página. Estos valores pueden cambiar con el tiempo y/o en base a la utilización real, y, por ello, las páginas pueden ser movidas de manera lógica entre subconjuntos. Cuando
15 se necesita memoria, ya sea bajo demanda o para una búsqueda previa en segundo plano, los datos de menor prioridad en el subconjunto son los primeros en salir por paginación. De esta manera, las páginas más valiosas, según determinan las observaciones y las mediciones de la utilización real, así como el contexto y otra información, son puestas automáticamente de una manera no interferente y tienden a permanecer ahí con preferencia a otras páginas menos valiosas.
20 Otras ventajas se harán evidentes a partir de la siguiente descripción detallada cuando se toma en conjunto con los dibujos, en los cuales:
Breve descripción de los dibujos
La FIGURA 1 es un diagrama de bloques que representa en general un sistema de ordenador en el que puede incorporarse la presente invención;
25 las FIGURAS 2 y 3 comprenden diagramas de bloques que representan una relación básica entre los componentes del sistema según un aspecto de la presente invención;
las FIGURAS 4A y 4B comprenden diagramas de bloques que representan una arquitectura general adecuada para llevar a cabo una gestión proactiva de la memoria según un aspecto de la presente invención;
30 la FIG. 5A es un diagrama de bloques que muestra una manera en la que un conjunto de páginas en espera puede mantener los datos de las páginas;
la FIG. 5B es un diagrama de bloques que representa una manera alternativa en la que un conjunto priorizado de páginas en espera puede mantener los datos de las páginas en subconjuntos priorizados según un aspecto de la presente invención; y
35 la FIG. 6 es un diagrama de bloques que representa un sistema con restricciones para restringir las actividades en segundo plano para limitar la interferencia con las aplicaciones de un usuario según un aspecto de la presente invención.
Descripción detallada
Entorno operativo ejemplar
40 La FIGURA 1 ilustra un ejemplo de un entorno 100 de un sistema informático adecuado en el que puede implementarse la invención. El entorno 100 del sistema informático es únicamente un ejemplo de un entorno informático adecuado y no se pretende sugerir ninguna limitación en cuanto al alcance de la utilización o la funcionalidad de la invención. Tampoco debiera interpretarse que el entorno informático 100 tenga ninguna dependencia ni requisito relativo un componente cualquiera ni a la combinación de componentes ilustrados en el
45 entorno operativo ejemplar 100.
La invención es operativa con otros entornos o configuraciones de sistemas de ordenador de propósito general o de propósito especial. Ejemplos bien conocidos de sistemas, entornos y/o configuraciones de ordenador que pueden ser adecuados para su uso con la invención incluyen, sin limitación: ordenadores personales, ordenadores servidores, dispositivos de mano o portátiles, dispositivos de tableta, sistemas multiprocesador, sistemas basados en
50 microprocesadores, convertidores de señal de televisión, dispositivos electrónicos de consumo programables, ordenadores personales de red, miniordenadores, ordenadores centrales, entornos de ordenadores distribuidos que incluyen cualquier de los sistemas o dispositivos anteriores, y similares.
60 E03022573 10-11-2011
La invención puede ser descrita en el contexto general de instrucciones ejecutables por ordenador, como módulos de programa ejecutados por un ordenador. En general, los módulos de programa incluyen rutinas, programas, objetos, componentes, estructuras de datos, etcétera, que pueden llevar a cabo tareas particulares o implementar tipos de datos abstractos particulares. La invención también puede ser puesta en práctica en entornos distribuidos de ordenadores en los que las tareas son llevadas a cabo por dispositivos remotos de proceso que están ligados por medio de una red de comunicaciones. En un entorno distribuido de ordenadores, los módulos de programa pueden estar situados en medios de almacenamiento de ordenadores locales y/o remotos, incluyendo dispositivos de almacenamiento de memoria.
Con referencia a la FIG. 1, un sistema ejemplar para implementar la invención incluye un dispositivo informático de propósito general en forma de ordenador 110. Los componentes del ordenador 110 pueden incluir, sin limitación, una unidad 120 de proceso, una memoria 130 del sistema y un bus 121 del sistema que acopla diversos componentes del sistema, incluyendo la memoria del sistema, a la unidad 120 de proceso. El bus 121 del sistema puede ser cualquiera de varios tipos de estructuras de bus, incluyendo un bus de memoria o un controlador de memoria, un bus periférico y un bus local que use cualquiera de una variedad de arquitecturas de bus. A título de ejemplo, y no de limitación, tales arquitecturas incluyen el bus de la Arquitectura Industrial Normalizada (ISA), el bus de Arquitectura de Microcanal (MCA), el bus ISA mejorado (EISA), el bus local de la Asociación de Normativa Electrónica sobre Vídeo (VESA) y el bus de Interconexión de Componentes Periféricos (PCI), también denominado bus de entresuelo.
Típicamente, el ordenador 110 incluye una variedad de medios legibles por ordenador. Los medios legibles por ordenador pueden ser cualesquiera medios disponibles a los que pueda acceder el ordenador 110 e incluyen tanto medios volátiles como no volátiles, y medios extraíbles y no extraíbles. A título de ejemplo, y no de limitación, los medios legibles por ordenador pueden comprender medios de almacenamiento de ordenador y medios de comunicaciones. Los medios de almacenamiento de ordenador incluyen medios volátiles y no volátiles, extraíbles y no extraíbles implementados en cualquier procedimiento o tecnología para el almacenamiento de información, tales como instrucciones legibles por ordenador, estructuras de datos, módulos de programa u otros datos. Los medios de almacenamiento de ordenador incluyen, sin limitación, memoria RAM, ROM EEPROM, flash u otra tecnología de memoria, CD-ROM, discos versátiles digitales (DVD) u otro almacenamiento en disco óptico, casetes magnéticas, cinta magnética, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, o cualquier otro medio que pueda usarse para almacenar la información deseada y a la que pueda acceder el ordenador 110. Típicamente, los medios de comunicaciones implementan instrucciones legibles por ordenador, estructuras de datos, módulos de programa u otros datos en una señal modulada de datos, como una onda portadora u otro mecanismo de transporte e incluye cualesquiera medios de distribución de la información. La expresión “señal modulada de datos” significa una señal una o más de cuyas características está establecida o cambiada de tal modo que se codifique la información en la señal. A título de ejemplo, y no de limitación, los medios de comunicaciones incluyen medios cableados, como una red cableada o una conexión directa cableada, y medios inalámbricos, como medios acústicos, de RF, infrarrojos y de otra naturaleza. También deberían incluirse dentro del ámbito de los medios legibles por ordenador las combinaciones de cualquiera de los anteriores.
La memoria 130 del sistema incluye medios de almacenamiento de ordenador en forma de memoria volátil y/o no volátil, como la memoria 131 de solo lectura (ROM) y memoria 132 de acceso aleatorio (RAM). Típicamente, en la ROM 131 se almacena un sistema básico 133 de entrada /salida (BIOS), que contiene las rutinas básicas que ayudan a transferir información entre los elementos dentro del ordenador 110, como durante el arranque. Típicamente, la RAM 132 contiene datos y/o módulos de programa que son inmediatamente accesibles por la unidad 120 de proceso y/o están siendo operados por ella en ese momento. A título de ejemplo, y no de limitación, la FIG. 1 ilustra el sistema operativo 134, los programas 135 de aplicación, otros módulos 136 de programa y datos 137 de programa.
El ordenador 110 también puede incluir otros medios de almacenamiento de ordenador extraíbles/no extraíbles, volátiles/no volátiles. A título de ejemplo únicamente, la FIG. 1 ilustra una unidad 141 de disco duro, que lee de medios magnéticos no extraíbles no volátiles o escribe en los mismos, una unidad 151 de disco magnético que lee del disco magnético 152 extraíble no volátil o escribe en el mismo, y una unidad 155 de disco óptico que lee del disco óptico 156 extraíble no volátil, tal como un CD ROM u otros medios ópticos, o escribe en el mismo. Otros medios de almacenamiento en ordenador extraíbles/no extraíbles, volátiles/no volátiles que pueden ser usados en el entorno operativo ejemplar incluyen, sin limitación, casetes de cinta magnética, tarjetas de memoria flash, discos versátiles digitales, cinta de vídeo digital, RAM de estado sólido, ROM de estado sólido y similares. Típicamente, la unidad 141 de disco duro está conectada al bus 121 del sistema por medio de una interfaz de memoria no extraíble, tal como la interfaz 140, y la unidad 151 de disco magnético y la unidad 155 de disco óptico están conectadas típicamente al bus 121 del sistema por medios de una interfaz de memoria extraíble, como la interfaz 150.
Las unidades y sus medios asociados de almacenamiento de ordenador, presentados más arriba e ilustrados en la FIG. 1, proporcionan almacenamiento de instrucciones legibles por ordenador, estructuras de datos, módulos de programa y otros datos para el ordenador 110. En la FIG. 1, por ejemplo, la unidad 141 de disco duro se ilustra almacenando el sistema operativo 144, programas 145 de aplicación, otros módulos 146 de programa y datos 147 de programa. Obsérvese que estos componentes pueden ser o bien los mismos o bien diferentes del sistema
55 E03022573 10-11-2011
operativo 134, los programas 135 de aplicación, otros módulos 136 de programa y los datos 137 de programa. En el presente documento se dan números diferentes al sistema operativo 144, a los programas 145 de aplicación, a otros módulo 146 y a los datos 147 de programa para ilustrar que, como mínimo, son copias diferentes. Un usuario puede introducir en el ordenador 110 órdenes e información por medio de dispositivos de entrada, como una tableta o un digitalizador electrónico 164, un micrófono 163, un teclado 162 y un dispositivo 161 de puntero, comúnmente denominado ratón, bola de mando o panel táctil. Otros dispositivos de entrada no mostrados en la FIG. 1 pueden incluir una palanca de control, un mando para juegos, una antena parabólica, un escáner o similares. A menudo, estos y otros dispositivos de entrada está conectados a la unidad 120 de proceso por medio de una interfaz 160 de entradas de usuario que está acoplada al bus del sistema, pero pueden estar conectados mediante otra interfaz y otras estructuras de bus, como un puerto paralelo, un puerto de juegos o un puerto serie universal (USB). Un monitor 191 u otro tipo de dispositivo de visualización también está conectado al bus 121 del sistema por medio de una interfaz, como una interfaz 190 de vídeo. El monitor 191 también puede estar integrado con un panel de pantalla táctil o similar. Obsérvese que el monitor y/o el panel de pantalla táctil pueden estar físicamente acoplados a un alojamiento en el que se incorpora el dispositivo informático 110, tal como un ordenador personal de tipo tableta. Además, los ordenadores, como el dispositivo informático 110, también pueden incluir otros dispositivos periféricos de salida, como los altavoces 195 y la impresora 196, que pueden estar conectados por medio de una interfaz 194 de periféricos de salida o similar.
El ordenador 110 puede operar en un entorno de red usando conexiones lógicas a uno o más ordenadores remotos, como un ordenador remoto 180. El ordenador remoto 180 puede ser un ordenador personal, un servidor, un dispositivo de encaminamiento, un PC de red, un dispositivo del mismo nivel u otro nodo común de red, y típicamente incluye muchos o la totalidad de los elementos descritos más arriba relativos al ordenador 110, aunque en la FIG. 1 solo se ha ilustrado un dispositivo 181 de almacenamiento de memoria. Las conexiones lógicas representadas en la FIG. 1 incluyen una red 171 de área local (LAN) y una red 173 de área amplia (WAN), pero también pueden incluir otras redes. Tales entornos de red son habituales en oficinas, redes de ordenadores de ámbito empresarial, intranets e Internet. Por ejemplo, en la presente invención, el sistema 110 de ordenador puede comprender una máquina de origen, desde las cuales se están migrando datos, y el ordenador remoto 180 puede comprender la máquina de destino. Sin embargo, obsérvese que no es preciso que las máquinas de origen y de destino estén conectadas por medio de una red ni por ningún otro medio, sino que, en vez de ello, se puede hacer que los datos migren a través de cualquier medio susceptible de que la plataforma de origen escriba en él y de ser leído por la plataforma o las plataformas de destino.
Cuando se usa en un entorno de red LAN, el ordenador 110 está conectado a la LAN 171 a través de una interfaz o un adaptador 170 de red. Cuando se usa en un entorno de red WAN, el ordenador 110, típicamente, incluye un módulo 172 u otro medio de establecimiento de comunicaciones por la WAN 173, como Internet. El módem 172, que puede ser interno o externo, puede estar conectado al bus 121 del sistema a través de la interfaz 160 de entradas del usuario o de otro mecanismo apropiado. En un entorno de red, los módulos de programa representados con respecto al ordenador 110 o a porciones del mismo pueden estar almacenados en el dispositivo remoto de almacenamiento de memoria. A título de ejemplo, y no de limitación, la FIG. 1 ilustra programas remotos 185 de aplicación que residen en el dispositivo 181 de memoria. Se apreciará que las conexiones de red mostradas son ejemplares y que pueden usarse otros medios de establecimiento de un enlace de comunicaciones entre ordenadores.
Gestión proactiva de la memoria
Un aspecto de la presente invención está dirigido, en parte, en general, a una arquitectura mejorada de la gestión de memoria que comprende sistemas, procedimientos y mecanismos que dan como resultado mejoras reales y percibidas del rendimiento en aspectos significativos de la interfaz de usuario, programas de aplicación y soporte lógico del sistema operativo. Con este fin, según se representa en la FIG. 2, la presente invención proporciona un sistema 200 proactivo, resiliente y de calibrado automático de gestión de memoria que monitoriza las actividades de un usuario relacionadas con la memoria y que funciona garantizando, al menos hasta una tasa relativamente alta de éxito, que los datos necesarios están presentes en la memoria 202 de acceso aleatorio (o, simplemente, la “memoria”, tal como se usa en el presente documento) antes de que se necesiten los datos, en vez de ser leídos e incorporados a la memoria 202 bajo demanda desde un disco 204 (u otro mecanismo secundario equivalente de almacenamiento, como una memoria flash, una fuente de datos en red, una unidad de cinta y/o virtualmente cualquier tipo de almacenamiento de datos). En otras palabras, la gestión proactiva y resiliente de la memoria aporta datos potencialmente útiles a la memoria e intenta mantener esos datos en la memoria. Si los datos útiles necesitan salir por intercambio o ser sobrescritos, los datos pueden ser recuperados automáticamente de manera resiliente, no por una demanda real, sino, más bien, debido a la demanda esperada.
Con este fin, la presente invención aprovecha las grandes cantidades de memoria actualmente disponibles para mantener en memoria los conjuntos de trabajo de los procesos potencialmente activos y guardar un mantenimiento de registros, estructuras de datos y algoritmos que el sistema usa para lograr una gestión proactiva y resiliente de la memoria. Se espera que tal mantenimiento de registros, tales estructuras de datos y otros algoritmos se harán cada vez más óptimos con el tiempo; sin embargo, las implementaciones actuales han dado como resultado reducciones significativas en las transferencias de E/S bajo demanda.
55 E03022573 10-11-2011
Como puede apreciarse con facilidad, al hacer que la memoria 202 esté llena con los datos apropiados (por ejemplo, dispuestos en páginas) antes de que esas páginas se necesiten, el sistema 200 de gestión de memoria de la presente invención reduce sustancialmente o elimina las operaciones de transferencia a disco bajo demanda y, así, reduce o elimina los cuellos de botella de E/S en muchos escenarios significativos para los consumidores. Obsérvese que, tal como se usa en el presente documento, el término “página” puede referirse a la menor cantidad de datos que el sistema 200 de gestión de la memoria maneja como una unidad (por ejemplo, 4096 bytes); sin embargo, no hay intención alguna de limitar la presente invención a ninguna cantidad fija particular de datos y, así, una “página” de datos puede ser alguna otra cantidad fija, o puede incluso ser una cantidad variable de datos (por ejemplo, de solo un byte o un múltiplo del mismo), o incluso transferencias de difusión en continuo. Así, un sistema de gestión de la memoria que puede leer/escribir/difundir en continuo cantidades arbitrarias de datos, en vez de una cantidad de tamaño fijo o múltiplos del mismo, por ejemplo, sigue siendo equivalente a leer y escribir una o más páginas.
Tal como se describe más abajo, las implementaciones de la presente invención comprenden diversos mecanismos, incluyendo los dirigidos a la monitorización histórica de la utilización de memoria, el análisis de la utilización de la memoria, actualizar la memoria con páginas de valor elevado (por ejemplo, muy utilizadas), la eficiencia de la búsqueda previa de E/S y una gestión intensa del disco. En general, estos mecanismos funcionan juntos como el sistema 200 de gestión proactiva de la memoria, garantizando que los datos necesarios estén en la memoria antes de que se demanden. Con este fin, algoritmos, estructuras de soporte de datos y procedimientos extienden la gestión de la memoria para que opere de manera proactiva, aprovechándose de diversos tipos de datos de utilización de la memoria y otra información que puede ser recogida continuamente y/o en un marco temporal relativamente prolongado. Sin embargo, obsérvese que la presente invención no requiere ninguna combinación particular de tales mecanismos, pero puede proporcionar numerosos y mejores beneficios relacionados con la memoria, menos mecanismos y/o con mecanismos alternativos. Por ejemplo, determinando un valor indicativo de qué páginas es más probable que sean usadas que otras y dejando en memoria las páginas más valiosas, pueden obtenerse reducciones en las transferencias de E/S sin ninguna búsqueda previa de páginas en segundo plano introduciéndolas en memoria, ni aunque la información usada para determinar el valor de esas páginas se recogiera intermitentemente y/o solo en un periodo de tiempo relativamente corto.
Además, los procedimientos y los mecanismos de gestión de memoria de la presente invención pueden mejorar la utilización de la memoria siendo activos no solo en momentos en que la memoria está llena y es preciso tomar decisiones de intercambio, sino a otros niveles de la utilización de la memoria, incluyendo cuando la memoria está relativamente vacía. Por ejemplo, la frecuencia con la que se accede a una página cargada puede medirse con independencia de si el sistema está bajo presión de memoria. Además, en vez de gestionar únicamente lo que está en la memoria en el momento, la presente invención gestiona la memoria de forma global, incluyendo lo que está en la memoria en el momento y (preferentemente) lo que debería estar en la memoria pero está en el momento en disco, y viceversa.
La presente invención representa el estado de la memoria de varias maneras, incluyendo añadir a la información que se mantiene en el momento en cuanto a cada página de memoria. Tal información nueva puede incluir la frecuencia de uso de cada página en el tiempo, en vez de información meramente implícita o explícita sobre el momento de la última utilización. Implementaciones ejemplares también mantienen información sobre páginas que no están residentes en memoria en el momento. Tal como se describe más abajo, se usan estructuras de datos para organizar la memoria libre que contiene o puede contener potencialmente datos útiles, y se usan para controlar cuándo se hace disponible esta memoria para usos alternativos.
Para obtener la información, se hace seguimiento de cada página mediante técnicas de seguimiento y de registro, preferentemente en un periodo de tiempo relativamente prolongado. Observando las diversas páginas utilizadas por los procesos cuando están activos durante un periodo relativamente prolongado, se registran el código al que se accede y los ficheros de datos que son leídos, proporcionando una medición significativa del valor de una página para así establecer conjuntos de trabajo potenciales. Estos datos medidos son mantenidos y son objeto de acceso como parte de un proceso de toma de decisiones que reequilibra el contenido de la memoria en respuesta a eventos relacionados con la memoria y/o de otro modo (por ejemplo, periódicamente). En otras palabras, el resultado del seguimiento de datos enriquecidos da como resultado información que, cuando es analizada, permite que las páginas más valiosas sean mantenidas y/o buscadas de antemano e introducidas en la memoria con preferencia a páginas menos valiosas, ya se determine el valor por medio de datos que es más probable que se necesiten, facilidad de transferencia de los datos, contexto y/u otros criterios.
En general, la presente invención mantiene información enriquecida no tradicional por página de memoria para obtener un valor relativo para cada página, tanto para identificar páginas de alto valor y de bajo valor, con independencia de si la página está en el momento en memoria o en otro almacenamiento. Esta información enriquecida (incluyendo datos de patrón / frecuencia / agrupamiento / contexto) es mantenida en memoria (y también es persistente) para las páginas en memoria, así como para páginas que ya no están en memoria (por ejemplo, que están en el momento en un disco duro o un disco flexible, medios en CD, medios en DVD, red memoria flash, etcétera) o que nunca estuvieron en memoria. Esta información se usa para precargar (buscar de antemano) en la memoria páginas valiosas que no están en memoria y/o para mantener páginas más valiosas con preferencia a las
60 E03022573 10-11-2011
menos valiosas. Una manera de lograr esto es mediante un mecanismo de complemento de conjuntos de trabajo que mantiene entradas de conjuntos de trabajo que contienen la información enriquecida de utilización para páginas que ya no están en memoria pero que son válidas en el espacio de direccionamiento para el conjunto de trabajo. Otra manera es por medio de un conjunto extendido de páginas en espera (por ejemplo, una memoria asociada de páginas que no están en uso, tal como una lista en espera en un sistema basado en Windows®) que se construye en base al mecanismo de historial de páginas, en el que se asignan más descriptores y entradas de páginas físicas de los que caben en la memoria física, y estos se usan para mantener la información del patrón, la frecuencia, el agrupamiento y/o el contexto de utilización sobre páginas que no salen de la memoria.
Se hace seguimiento de diversos datos estadísticos para derivar patrones de referencia y/o frecuencia de utilización que determinen la probabilidad de que una página sea necesaria, tales como un recuento de periodos usados, momento de creación, momento del último acceso, etcétera, tal como se describe más abajo. Estos tipos de datos estadísticos puede mantenerse en memoria por entradas de página o intervalos/grupos que pueden usarse para derivar patrones de referencia, frecuencia de uso, etcétera. Tales datos estadísticos pueden ser entradas mantenidas y/u objetos para ficheros, objetos de correspondencia de memoria u otros agrupamientos de páginas. Además, pueden disponerse las máquinas de estado por página o grupo de páginas que tienen estados más allá de los bits de edad, para cubrir cuándo se eliminó una página de la memoria y se devolvió a la misma. Esta información variada puede usarse para priorizar en subconjuntos páginas de la memoria y proteger páginas valiosas evitando que sean reutilizadas para otros fines, como cuando los programas hacen referencia a grandes cantidades de páginas una o dos veces. La priorización puede ser explícita y no inferida de la localización en una lista. La prioridad puede ser recalculada periódica u ocasionalmente a partir de patrones captados de utilización, frecuencia, contexto, agrupamiento, etcétera.
Además, el costo de llevar una página particular a la memoria puede ser un factor en la determinación de su valor; por ejemplo, que la página esté respaldada en un fichero de páginas o entre páginas a las que se acceda secuencialmente o sean difundidas en continuo puede usarse para establecer este factor de costo. Tal evaluación puede ser por página, pero también puede ser hecha más compacta, como manteniendo parte de la información enriquecida, o toda ella, únicamente en un subconjunto de páginas, obteniendo y/o manteniendo datos estadísticos y un grupo de recuentos de páginas para los objetos en fichero, para secciones / correspondencias, etcétera. Además, pueden obtenerse y utilizarse datos de estado como para de la información extendida de las páginas.
Por ejemplo, observando el contexto, pueden tenerse en cuenta factores que normalmente no se consideran en las decisiones de la gestión de la memoria, incluyendo el estado de la potencia y el estado del disco. También se tienen en cuenta los eventos observados para emprender acciones apropiadas para la rápida recuperación de un estado de espera a una reanudación, de un estado de hibernación a una reanudación y de la ejecución a la terminación de programas de los que se conoce que tienen un gran impacto en la memoria.
Además de grabar tal información de estado, hay disponibles otros mecanismos para facilitar la gestión proactiva de la memoria de la presente invención. Por ejemplo, los programas de aplicación pueden declarar que ciertos datos son menos (o más) útiles que otros datos; por ejemplo, puede declararse que los datos necesarios para gestionar un error infrecuente no es probable que vuelvan a usarse, por lo que tales datos son un mejor candidato para se les asigne o se les dé un valor menor. Un usuario también puede indicar ciertos datos de prioridad menor o mayor; por ejemplo, un usuario que rara vez use un fichero de ayuda de una aplicación puede proporcionar manualmente una configuración que indique su baja prioridad para la aplicación y/o para el sistema operativo o, viceversa, por ejemplo, mantener siempre los datos en memoria si es posible. Con este fin, pueden proporcionarse interfaces de programación de aplicaciones (o funciones similares) para aplicación que permitan que los programas contribuyan a la gestión de la memoria del sistema, por ejemplo especificando que las páginas (por ejemplo, una región de páginas) ya no son valiosas o que otro conjunto de páginas es valioso. Los programas de aplicación también pueden especificar contextos y operaciones que el gestor de memoria puede usar para hacer seguimiento y agrupar valores de páginas a las que se hace referencia en esas operaciones. De esta manera, los programas de aplicación pueden marcar operaciones que el programa de aplicación cree que son importantes con respecto a la utilización de la memoria, como la presentación de un diálogo de Abrir/Guardar un fichero o mostrar paneles de tareas.
Los valores de páginas también pueden ser utilizados para mejorar la gestión de la memoria de otras maneras. Por ejemplo, cuando un programa pasar por grandes cantidades de páginas de ficheros que son usadas una o dos veces, solo las páginas similares son reutilizadas para otros fines y se protegen las páginas de mayor valor. Además, también es posible la compresión de ciertas páginas, por ejemplo hacer que las páginas de valor bajo y/o intermedio se compriman en la memoria en vez de que sean intercambiadas a disco. Por ejemplo, una aplicación o un mecanismo de descubrimiento pueden indicar que puede ser deseable comprimir cierto bloque grande de datos (por ejemplo, de valor intermedio o menor) en lugar de escribirlo en disco para liberar espacio.
Las técnicas de seguimiento y de registro que se usan proporcionan nuevas capacidades para registrar datos de la utilización de la memoria más allá de los conocidos en la actualidad. Nuevos algoritmos pueden extraer estos datos y generar instrucciones o planes de escenario para buscar datos de antemano en el disco de manera eficiente y para mantener datos en la memoria en base a la priorización por valor. Por ejemplo, gracias a la información enriquecida, puede priorizarse un conjunto de páginas en espera de las páginas en memoria, en vez de simplemente
60 E03022573 10-11-2011
disponerlas en una cola de tipo FIFO, en la que no hay ninguna prioridad cuantificada. Con la presente invención, las páginas del conjunto de páginas en espera pueden ser de mayor prioridad en términos de valor que otras páginas, con independencia de cuándo se hizo referencia a ellas por última vez, y ser así mantenidas en memoria con preferencia a otras páginas, incluyendo aquellas de la memoria del conjunto de trabajo. Por ejemplo, es probable que las páginas de cierto proceso activo puedan no volver a usarse, aunque las páginas se usaran recientemente, por lo que tales páginas son de menor valor que páginas no usadas desde hace mucho tiempo, pero potencialmente reutilizables.
Además, más allá de los datos de estado observados y de los resultados medidos, como la frecuencia de utilización real, el momento del último uso y otros resultados medidos, pueden usarse otros criterios para determinar el valor de una página. Por ejemplo, puede usarse el concepto de una sanción por sustitución para determinar el valor de las páginas en memoria; por ejemplo, que haya datos esparcidos aleatoriamente (discontiguos en el disco) es más caro que transferir al disco y del disco que los datos secuenciales contiguos y, por ello, puede ser más valioso mantener en memoria los datos esparcidos aleatoriamente en la memoria y transferir los datos secuenciales, como cuando se necesita de repente una gran cantidad de memoria. Así, la utilidad de una página puede ser determinada por su gasto de transferencia de E/S, junto con el seguimiento histórico de su utilización y el contexto de la máquina y de otra naturaleza, como consideraciones del estado de la potencia y del disco. Pueden usarse otros factores adicionales, como el peso que una entidad (por ejemplo, una aplicación o el usuario) puede asignar a ciertos datos.
En una implementación, se hace seguimiento en una máquina de la utilización de memoria por parte de los programas, por ejemplo, por usuario, y se clasifica la utilidad potencial de las páginas tanto en disco como en memoria. A partir de este seguimiento y esta clasificación puede determinarse una provisión de memoria y, en base a la provisión, un mecanismo de E/S en segundo plano intenta llenar la memoria con las páginas de mayor utilidad disponible, según determina el valor cuantificado de cada página. Así, las páginas de memoria pueden ser resilientes; por ejemplo, ser eliminadas si es necesario, pero ser restauradas automáticamente cuando se disponga nuevamente de espacio. Obsérvese que este enfoque se diferencia del enfoque general de la gestión de memoria, que se vale de la paginación en reacción a la demanda (con agrupamiento o búsquedas previas limitados) para recuperar páginas de disco únicamente en el momento de la primera utilización y mantenerlas a la manera FIFO. Con la presente invención, cuando las páginas están residentes, las estructuras de la memoria conservan las páginas en la memoria en base a la prioridad, que puede variar con el tiempo a medida que se usan, de modo que las páginas con mayor utilidad permanecen en la memoria, a no ser y hasta que se necesite la memoria para otras actividades del momento.
Para identificar páginas de valor elevado (así como páginas de bajo valor), el valor de las páginas y/o los datos del patrón de accesos se propagan a un almacenamiento persistente no residente y se mantienen en el mismo, por lo que esta información (que incluye, por ejemplo, datos de patrón, frecuencia, contexto y/o agrupamiento) persiste entre arranques del sistema. Obsérvese que, además de escribir los datos de las páginas a ficheros, también ser mantienen, incluyendo la interpretación de los datos, construyendo nuevos valores y/o extrayendo los datos para descartar datos redundantes o innecesarios, de modo que lo que se guarda en los almacenamientos persistentes comprende no solo los datos de utilización de las páginas, sino también los datos discernidos de un patrón. Según se describe más abajo, el valor de las páginas y los datos del patrón de accesos que son mantenidos y utilizados por la gestión de la memoria son capturados haciendo un seguimiento y/o muestreando referencias a páginas, junto con otros contextos y eventos (según se describe más abajo). En consonancia con la presente invención, la operación de seguimiento y de muestreo va más allá de simplemente mantener recuentos y una pequeña cantidad del estado por página en la memoria. Con este fin, los mecanismos de seguimiento y muestreo incluyen el seguimiento de bits de PTE (entradas de tabla de páginas) a las que se ha accedido que registra cuándo se ponen a cero los bits de acceso. Obsérvese que midiendo y manteniendo la tasa a la que los datos de acceso son recorridos y puestos a cero limita la cantidad de datos que se registran; por ejemplo, para las páginas a las que se hace referencia frecuentemente, la información no se registro en cada acceso, sino que puede mantenerse la tasa a la que se ponen a cero los bits de acceso de la PTE. Además, pueden registrarse los errores de paginación (fallos permanentes y fallos transitorios/de transición) y las solicitudes de ficheros para lectura y escritura. Los mecanismos para los conjuntos de trabajo del proceso de toma de instantáneas también pueden obtener datos del valor de las páginas, igual que los mecanismos para hacer un seguimiento de las páginas cuando salen de la memoria o cuando se eliminan de los conjuntos de trabajo.
Con esta información, las páginas puede ser agrupadas y la información extraída, tanto para las páginas en el almacenamiento persistente como en la memoria, por los momentos en que se accedió a ellas por última vez, los patrones de utilización, la frecuencia de utilización, la localidad virtual o física, por el momento en que las páginas fueron eliminadas, etcétera. Estas agrupaciones pueden ser usadas entonces para sacar eficientemente en un momento regiones de páginas por intercambio, y pueden ser usadas en esquema en el destino, como en un fichero de páginas. Por ejemplo, si se usan algunas páginas, puede importarse todo el grupo eficientemente. Los mecanismos también pueden llevar a cabo un “agrupamiento inteligente” usando el fichero de persistencia o el historial de páginas, como importando todo el fichero de una vez, etcétera. Las páginas pueden ser agrupadas, además, en función de qué procesos las utilizan, sobre qué parte de una vida útil de un proceso (por ejemplo, el arranque, la terminación) se usan las páginas, por qué páginas presentan fallo permanente dentro de un periodo (por ejemplo, operaciones ligadas a disco). Otras formas de agrupar páginas incluyen páginas a las que se hace
60 E03022573 10-11-2011
referencia en torno a una conmutación de tareas, al pulsar el ratón, al pasarlo sobre objetos o mover con él el foco en un formulario, y otras entradas de usuario, la utilización en base al tiempo, como en los momentos particulares del día y/o de los días de la semana, por los procesos de un usuario específico y otros contextos, incluyendo los contextos especificados por las aplicaciones.
En general, la gestión de la memoria según la presente invención puede hacer seguimiento y emprender acciones sobre un conjunto enriquecido de eventos y contextos, incluyendo conmutación de tareas, creación de ventanas, diálogos, cambio de foco, pasos del ratón sobre objetos y pulsaciones del mismo y otros eventos de usuario. Otros eventos y contextos incluyen el lanzamiento y la terminación de aplicaciones, el arranque del sistema, el inicio de sesiones, el apagado del sistema, el estado de espera / hibernación y la reanudación, el cambio de usuario, eventos de reproducción de vídeo, audio y/o elementos multimedia similares (por ejemplo, inicio y finalización), cronocorrimiento del vídeo, conexión remota al sistema (incluyendo escritorio remoto, telnet, etcétera) y contextos especificados por las aplicaciones.
Según un aspecto de la presente invención, no solo pueden mantenerse en memoria las páginas más valiosas en preferencia sobre las menos valiosas, sino que más páginas valiosas pueden ser cargadas (buscadas de antemano) en la memoria con respecto a las páginas menos valiosas o no usadas (la memoria es poblada de forma automática) incluso cuando no haya ninguna demanda real de esas páginas. Esta población y/o este reequilibrio pueden realizarse en momentos diversos y de maneras diversas, incluyendo después del rearranque, después de que se haya liberado una gran cantidad de memoria o incluso de forma un tanto continua o, al menos, regularmente, de forma preferente como una operación en segundo plano. Preferentemente, el mecanismo de población usado por el gestor de memoria es discreto y está basado en entradas/salidas de prioridad inactiva y en mecanismos de detección de la inactividad. Según se describe más abajo, este no es solo un algoritmo de programación, sino que puede operar a modo de regulador observando los patrones entrantes de E/S normales y programando las E/S en segundo plano cuando no sea probable que se solapen con las E/S normales ni causen una búsqueda de las mismas. Los mecanismos de detección de la inactividad (por ejemplo, gestionadas en una cola como una tarea inactiva) determinan cuándo está inactivo el sistema observando la entrada del usuario, la CPU y el disco, llevando a cabo el equilibrio de la memoria de manera discreta. No obstante, la población de la memoria en primer plano también es valiosa en ocasiones y, así, parte o la totalidad de la precarga de la memoria puede ser de prioridad alta.
Así, durante la búsqueda previa, las operaciones de E/S pueden ser gestionadas para proporcionar eficiencia por parte de los mecanismos que restringen la interferencia entre las aplicaciones y los programas activos que realizan el trabajo en segundo plano. Por ejemplo, las transferencias de E/S pueden ser ordenadas para reducir los tiempos de búsqueda, y las transferencias de E/S pueden ser priorizadas para que las operaciones en segundo plano (por ejemplo, la búsqueda de antemano) no demoren las operaciones en primer plano ni interfieran en la utilización normal del sistema por parte del usuario. Además, pueden proporcionarse mecanismos para clasificar las solicitudes de E/S y pasar esta información a través de la pila de controladores, de modo que los mecanismos de bajo nivel sean capaces de programar las E/S con la prioridad apropiada. Esto permite que las categorías de E/S con baja prioridad no interfieran en las categorías de prioridad mayor, lo que puede requerir evitar posibles inversiones de polaridad cuando se solicita múltiples veces una operación dada bajo categorías diferentes. Las E/S de diferentes categorías pueden ser despachadas usando algoritmos que buscan reconocer los patrones imperantes de utilización y minimizar la interferencia.
Uno de los aspectos de la operación de E/S es aprovechar los recursos infrautilizados sin dañar el rendimiento de otras actividades del usuario y el sistema; sin embargo, pueden ocurrir problemas al leer del disco las páginas de ficheros de gran utilidad sin interferir en las aplicaciones del usuario en primer plano. Un problema tal es el requisito de buscar de antemano en ficheros que el usuario tiene abiertos de forma exclusiva, como ficheros de registro y el índice de memoria intermedia de ficheros temporales de Internet. En tal situación en la que el fichero ya está abierto con exclusividad, el fichero no puede ser abierto normalmente para hacer una búsqueda previa en él. De modo similar, si el mecanismo de gestión de la memoria consigue abrir un fichero para una búsqueda previa y una aplicación que requiere un acceso exclusivo al fichero intenta abrirlo, la aplicación fallaría, lo que daría como resultado lo que sería percibido como errores aleatorios de la aplicación. Este problema puede ser evitando realizando una llamada a una API especial para abrir el fichero de una manera atípica en la que el sistema de ficheros no actualización la información de compartición para ese fichero.
Otro problema relacionado con la E/S está dirigido a la emisión de solicitudes de E/S de una manera que no interfiera en las solicitudes de E/S de mayor prioridad en el sistema. Esto puede lograrse, en parte, no iniciando una E/S de baja prioridad si el disco no ha estado inactivo durante un tiempo suficiente (por ejemplo, 75 ms) desde la última E/S normal. Sin embargo, esto lleva a un problema de inversión de las prioridades, que puede ser resuelto enviando una falsa lectura con una bandera especial por la pila de E/S de forma descendente. Obsérvese que el envío de un falso paquete de lectura es una manera de comunicarse con la pila de E/S para notificarle la inversión de prioridades, que funciona incluso cuando la solicitud real se subdivide en muchas subpeticiones que están distribuidas por la pila, de modo que no puedan ser alcanzadas por medio del identificador de la petición original. Cuando la unidad de filtro ve el correspondiente IRP (paquete de solicitud de E/S), eleva la prioridad de todas las E/S pendientes que se solapen con ese intervalo y entonces se completa el IRP de la falsa lectura sin llevar a cabo ningún trabajo real. Sin embargo, incluso con este apaño, la emisión de una gran lista de entradas/salidas de
60 E03022573 10-11-2011
paginación de baja prioridad puede bloquear un hilo de prioridad normal o elevada. Así, esto puede evitarse emitiendo únicamente algunas E/S de paginación de baja prioridad con búsqueda de antemano para un solo fichero en un momento dado, lo que reduce mucho el potencial de una inversión de prioridades y acorta su duración. Con estas mejoras, una vez que se identifican las páginas de ficheros de utilidad elevada en disco y las páginas de baja utilidad en memoria, las solicitudes pueden meterse de inmediato en la cola sin preocuparse de interferir en la actividad actual del usuario.
Como consecuencia de este aspecto de la presente invención, la utilización de la CPU aumenta significativamente sin interferir en el uso normal del sistema. Para muchos usuarios típicos, todo el conjunto de páginas respaldadas en ficheros realmente usadas es lo bastante pequeño como para mantenerlo en memoria. Estas páginas que se necesitan pueden ser precargadas tras el arranque del sistema, y también ser restauradas si en algún momento ocurre una demanda elevada temporal de memoria y esas páginas deben ser intercambiadas a disco. Obsérvese que si el conjunto agregado de trabajo de memoria necesaria es demasiado grande para una aplicación dada y el sistema, pueden mantenerse en memoria subconjuntos del sistema de trabajo, mientras que la presente invención se esforzará por proporcionar eficiencia de E/S para el equilibrio de las páginas.
Sin embargo, al comprobar muchos escenarios comunes de consumidor, se ha demostrado que el número total de páginas referenciadas incluso en una carga de trabajo relativamente compleja encaja en las cantidades contemporáneas de memoria. Por ejemplo, tal como se determina en varios experimentos, las páginas necesarias para algunas cargas de trabajo muy significativas pudieron caber en la memoria de máquinas con 384 megabytes de RAM, y muchas en 256 megabytes de RAM. Dado que la memoria es mayor que le necesidad, la presente invención hace viable la precarga de las páginas apropiadas y la eliminación de los errores de paginación, permitiendo con ello que las aplicaciones de usuario se ejecuten con una utilización total de la CPU en respuesta a la entrada del usuario.
Como consecuencia de la eliminación (o casi eliminación) de los errores de paginación, la presente invención permite que el disco se gestione de forma más intensa de lo que se hace en la actualidad. Por ejemplo, en muchos casos es posible eliminar una situación en la que una reanudación partiendo de un estado en espera se demora para que el disco alcance su velocidad normal de giro. Así, un beneficio significativo de la gestión proactiva y extendida de la memoria de la presente invención es que los dispositivos portátiles, como los dispositivos informáticos de tipo tableta, ordenadores portátiles y dispositivos tales pueden funcionar durante periodos prolongados de tiempo sin leer del disco. Evitar que el disco dé vueltas cuando funciona con corriente de batería representa un avance significativo en ahorro de energía para los usuarios móviles, ya que un disco cuya rotación está suspendida durante periodos prolongados aumenta la vida de la batería en las máquinas portátiles y aumenta la vida del disco en general.
A falta de lecturas de disco, la única razón de mantener un disco dando vueltas es satisfacer las operaciones de escritura. Sin embargo, la actividad típica de escritura comprende operaciones reiteradas de escritura en los mismos sectores del disco, y el número de sectores diferenciados escritos durante periodos prolongados es típicamente modesto. En consecuencia, una simple memoria intermedia de sectores de disco que usen una memoria respaldada por batería u otra NVRAM no volátil puede generalmente gestionar las operaciones de escritura, tal como se representa en la FIG. 3, en la que una cantidad relativamente pequeña de memoria opcional 302 (tal como se representa mediante la caja a trazos discontinuos) de acceso aleatorio no volátil (NVRAM) puede formar parte de un sistema global 300 de almacenamiento no volátil que permita que el disco permanezca con la rotación suspendida cuando algunas operaciones de escritura no puedan ser evitadas o sean deseables; por ejemplo, cuando un usuario guarda un documento. En una implementación, una NVRAM de 32 megabytes permitió que los sistemas probados pospusiesen las operaciones encaminadas al disco durante periodos relativamente prolongados durante los cuales el disco fue capaz de permanecer con la rotación suspendida mientras se realizaban tareas comunes, como leer el correo electrónico, navegar por la red, editar y guardar documentos, etcétera. Obsérvese que un sistema opcional proactivo 304 de gestión del almacenamiento (que puede ser algo similar al sistema proactivo 200 de gestión de la memoria descrito en el presente documento) puede gestionar la memoria 302 de acceso aleatorio no volátil de manera proactiva para intercambiar páginas almacenadas de menor valor provenientes de la NVRAM 302 con el disco 204 cuando el disco está girando para liberar espacio para cuando el disco esté más tarde con la rotación suspendida.
Aunque suspender la rotación de un disco impone una seria sanción en el primer acceso requerido al disco, una gestión minuciosa de la memoria y de la memoria intermedia de sectores permitirá la evitación de demoras síncronas en la mayoría de las situaciones. Sin embargo, esto no siempre será posible y, así, el sistema operativo tendrá que adoptar decisiones estratégicas en cuanto a cuándo es más ventajoso detener y rearrancar los discos y, en algunos casos, las aplicaciones futuras podrían ser capaces de asistir en puentear los rearranques del disco.
Resumiendo, en general, la presente invención está dirigida a técnicas de gestión de la memoria que reducen sustancialmente la necesidad de usar el componente más lento, el disco, como un factor durante el uso normal del sistema. La presente invención, por medio de un nuevo enfoque proactivo y resiliente de la gestión de la memoria, está dispuesto para proporcionar un grado de respuesta constante en operaciones significativas relacionadas con la memoria aun después del arranque, el cambio rápido de usuario o de salir de una aplicación grande, como un programa de juego. Las reanudaciones rápidas de forma fiable partiendo de un estado en espera que no se
55 E03022573 10-11-2011
demoran con la aceleración del disco hasta su velocidad normal de giro también son resultado de la presente invención, así como tiempos reducidos de respuesta para operaciones caras que en la actualidad están ligadas a discos debido a la paginación bajo demanda. Otros beneficios son resultado del contenido en memoria intermedia de calibrado automático de la memoria y de la disposición automática de los ficheros en disco que se adapta a patrones de utilización del sistema y proporciona un rendimiento general mejorado. Otros beneficios adicionales incluyen una gran reducción de fallos en el sistema multimedia al proteger la memoria y el ancho de banda del disco usado por las aplicaciones multimedia, protección contra las actividades en segundo plano, como escáneres antivirus, indexadores de ficheros y secuencias de órdenes de inicio de sesión que pueden desbaratar la capacidad de respuesta interactiva, y una vida ampliada de la batería, bajo ruido y baja vibración para los dispositivos móviles, que son resultado de mantener los discos en estado de rotación suspendida durante periodos prolongados de tiempo. Una capacidad de difusión en continuo mejorada para contenidos multimedia y aplicaciones de tipo doméstico de gestión electrónica que tienen múltiples flujos de difusión de datos en continuo en segundo plano también son resultado de la presente invención.
La siguiente sección describe diversas implementaciones ejemplares de las que debería hacerse notar que son únicamente algunas de las maneras de utilizar la información que puede ser adquirida para gestionar la memoria.
Implementaciones ejemplares
Al menos una implementación ejemplar de la presente invención descrita más abajo se implementó en un sistema modificado que ejecutaba el sistema operativo Windows® XP SP1, de Microsoft Corporation, y el sistema de ficheros NTFS de Windows®. No obstante, no hay intención alguna de limitar la presente invención a ningún sistema operativo particular ni a un tipo de gestión de memoria, sino que, al contrario, se pretende que la presente invención opere y proporcione beneficios con cualquier ordenador cuya memoria esté gestionada por un sistema de gestión de memoria, porque la presente invención incluye un esquema especulativo e inteligente de gestión de la memoria intermedia. Además, aunque se dispuso una implementación ejemplar con una unidad de disco como almacenamiento secundario desde el cual se carga la memoria, debería ser inmediatamente evidente que el almacenamiento secundario no es necesariamente una unidad de disco y que incluye alternativas como una memoria flash, una fuente de datos en red, una unidad de cinta o casi cualquier tipo de almacenamiento de datos y, de hecho, un sistema de ordenador que carezca por completo de discos puede beneficiarse muchísimo de la presente invención.
Según un aspecto de la presente invención y según se representan en general en la implementación ejemplar 400 de las FIGURAS 4A y 4B, se han desarrollado diversos mecanismos que implementan el enfoque de la presente invención hacia una gestión proactiva, resiliente y de calibrado automático de la memoria. Tales mecanismos permiten el seguimiento y el registro de las páginas referenciadas, la protección de las páginas más valiosas contra la erosión y la búsqueda y la restauración de estas páginas a la memoria tras las transiciones. Estos mecanismos funcionan como parte del núcleo cuando es necesario, pero también pueden incluir servicios del modo de usuario (sin privilegios).
Tal como se describe más arriba, para hacer seguimiento y registrar la utilización de la memoria y otros datos de contexto, la presente invención reúne información para obtener datos enriquecidos, incluyendo qué páginas son objeto de acceso para las actividades frecuentes de un usuario actual. Por ejemplo, puede grabarse cada acceso a páginas por un único proceso o en todo el sistema en un periodo especificado de tiempo. Con este fin, tal como se representa en la FIG. 4A, en una implementación ejemplar 400 de la gestión de la memoria, un mecanismo 402 de seguimiento o rastreador, hace seguimiento de las referencias a páginas monitorizando la actividad 404 relacionada con las páginas, incluyendo la monitorización de los bits de acceso que corresponden a la página a la que se accede y observar a medida que las páginas son introducidas en la memoria por medio de fallos.
Como se representa también en la FIG. 4A, un registrador 406 hace persistente la información de seguimiento en forma de estructuras de datos (incluyendo, por ejemplo, uno o más registros anteriores 408 y registros 410 no tratados, descritos más abajo) que identifican cada página como un par fichero-desplazamiento o, para páginas privadas como áreas de almacenamiento para variables dinámicas, un par conjunto de trabajo-dirección virtual. Más en particular, en una implementación, el mecanismo 402 de seguimiento graba eventos de la memoria virtual relacionadas con procesos en memorias intermedias del núcleo (no mostradas), a partir de los cuales se ensamblan posteriormente los registros 410 no tratados. Otra información útil que el mecanismo 402 de seguimiento puede obtener rastrea si la página (cuando se hizo referencia a ella) residía en la memoria o tuvo que ser recuperada del disco por un fallo permanente. Los eventos de la memoria virtual incluyen accesos iniciales a páginas particulares de un espacio de dirección y contadores de accesos que registran la tasa a la que se está accediendo de nuevo a la página. También se incluye información sobre el estado de la máquina, y los contextos activos reconocidos en el momento del seguimiento. Para cada página, puede mantenerse información adicional, como en cuál de los lanzamientos recientes de un escenario se hizo referencia a cada página, e información similar del estado del sistema.
Así, una base importante del enfoque de gestión de la memoria de la presente invención es registrar eventos de gestión de la memoria observados en el sistema, es decir, representaciones de accesos a porciones de los espacios
60 E03022573 10-11-2011
virtuales de direcciones por procesos particulares. Puede no ser viable registrar cada acceso y, así, en la implementación descrita, el trabajo es llevado a cabo en la granularidad de la página, registrando los primeros accesos e información sobre la frecuencia de los accesos subsiguientes.
El registrador 406 opera tomando los seguimientos del núcleo y formateándolos como registros 410 no tratados. Las responsabilidades del registrador incluyen garantizar que se respeten los límites de los recursos para que los registros no tratados no llenen el disco del usuario. Así, los seguimientos son grabados en los registros 410 no tratados, que representan el patrón de accesos para una instalación particular de un proceso durante algún intervalo razonablemente corto. Por ejemplo, podrían recogerse registros para un solo arranque o una sola reanudación partiendo de la hibernación, para el periodo que siga a cierto evento de usuario, como presentar el panel de control, para el periodo que una aplicación es la aplicación en primer plano, para algún intervalo de tiempo no vinculado a un evento particular, etcétera.
En una implementación descrita, los registros incluyen una cabecera, que puede contener información de contexto, del estado de la memoria y horaria, e incluir una tabla de entradas de <fuente, desplazamiento, fallo permanente>, en las que fuente es el espacio de direcciones de ficheros o de procesos al que se accede con un desplazamiento dado, y el fallo permanente indica si los datos se leyeron del disco, lo que proporciona una medida bruta del coste.
Además de realizar un seguimiento de la utilización de las páginas para diversos contextos, también puede ser mantenida la información sobre patrones de acceso y vidas útiles de páginas individuales que están en memoria, proporcionando la capacidad de adoptar mejores decisiones en cuanto a la utilidad de las páginas dentro de los conjuntos de trabajo. Por ejemplo, los sistemas operativos contemporáneos mantienen únicamente una información de dos bits de edad por página, por lo que, para el gestor de memoria, todas las páginas a las que no se hizo referencia recientemente (por ejemplo, en el último par de minutos) tienden a parecer iguales. En la presente invención, la información a la que tiene acceso el sistema gestor de la memoria puede incluir un número de periodos (por ejemplo, minutos) en los que se usó cada página, así como los periodos en los que se creó cada página y en los que se accedió a ella por última vez. En consonancia con la presente invención, los mecanismos guardan esta información sobre las páginas incluso cuando esas páginas salen al disco por paginación. En otras palabras, no solo se hace seguimiento de la página mientras está en memoria, sino que esta información se mantiene mientras la página está en disco. Esta información adicional proporciona un cuadro significativamente más preciso de la manera en la que se accede a la página durante su vida útil.
El mecanismo 402 de seguimiento puede operar simultáneamente en múltiples seguimientos activos. Estos seguimientos pueden incluir seguimientos continuos, que, por ejemplo, pueden ser ensamblados uno tras otro hasta que alcancen un tamaño particular (por ejemplo, 100.000 registros) o hasta que representen una duración particular (por ejemplo, un intervalo de cinco minutos). Obsérvese que un mecanismo de seguimiento implementado tiene una carga general relativamente baja (por ejemplo, el 0,1% de la CPU con un procesador de 450 MHz, más algunos megabytes de memoria para registrar un día de utilización de la página), habilitando tal seguimiento continuo en cuanto a qué páginas están siendo referenciadas sin recargar el sistema. El seguimiento también puede ser llevado a cabo como una operación intermitente, de tipo muestreo, desencadenada automáticamente o en respuesta a solicitudes a través de una herramienta de la interfaz gráfica de usuario con fines de prueba o de entrenamiento, lo que permite que la recogida de información de páginas se asocie con actividades y transiciones particulares, como el lanzamiento de aplicaciones, el cambio rápido de usuario o la reanudación a partir del estado en espera.
Obsérvese que, en vez de iniciar el seguimiento /registro partiendo de cero para un usuario o un sistema, puede llevarse a cabo cierta cantidad de entrenamiento previo (por ejemplo, para otros usuarios y sistemas). Esto permite la copia de algún valor de página y fichero construido de antemano y de la base de datos de información en el momento de la configuración, o en otros momentos adecuados, como cuando se instala un programa de aplicación. Esta solución estática contribuye a acelerar la curva de aprendizaje que, si no, se requeriría cada vez que se añadieran un nuevo usuario, un nuevo sistema, una nueva versión del sistema operativo y/o un nuevo programa. Así, presente invención proporciona ventajas mediante la carga selectiva, basada en valores, o completa en la memoria, en la que el valor es determinado, al menos en parte, por la observación previa, ya sea haciendo un seguimiento del historial de utilización y/o por el entrenamiento (incluyendo la simulación, el análisis de código, ejecuciones en una máquina diferente, etcétera). Para mantener los datos, se construye, se usa y se almacena un repositorio persistente de la información relativa al uso y al valor de las páginas, que puede estar en cualquier fichero, incluyendo los ficheros ejecutables, los documentos y ficheros de datos y bases de datos de propósito especial. Además, obsérvese que tal conocimiento obtenido de antemano también proporciona reducciones significativas en las transferencias de E/S bajo demanda, incluso sin llevar a cabo la recolección de información dinámica mediante el registro y el seguimiento. Por ejemplo, las transferencias de E/S bajo demanda pueden reducirse simplemente proporcionando ficheros construidos de antemano de agrupamientos de páginas, por ejemplo cuando un usuario produce un fallo en la primera página para mostrar el Panel de control, se llevan a memoria eficientemente desde el disco otras páginas relacionadas.
Por medio del mecanismo 402 de seguimiento y un procesamiento adicional descritos en el presente documento, el sistema de gestión de la memoria construye y mantiene planes 422 de escenario (por ejemplo, ficheros) (FIG. 4B) que contienen los datos que pueden usarse para establecer uno o más valores medibles para las páginas de
55 E03022573 10-11-2011
ficheros, como la frecuencia de utilización. Con este fin, diversos componentes pueden procesar los datos a una forma adecuada para la adopción de decisiones de gestión de la memoria, incluyendo un integrador 412 que esencialmente combina los registros anteriores 408 y los registros 410 no tratados formando una base de datos 414 de información de páginas.
El integrador 412 representado en la FIG. 4A es un servicio, que puede ejecutarse en un proceso a nivel de usuario (ya que no se requiere el acceso al núcleo), que lee los registros 410 no tratados, los procesa e integra la información que contienen con la información de páginas para contextos similares ya almacenados en el sistema (por ejemplo, en los registros anteriores 408). Inicialmente, no habrá ningún información previa, pero el sistema alcanzará rápidamente un estado en el que los seguimientos sin tratar sirven fundamentalmente para actualizar y refinar la información ya conocida a partir de incidencias previas de un contexto particular. Un sencillo integrador 412 que ha sido implementado mantiene un vector de bits de historial para cada página mencionada en los seguimientos para una clase dada de contexto. Para integrar cada nuevo caso, se desplaza el vector de bits de historial y se añade un nuevo bit que representa el periodo temporal más reciente. Las páginas que aparecen en el nuevo registro tienen un “1” como nuevo bit, mientras que otras tienen un “0”. Las páginas que aparecen por vez primera son añadidas a una base de datos 414 con información de páginas, mientras que las páginas que no han sido usadas recientemente pueden ser eliminadas de la base de datos 414.
De esta manera, a través del integrador 412, los registros 410 no tratados que cubren eventos o intervalos particulares se integran con los registros anteriores 408 que contienen información conocida en cuanto a casos anteriores de eventos similares, como ejecuciones previas del mismo programa, para proporcionar la base de datos 414 con información de páginas. Esencialmente, la base de datos 414 con información de páginas comprime la información contenida en los registros, reduciendo la cantidad de memoria requerida para hacer seguimiento de estos datos, mientras que reorganiza la información para que los eventos similares sean debidamente agrupados y se identifica lo común en los ficheros y las páginas entre un registro 410 no tratado y los registros anteriores 408.
Según se representa en las FIGURAS 4A y 4B, la información en la base de datos 414 con información de páginas puede ser extraída (por ejemplo, por un servicio 420 de extracción) para producir los planes 422 de escenario, que indica la composición probable de futuros espacios de direcciones virtuales y la probabilidad de acceso a las páginas dentro del espacio virtual en contextos particulares. Tal como se describe más abajo, estos planes 422 de escenario son usados por un reequilibrador 424 para predecir los accesos futuros para el sistema y permiten que el reequilibrador 424 cree nuevos planes de gestión de la memoria en respuesta a eventos observados por el sistema. Por ejemplo, pueden construirse planes de escenario a partir de un conjunto fijo de ficheros de información de páginas que comprenden información relativa a escenarios que se sabe que son importantes para el sistema, como el arranque y el apagado del sistema y la reanudación partiendo de la hibernación. Se usan mensajes particulares para establecer contextos. A estos datos puede añadirse información proveniente de escenarios seleccionados por un usuario, por ejemplo mediante una herramienta gráfica interactiva, y pueden darse prioridades por defecto a los diferentes escenarios que pueden ser modificados a través de la herramienta interactiva.
Cuando cambian los planes 422 de escenario, un priorizador 426 de páginas de escenario (por ejemplo, un servicio del modo de usuario incorporado al servicio 420 de extracción o asociado de otra forma con el mismo) procesa los planes 422 de escenario, generando una lista de páginas que deberían introducirse en memoria y ser protegidas. Esta regeneración también puede ser desencadenada en base al tiempo máximo transcurrido desde que se llevó a cabo por última vez, de modo que se garantice que los planes son regenerados al menos una vez cada quince minutos. En una implementación, para lograr la priorización, se asigna a cada página una puntuación calculada de prioridad. Cuando se determinan las puntuaciones, las páginas son ordenadas entonces por sus puntuaciones calculadas para construir una lista priorizada 428 de páginas.
Una factor en la puntuación de la utilización basado en la frecuencia es determinado contando cuántas veces fue usada esa página en intervalos temporales recientes, por ejemplo dentro de la última hora, las ocho últimas horas, el último día, la última semana, etcétera, según los ficheros de escenarios de datos. Con este fin, el priorizador 426 de páginas mantiene seguimiento de la frecuencia de utilización de las páginas para diversas ranuras de tiempo, como lapsos de una hora, ocho horas, un día, tres días, una semana o tres semanas. En base al número de veces que una página ha sido utilizada en cada uno de estos lapsos, puede asignársele a la página una puntuación, como entre 0 y 127.
Cada plan de escenario también puede hacer seguimiento de en cuál del último número de ejecuciones (por ejemplo, treinta y dos) se usó la página, con sellos temporales para cada lanzamiento. Se da más peso a las utilizaciones recientes de la página. Además, pueden elevarse las puntuaciones de las páginas que están en los planes de escenario conocidos, como un plan de escenario mantenido para el menú de Inicio, para darles una prioridad mayor.
La puntuación de las páginas también puede tener en cuenta el contexto en el que se observa que se usa una página. Así, las puntuaciones pueden estar supeditadas al estado de la máquina, a las aplicaciones que se están ejecutando o a acciones recientes del usuario. Es probable que tan sofisticados enfoques a las prioridades de las páginas se refinen con el tiempo. Obsérvese que, dado que cada plan de escenario mantiene información de la hora
60 E03022573 10-11-2011
y del historial sobre el último número de ejecuciones (por ejemplo, treinta y dos) en las que se accedió a las páginas, es posible determinar con cuánta frecuencia se ha accedido a una página particular de fichero en los escenarios con respecto a las otras páginas para las que se ha grabado información.
Se proporciona un observador 430 para generar eventos, tal como se representa en la FIG. 4B. Preferentemente, el observado 430 comprende un hilo en el núcleo del sistema operativo que monitoriza el estado del sistema, incluyendo los cambios pronunciados en la utilización de la memoria física. Además, pueden realizarse llamadas explícitas para desencadenar la evaluación del estado cuando se llevan a cabo ciertas acciones, como el inicio del apagado o la hibernación del sistema. Además, las aplicaciones pueden llamar al núcleo para notificar al sistema de cambios potencialmente interesantes en el estado a los que puede ser aplicada una etiqueta elegida por la aplicación.
En una implementación, los eventos objeto de seguimiento incluyen lanzamientos de aplicaciones y mensajes reconocidos del encuadre en ventanas pasados al núcleo. La asociación de mensajes a ventanas permite que el sistema detecte indicios de que las aplicaciones o los componentes del sistema puedan estar llevando a cabo una operación significativa relacionada con la memoria, como el lanzamiento del menú de Inicio o la creación de diálogos
o ventanas para la Apertura de ficheros, la Impresión o el Panel de control. Pueden usarse criterios heurísticos para evitar un seguimiento redundante de eventos frecuentes o muy seguidos. En respuesta a estos eventos, el núcleo hace seguimiento de la utilización de páginas para un proceso individual utilizando los bits de acceso en entradas de la tabla de páginas para las páginas. Estos bits se borran cuando comienza el seguimiento y se comprueban al final del seguimiento. También se registra cualquier eliminación o puesta a cero de los bits de acceso durante el seguimiento. Se registran las páginas a las que se accede por medio de LeerFichero y fallos permanentes en los que se lleva a cabo una lectura de disco.
Cuando se observa un cambio en el estado del sistema o una llamada indica un evento importante, se genera un evento 432 y el estado del sistema puede ser actualizado por un servicio 434 de evaluación y actualización del estado. Puede invocarse o terminarse el seguimiento y/o pasarse al mismo los datos 436 de estado (y otra información de la memoria del sistema), y puede desencadenarse el reequilibrado, según se representa en la FIG. 4B. El estado incluye contextos activos, así como la distribución de la memoria en el momento entre conjuntos de trabajo, la lista de ceros, la lista sucia y el conjunto de páginas en espera. La información de la memoria del sistema incluye tamaños de direcciones virtuales y tamaños del conjunto de trabajo, datos de instantáneas de procesos, fallos permanentes y transitorios, bits de acceso a la memoria soportada por el soporte físico, la información de utilización por página deducida por el sistema operativo y cualesquiera otros datos, contextos y estados medibles u observables que puedan ser usados para determinar valores de página, tal como se ha descrito en lo que antecede.
Tal como se describe en general más arriba, ya sea continuamente o al final del seguimiento, el núcleo produce una memoria intermedia de seguimiento, que incluye listas de las páginas específicas necesarias procedentes de diversos ficheros, así como una variedad de contadores internos de gestión de la memoria, como cuántas páginas de ceros/libres había en el sistema y la constitución de un conjunto de páginas en espera. Según se describe también más arriba, las memorias intermedias de seguimiento son reunidas por un servicio de nivel de usuario y se utilizan para actualizar los ficheros de escenario, mantenidos, por ejemplo, en un directorio de búsquedas previas. Los ficheros de escenario pueden tener nombres basados en un contexto del que se hizo seguimiento, como AppLaunch.WMPlayer.exe-...pfx, o Shell.StartMenuCreate...pfx.
De esta manera, los eventos del sistema provocan una reevaluación del estado del sistema y pueden desencadenar un reequilibrado del contenido de la memoria. Los contextos están indicados por marcadores que se disparan cuando se ejecuta un código de sistema particular, así como especificados por aplicaciones mediante las API o similares. Las aplicaciones pueden proporcionar interfaces de usuario a través de las cuales un usuario puede especificar y marcar sus propios contextos individualizados. Otros eventos del sistema que pueden provocar una reevaluación incluyen las asignaciones y desasignaciones de mucha memoria, el lanzamiento de procesos o la detección de que un usuario ha pasado a la inactividad o ha reanudado el trabajo. Así, el gestor de memoria y el reequilibrador 424 pueden tomar acción sobre los desencadenantes / eventos /contextos para priorizar qué páginas es más probable que se necesiten en un contexto actual y para valorarlas más con respecto a otras y a precargar la memoria en base a este nueva priorización. Estos contextos pueden ser usados por el procesador de seguimiento para clasificar y agrupar los datos de utilización de páginas objeto de seguimiento. Cuando son identificadas, las páginas y los grupos de páginas son reordenados en memoria, para sacarlas por intercambio, importar a la vez todas las páginas relacionadas cuando una de ellas produce un fallo, etcétera.
El reequilibrador 424 de la memoria hace de interconexión entre los elementos del modo de usuario y del modo de núcleo de la normativa sobre búsquedas previas del sistema de gestión de la memoria. Tal como se describe más abajo, el reequilibrador 424 se vale en primer lugar del núcleo para identificar y ordenar páginas en el conjunto de páginas en espera, para identificar las páginas de bajo valor y para proteger las páginas más valoradas. Además del mantenimiento de las páginas más valoradas, un propósito fundamental del reequilibrador 424 de la memoria es poblar la memoria con las páginas que ha escogido el priorizador 426 de páginas de escenario, sustituyendo las páginas de menor valor con páginas de mayor valor, según lo determinan las puntuaciones de prioridad. Con este fin, el reequilibrador 424 observa el priorizador 426 de páginas de escenario y los contadores de contenido de la
55 E03022573 10-11-2011
memoria del núcleo para determinar si precisa emprender alguna acción. Obsérvese que los contadores de contenido de la memoria del núcleo dan información de cuántas páginas libres/de ceros hay disponibles, así como datos estadísticos para cada subconjunto de páginas en espera (descritos más abajo) y de cuántas páginas han sido reutilizadas para otros fines debido a la presión de la memoria.
Así, el reequilibrador 424 observa la disposición actual de la memoria y puede invocar rutinas que hacen que los conjuntos de trabajo sean eliminados. A partir de esta información, el reequilibrador 424 determina entonces una provisión de memoria que ha de usarse para almacenador datos buscados de antemano. El fondo común de páginas que caen bajo el control de la gestión especulativa es determinado identificando páginas que proporcionan una utilidad baja, como páginas con un contenido a ceros más allá de ciertos límites establecidos para el sistema. Las páginas de baja utilidad también comprenden páginas que tienen contenido válido que no están en conjuntos de trabajo y que no han sido utilizadas en un tiempo relativamente prolongado. Así, mediante el priorizador 426 de páginas de escenario, el reequilibrador 424 usa la información en los planes 422 de escenario para establecer un conjunto más ideal de contenido para la memoria, dentro de su provisión. Puede realizar interrogaciones (por ejemplo, mediante API) para determinar cuánto del contenido está en memoria y puede entonces modificar los planes 422.
Si hay páginas libres o de bajo valor, el reequilibrador 424 pide al núcleo del sistema que las pueble con páginas de mayor valor usando E/S de búsqueda previa de baja prioridad hasta que se lleven a la memoria páginas de mayor valor. Con este fin, una vez que el reequilibrador 424 ha establecido una lista de páginas según la provisión, se pasa la lista de páginas deseadas que hay que cargar (y descargar por paginación) a un planificador 440 de E/S. Preferentemente, estas instrucciones de E/S son ordenadas en la cola del disco para minimizar las búsquedas, dando como resultado un rendimiento mucho más alto del disco. Si el reequilibrador no es capaz de llevar a la memoria tantas páginas como querría, el reequilibrador 424 recuerda el lugar en el que está en su lista y, cuando haya disponibles más páginas, sigue realizando búsquedas previas desde ese punto.
Siempre que el priorizador 426 de páginas de escenario construye una nueva lista de páginas, o cuando cualquiera de las páginas (resilientes) buscadas de antemano que se introdujeron en la memoria es reutilizada para otro fin debido a la presión de la memoria, el reequilibrador 424 de la memoria comienza a realizar búsquedas previas desde el inicio de la lista. Antes de que el reequilibrador 424 busque de antemano el nuevo lote de páginas, borrar la preferencia sobre las páginas buscadas previamente para hacerlas disponibles.
Obsérvese que el reequilibrador 424 de la memoria puede ser programado para que sea relativamente conservador con respecto a qué páginas quiere introducir en la memoria para evitar interferir en la actividad del usuario. Con este fin, el reequilibrador está configurado para llevar a cabo operaciones de E/S de baja prioridad por medio del planificador 440 de E/S y puede evitar emprender acciones cuando el sistema está bajo presión de memoria. Por ejemplo, el reequilibrador 424 puede estar configurado para sustituir únicamente páginas que no se han usado durante un tiempo relativamente prolongado y que no se han usado muy frecuentemente, y puede no emprender ninguna acción si no hay cierta cantidad umbral de memoria disponible en el sistema (por ejemplo, 16 megabytes), de la cual alguna cantidad menor (por ejemplo, 6 megabytes) es de páginas libres, a ceros u otras de baja utilidad.
El planificador 440 de E/S funciona introduciendo el contenido deseado de la memoria usando E/S, pero está restringido por la necesidad de evitar la interferencia con otras E/S realizadas por el sistema. Una manera en que puede lograrse esto es esperar momento de actividad de E/S relativamente ligera para romper la tarea en tamaños de transferencia muy pequeños. Sin embargo, el sistema puede proporcionar este tipo de ausencia de interferencia implementando un esquema de prioridades. Así, el reequilibrador 424 decide, por ejemplo de forma periódica y/o cuando se activa, qué páginas deberían estar en la memoria, en base al uso previsto, a la eficiencia, etcétera, según se describe en lo que antecede, y el planificador de E/S controla las transferencias de E/S para ajustar el contenido de la memoria según se desea, de una manera que intenta minimizar la interferencia con otras operaciones de E/S.
Según se representa en la FIG. 5A, en la gestión tradicional de la memoria, las páginas que han de salir por paginación son añadidas en primer lugar una lista 500 de páginas en espera, que es una simple lista FIFO. Siendo una lista FIFO, todas las páginas añadidas a esta lista 500 son tratadas por igual, sin consideración alguna de su importancia. Esto da como resultados situaciones en las que una página que había sido una página valiosa es reutilizada para otro fin antes que una página que es improbable que jamás vuelva a usarse, pero que sucede que aparece después en la lista 500.
Según un aspecto de la presente invención y como se representa en la FIG. 5B, para mejorar este esquema de una manera que proteja las páginas más valiosas, se proporciona un conjunto o memoria intermedia 502 de páginas priorizadas en espera que toma en consideración los valores relativos de las páginas, según se determina por medio de la puntuación de prioridad basada en el seguimiento. Según se representa en la FIG. 5B, tal conjunto priorizado de páginas en espera comprende subconjuntos 5020-50215, cada uno de los cuales contiene una o más páginas asignadas a una prioridad particular. Obsérvese que en la FIG. 5B solo se muestran algunos de tales subconjuntos (dieciséis); sin embargo, como puede apreciarse fácilmente, es viable cualquier número práctico de tales subconjuntos, y los subconjuntos pueden ser de diversos tamaños. El subconjunto 5020 es un subconjunto no protegido, que actúa como el conjunto existente 500 de páginas en espera de la FIG. 5A; las páginas que no han
35 E03022573 10-11-2011
sido objeto de un seguimiento adecuado pueden ir en esta lista. Cuando es preciso que una página del conjunto priorizado 502 de páginas en espera sea reutilizada para otro fin, la página se toma del subconjunto no vacío de prioridad más baja.
Así, cuando se cierra un fichero o se elimina un conjunto de trabajo, sus páginas van al conjunto 502 de páginas en espera, con una determinación que se realiza en cuanto a en qué subconjunto deberían ponerse las páginas en base a la información adicional extendida de utilización, por ejemplo, almacenadas en la entrada de la base de datos de PFN del gestor de memoria para la página. Además de los campos de la vida de la página y la frecuencia de acceso, hay campos que periten configurar la prioridad de la página en base a información de las bases de datos de escenarios y al contexto actual del sistema.
El hilo con la normativa de gestión de la memoria del sistema reequilibra (por ejemplo, invocando de vez en cuando, como una vez cada segundo, al reequilibrador 424, FIG. 4B) el conjunto priorizado 502 de páginas en espera. Las páginas que fueron puestas en subconjuntos de alta prioridad que no se usan subsiguientemente durante periodos prolongados son migradas a subconjuntos de prioridad menor.
En una realización, ciertas páginas son puestas en el subconjunto 50215 de prioridad más elevada, y esas páginas nunca son reutilizadas para otros fines. Esto proporciona un mecanismo para bloquear estas páginas en memoria incluso bajo presión de la memoria. Obsérvese que este mecanismo es más fuerte que VirtualLock, porque los procesos que pueden utilizarse pueden irse y volver (y, de hecho, pueden tener que ser creados todavía).
Así, en consonancia con la presente invención, estos mecanismos permiten la selección de páginas que es deseable mantener en memoria. Asignando prioridades relativas a los escenarios, las páginas más importantes no son normalmente reutilizadas con otros fines antes que páginas menos importantes. Además, puede realizarse una determinación en cuanto a un conjunto de páginas de valor pequeño o sin valor que pueden ser sustituidas por páginas más valiosas provenientes del disco.
En una implementación, el sistema de gestión de la memoria divide el conjunto de páginas en espera en dieciséis subconjuntos, que usa para separar diferentes clases de páginas y, al ordenador los subconjuntos, para conceder un grado mayor de protección a algunas clases de páginas. Según se ha descrito más arriba, una página que contenga datos útiles (tal como una página de fichero o una página de área de almacenamiento para variables dinámicas para un proceso en ejecución) pero que ya no esté en ningún conjunto 450 de trabajo (FIG. 4B) se coloca en un subconjunto particular en el conjunto priorizado 502 de páginas en espera en base a la preferencia puesta sobre ella por el reequilibrador 424 de memoria y/o en base a su patrón de utilización mientras ha estado en la memoria. Tal como se describe más arriba, pueden usarse lapsos temporales para hacer seguimiento del uso de las páginas, por ejemplo en unidades de diez segundos, junto con un recuento del número de periodos en los que se accedió a la página desde su creación y el último periodo en el que se accedió a la página para evaluar su edad.
Periódicamente, como una vez cada segundo, el reequilibrador 424 recorre una parte del conjunto 502 de páginas en espera y reevalúa en qué subconjunto debería estar una página particular. En general, una página que no se use durante mucho tiempo es movida a un subconjunto apropiado de prioridad menor.
La Tabla 1 muestra cómo determina una implementación el subconjunto apropiado para una página. Si una aplicación necesita memoria y no hay disponible ninguna página libre o de ceros, las páginas del conjunto de páginas en espera serán reutilizadas para otros fines empezando con el subconjunto de índice más bajo:
Tabla 1 – Priorización de subconjuntos en espera
Índice del subconjunto
Descripción
15
Para páginas bloqueadas en memoria (opcional)
14
Páginas a las que se accede en más de 40 periodos
13
Páginas a las que se accede en más de 40 periodos, pero no usadas más de 4 horas
12
Páginas buscadas de antemano por la gestión proactiva de memoria
11
Páginas a las que se accede en 20-40 periodos
10
Páginas a las que se accede en 10-20 periodos
9
Nuevas páginas del conjunto de páginas en espera con datos insuficientes
8
Páginas a las que se accede en 4 periodos o menos, pero no usadas los 5 últimos minutos
40 E03022573 10-11-2011
Índice del subconjunto
Descripción
7
Páginas a las que se accede en 8 periodos o menos, pero no usadas los 10 últimos minutos
6
Páginas a las que se accede en 16 periodos o menos, pero no usadas los 20 últimos minutos
5
Páginas agrupadas buscadas de antemano por la gestión proactiva de memoria
4
Páginas a las que se accede en 2 periodos o menos, pero no usadas en la 1 última hora
3
Páginas a las que se accede en 2 periodos o menos, pero no usadas en las 4 últimas horas
2
Páginas a las que se accede en 16 periodos o menos, pero no usadas en el último día
1
Páginas a las que se accede en 2 periodos o menos, pero no usadas en el último día
0
Páginas a las que no se ha accedido en los 3 últimos días
Además, las páginas del conjunto de trabajo que no se usan durante veinte minutos son desalojadas de la memoria 450 del conjunto de trabajo y son introducidas en el conjunto 502 de páginas en espera para hacerlas disponibles para la gestión priorizada. Tal como se represente en la FIG. 4B, queda un gestor 452 del conjunto de trabajo para gestionar las páginas usadas recientemente, como en los sistemas tradicionales de tiempo compartido, mientras que la gestión del conjunto de páginas en espera por medio del reequilibrador 424 de la memoria gestiona las páginas en periodos de tiempo más prolongados.
Conceptualmente, según indica la Tabla 1, en esta implementación ejemplar, el sistema de gestión de subconjuntos usa categorías basadas en el momento de última utilización y basadas en la frecuencia para la gestión del conjunto de páginas en espera, denominadas criba de tiempos y escalera de reutilización, respectivamente. El concepto de la criba de tiempos (tal como está implementado en los subconjuntos 5020-5028) y de la escalera de reutilización (tal como está implementado en los subconjuntos 50210-50214) es que las páginas que hayan sido usadas recientemente deberían ser reutilizadas con otros fines, saliendo del conjunto 502 de páginas en espera antes que otras páginas, pero que debería concederse protección extra a las páginas que han sido usadas recientemente, aunque no necesariamente muy recientemente. Así, las páginas del conjunto 502 de páginas en espera son organizadas como una serie de subconjuntos, y esas páginas serán movidas periódicamente de los subconjuntos más protegidos a los subconjuntos menos protegidos, o viceversa, en base a su falta de uso o a su uso real en el tiempo. Así, suponiendo que no haya necesidad posterior alguna de una página no utilizada, la página no utilizada se moverá de un subconjunto “no usadas durante 5 minutos”, pasando por un subconjunto “no usadas durante 10 minutos”, a un subconjunto “no usadas durante 30 minutos”, etcétera, hasta que llega al conjunto “no usadas durante 3 días” (o lo que esté más bajo). Sin embargo, las páginas que han sido usadas con alguna frecuencia en al menos algún intervalo razonable se saltarán la porción inicial de la cascada, o pueden ser mantenidas en algún subconjunto un periodo mayor de tiempo.
Lo que logran las categorías de la criba de tiempos y la escalera de reutilización es separar las páginas que han sido usadas solo durante un periodo breve de tiempo de las páginas que han sido usadas más frecuentemente, y luego priorizar estas páginas dentro de los subconjuntos de sus respectivas categorías. La criba de tiempos opera en un gradiente de lo menos usado recientemente, mientras que la escalera de reutilización opera en un gradiente basado en la frecuencia. Por supuesto, no es preciso que los gradientes estén limitados a ningún tiempo o frecuencia particulares y, de hecho, pueden variar en base a las condiciones reales, de modo que las páginas se muevan entre los subconjuntos y se eliminen del conjunto de páginas en espera según sea apropiado para un sistema dado.
Obsérvese que las páginas que se leen del disco por vez primera han sido puestas en subconjuntos del conjunto 502 de páginas en espera. Las clases de páginas incluyen páginas buscadas de antemano (subconjunto 50212), páginas agrupadas con fallos ordinarios (subconjunto 5029) y páginas interpoladas dentro de las búsquedas de antemano por agrupamiento (subconjunto 5025). Estas clases de páginas están priorizadas en ese orden, colocándose las páginas buscadas de antemano entre las páginas de la escalera de reutilización, colocándose las páginas interpoladas buscadas de antemano entre las páginas de la criba y de tiempos y colocándose las páginas con fallos ordinarios entre las páginas de la escalera de utilización y las de la criba de tiempos.
En resumidas cuentas, las páginas de mayor utilidad deseadas en la memoria son llevadas a subconjuntos en espera para protegerlas de la presión normal de la memoria, lo que da como resultado ganancias significativas en el rendimiento con decisiones apropiadas en los escenarios clave de la identificación y la priorización. Por ejemplo, en un sistema de 256 MB se proporcionó una capacidad sistemática de respuesta en muchas operaciones comunes del entorno operativo, de los componentes y las aplicaciones, incluso después de transiciones como el arranque, el
55 E03022573 10-11-2011
cambio rápido de usuario y la presión de memoria de una aplicación grande. Se ha logrado de forma sistemática la reanudación rápida (por ejemplo, de menos de dos segundos) partiendo de un estado en espera sin demoras significativas de E/S de disco. Además, con estos mecanismos, pueden implementarse una normativa de calibrado automático y un conjunto de reglas que puede procesar continuamente la información captada del escenario para determinar qué páginas deberían estar en memoria.
Según se entiende a partir de la anterior descripción, las ganancias en eficiencia de la búsqueda previa justo a tiempo no pueden proporcionar una experiencia de usuario casi instantánea debido al tamaño ingente de los datos requeridos y al gran número de lugares del disco a los que es preciso acceder. En vez de ello, para proporcionar una experiencia significativamente mejorada, la presente invención reconoce que es preciso que las páginas de los escenarios favoritos y frecuentes de un usuario sean llevadas a la memoria por adelantado. Así, una vez que un gestor de normativa haya identificado un conjunto de páginas que deberían ser llevadas a la memoria, esas páginas deberían ser buscadas de antemano, utilizando los periodos de inactividad del disco. Sin embargo, consume muchos recursos poner en cola grandes números (por ejemplo, cientos) de E/S de paginación asíncronas especulativas; por ejemplo, si una aplicación en primer plano precisa algo del disco en ese momento, la solicitud de la aplicación será bloqueada en la cola del disco, lo que dará como resultado, potencialmente, tiempos muy lentos (por ejemplo, segundos) de falta de respuesta. La detección de la inactividad por sí sola no es fiable para evitar tal situación, dado que una aplicación de usuario siempre puede tener un fallo exactamente cuando se decide poner en cola de espera las E/S especulativas en lo que parece ser un disco inactivo.
Según se ha descrito en lo que antecede, la presente invención evita este problema proporcionando soporte para la E/S priorizada, con lo que, si se emite una búsqueda previa especulativa a una cola de disco de baja prioridad, no cause enormes demoras por las solicitudes de paginación procedentes de la aplicación en primer plano, que son puestas en la cola de espera con una prioridad mayor.
Además, si se emiten una a una las E/S de prioridad elevada, pueden ser intercaladas con E/S de búsqueda previa de baja prioridad. El patrón resultante de búsquedas tendrá un impacto significativo en el ancho de banda del disco y perjudicará los tiempos de respuesta. En consecuencia, para limitar verdaderamente la carga general de la E/S de búsqueda previa especulativa, el soporte de la E/S priorizada puede necesitar ser combinado con una detección rápida y de calibrado automático de la inactividad que aprenda de sus fallos y cambie de patrones. Cuando se combina el soporte de E/S con los mecanismos para identificar y priorizar la memoria referenciada, el sistema es capaz de proteger la operación de un proceso contra la interferencia de otros procesos del sistema. Tradicionalmente, esto se intentaba cambiando la prioridad de CPU de los procesos, pero esta priorización no se trasladaba a las colas de disco ni a la gestión de la memoria, al menos no en los sistemas operativos de uso general.
En la FIG. 6 se presenta en general un sistema de restricciones en el que una caja 602 de restricciones restringe las actividades en segundo plano, como los escáneres antivirus, los indexadores de ficheros y las secuencias de órdenes de inicio de sesión, para limitar la interferencia en las aplicaciones de un usuario. La caja 602 de restricciones también puede proteger las aplicaciones multimedia para que no tengan interferencias con el disco y la memoria, que son una causa de fallos en las difusiones en continuo de audio y vídeo, así como garantizar la capacidad de respuesta interactiva a las aplicaciones en primer plano, incluso bajo una intensa carga del sistema.
La integración de las mejoras en la gestión de la memoria con soporte de E/S priorizada proporciona una base para un sistema muy ágil y predecible. Obsérvese que la caja 602 de restricciones por sí sola no proporciona las garantías de recursos de granularidad fina (por ejemplo, por debajo de los 100 ms) que un gestor de recursos más sofisticado podría proveer, pero limita los efectos negativos de la interferencia en los tiempos de respuesta, de modo que el sistema siempre parecerá ágil.
Según se ha descrito en lo que precede, la búsqueda de antemano es un mecanismo con el cual un conjunto de páginas puede ser leído de disco eficientemente introduciéndolo en memoria y poniéndolo en un subconjunto particular en espera. La búsqueda de antemano funciona poniendo E/S de paginación asíncronas en una cola de espera para el conjunto de páginas que faltan en la memoria. En la presente invención, se soporta la búsqueda previa de páginas de directorio y otros metadatos de fichero, así como páginas de ficheros de páginas. Con el mecanismo mejorado de búsquedas previas, la presente invención puede introducir eficientemente en memoria cualquier página identificada en los seguimientos, incluyendo una página de fichero, una página privada (área de proceso de almacenamiento para variables dinámicas, fondo común del núcleo) en un fichero de páginas, una página del registro o metadatos del sistema de ficheros, tales como la MFT (tabla maestra de ficheros) o un directorio.
Como puede verse por lo anterior, los diversos mecanismos proactivos de gestión de la memoria proporcionan una experiencia de usuario muy mejorada para las nuevas máquinas con mucha memoria, incluyendo los dispositivos móviles como las tabletas, así como los ordenadores de sobremesa y los portátiles, garantizando que los datos siempre estarán en memoria por adelantado. Los procedimientos y el mecanismo son proactivos, abordan la gestión global de la memoria (tanto en memoria como en disco) obteniendo información enriquecida y gestionan la memoria en todos los niveles de uso. También se proporciona eficiencia en la E/S, junto con las categorías de E/S, para
50 E03022573 10-11-2011
intentar optimizar las transferencias de E/S mientras se minimiza la interferencia. Un conjunto priorizado de páginas en espera gestionado más inteligentemente facilita el mantenimiento de las páginas más valiosas con respecto a las menos valiosas, teniéndose también en cuenta el concepto de estimación de la utilidad. El seguimiento determina una utilización más óptima de la memoria, junto con los contextos, incluyendo contextos definidos por el usuario, definidos por las aplicaciones y definidos por el sistema. Así, los sistemas y los procedimientos inclusivos de gestión de la memoria de la presente invención proporcionan ventajas significativas y beneficios que se necesitan en la informática contemporánea.
Lo que sigue es una lista de realizaciones preferentes de la invención:
E1. Un procedimiento en un sistema de ordenadores que comprende:
hacer un seguimiento de la utilización de páginas para una pluralidad de páginas;
asociar un valor de prioridad con cada página de la que se hace seguimiento en base a la utilización de seguimiento de esa página; y
priorizar al menos algunas de las páginas que están en memoria con respecto a otras páginas en otro almacenamiento en base al valor de prioridad asociado con cada conjunto de páginas.
E2. El procedimiento de la realización E1 en el que la priorización de al menos algunas de las páginas comprende la selección de una página en el otro almacenamiento en base al valor de prioridad asociado con la página seleccionada y la carga de la página seleccionada en la memoria.
E3. El procedimiento de la realización E1 en el que la priorización de al menos algunas de las páginas comprende la selección de una página en la memoria para transferirla al otro almacenamiento en base al valor de prioridad asociado con la página seleccionada.
E4. El procedimiento de la realización E1 en el que la priorización de al menos algunas de las páginas comprende la selección de una primera página en el otro almacenamiento en base al valor de prioridad asociado con la primera página, la selección de una segunda página en memoria para transferirla al otro almacenamiento en base al valor de prioridad asociado con la segunda página, transferir la segunda página de la memoria al otro almacenamiento y cargar la primera página desde otro almacenamiento a la memoria.
E5. El procedimiento de la realización E1 en el que la priorización de al menos algunas de las páginas comprende la selección de un conjunto de páginas en memoria y la compresión del conjunto de páginas en una cantidad menor de espacio en la memoria.
E6. El procedimiento de la realización E1 en el que el seguimiento de la utilización de las páginas comprende registrar la frecuencia de los datos de utilización de las páginas.
E7. El procedimiento de la realización E1 en el que el seguimiento de la utilización de las páginas comprende registrar los datos de tiempo correspondientes a la última utilización de las páginas.
E8. El procedimiento de la realización E1 en el que el seguimiento de la utilización de las páginas comprende el recuento de la utilización de las páginas en un periodo de tiempo.
E9. El procedimiento de la realización E1 en el que el seguimiento de la utilización de las páginas comprende, el mantenimiento de los datos correspondientes al momento de creación de una página.
E10. El procedimiento de la realización E1 en el que el seguimiento de la utilización de las páginas comprende, el mantenimiento de los datos correspondientes al momento en el que se accedió por última vez a una página.
E11. El procedimiento de la realización E1 en el que la asociación de un valor de prioridad con cada página de la que se hace seguimiento incluye además basar el valor de prioridad para al menos una de las páginas de las que se hace seguimiento en un coste de una transferencia de E/S para esa página.
E12. El procedimiento de la realización E1 que, además, comprende la selección como páginas objeto de seguimiento al menos un subconjunto de páginas disponibles al sistema de ordenadores.
E13. El procedimiento de la realización E12 en el que un subconjunto de páginas comprende páginas correspondientes a un fichero particular.
E14. El procedimiento de la realización E12 en el que un subconjunto de páginas comprende páginas correspondientes a una sección particular en la memoria.
E15. El procedimiento de la realización E12 en el que un subconjunto de páginas comprende páginas
correspondientes a una sección particular en el almacenamiento. 20
E16. El procedimiento de la realización E1 en el que la asociación de un valor de prioridad con cada página objeto de seguimiento comprende la agrupación de las páginas seleccionadas formando un grupo de páginas y el mantenimiento de un valor en asociación con el grupo.
E17. El procedimiento de la realización E1 que, además, la agrupación de las páginas seleccionadas formando un grupo de páginas en base a al menos un criterio.
E18. El procedimiento de la realización E17 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a sus tiempos de último acceso.
E19. El procedimiento de la realización E17 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a patrones de utilización.
E20. El procedimiento de la realización E17 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a la frecuencia de utilización.
E21. El procedimiento de la realización E17 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a una ubicación virtual.
E22. El procedimiento de la realización E17 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a una ubicación física.
E23. El procedimiento de la realización E17 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a las veces que las páginas fueron eliminadas de la memoria.
E24. El procedimiento de la realización E17 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a la eficiencia de la transferencia de E/S.
E25. El procedimiento de la realización E17 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a qué procesos utilizan las páginas.
E26. El procedimiento de la realización E17 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a información de la vida útil de los procesos.
E27. El procedimiento de la realización E17 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a la información de fallos dentro de un periodo.
E28. El procedimiento de la realización E17 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a al menos un evento.
E29. El procedimiento de la realización E17 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a un tiempo de utilización.
E30. El procedimiento de la realización E17 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a procesos específicos de un usuario.
E31. El procedimiento de la realización E17 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a datos de contexto.
E32. El procedimiento de la realización E31 en el que los datos de contexto se reciben de un programa de aplicación.
E33. El procedimiento de la realización E1 en el que el seguimiento de la utilización de las páginas comprende la grabación de datos de contexto en asociación con la utilización de una página.
E34. El procedimiento de la realización E33 en el que la grabación de datos de contexto comprende la grabación de información del estado de la potencia.
E35. El procedimiento de la realización E33 en el que la grabación de datos de contexto comprende la grabación de información del estado del disco.
E36. El procedimiento de la realización E33 en el que la grabación de datos de contexto comprende la grabación de información de eventos.
E37. El procedimiento de la realización E36 en el que la grabación de información de eventos comprende la grabación de un evento relacionado con la memoria.
E38. El procedimiento de la realización E37 en el que la grabación de un evento relacionado con la memoria comprende la grabación de información relacionada con un estado de hibernación del sistema de ordenadores.
E39. El procedimiento de la realización E37 en el que la grabación de un evento relacionado con la memoria comprende la grabación de información relacionada con un estado en espera del sistema de ordenadores.
E40. El procedimiento de la realización E37 en el que la grabación de un evento relacionado con la memoria comprende la grabación de información relacionada con la ejecución de un programa de ordenador en el sistema de ordenadores.
E41. El procedimiento de la realización E1 que, además, comprende el cálculo del valor de prioridad para una página seleccionada en base a una pluralidad de factores de utilización de la página.
E42. El procedimiento de la realización E41 en el que el cálculo del valor de prioridad comprende la combinación matemática de los datos de frecuencia de utilización de la página con la información de la última utilización de la página para la página seleccionada.
E43. El procedimiento de la realización E41 en el que el cálculo del valor de prioridad en base a una pluralidad de factores de utilización de la página comprende la ponderación de un factor de utilización de la página con respecto a otro factor.
E44. El procedimiento de la realización E1 que, además, comprende la clasificación de las páginas en base a sus respectivos datos de valor y en el que la priorización de al menos algunas de las páginas que están en la memoria comprende la búsqueda de antemano de páginas, introduciéndolas en la memoria desde otro almacenamiento en un orden de búsqueda de antemano basado en la clasificación.
E45. El procedimiento de la realización E1 en el que la priorización de al menos algunas de las páginas comprende la lectura de páginas seleccionadas de otro almacenamiento, introduciéndolas en el conjunto en memoria de páginas en espera en base al valor de prioridad asociado con cada página seleccionada.
E46. El procedimiento de la realización E45 en el que el conjunto de páginas en espera comprende una pluralidad de subconjuntos y que, además, comprende mover de manera lógica una página de un subconjunto del conjunto de páginas en espera a otro subconjunto en base a datos de utilización detectados para la página.
E47. El procedimiento de la realización E46 en el que mover de manera lógica una página de un subconjunto del conjunto de páginas en espera a otro subconjunto comprende mover la página de un subconjunto basado en la frecuencia a un subconjunto basado en un momento de última utilización.
E48. El procedimiento de la realización E46 en el que mover de manera lógica una página de un subconjunto del conjunto de páginas en espera a otro subconjunto comprende mover la página de un subconjunto basado en un momento de última utilización a un subconjunto basado en la frecuencia.
E49. El procedimiento de la realización E1 que, además, comprende guardar en un almacenamiento persistente los valores asociados con al menos algunas de las páginas.
E50. El procedimiento de la realización E1 que, además, comprende guardar en un almacenamiento persistente los datos correspondientes a la utilización de las páginas objeto de seguimiento de al menos algunas de las páginas.
E51. El procedimiento de la realización E1 en el que el seguimiento de la utilización de las páginas comprende la evaluación de la información de acceso a las páginas.
E52. El procedimiento de la realización E51 en el que la evaluación de la información de acceso a las páginas comprende la lectura de bits de acceso de entrada de la tabla de páginas.
E53. El procedimiento de la realización E51 en el que la evaluación de la información de acceso a las páginas comprende la evaluación de cuándo se pone a cero la información de acceso a las páginas.
E54. El procedimiento de la realización E51 en el que la evaluación de la información de acceso a las páginas comprende la determinación de una tasa de puesta a cero de la información de acceso a las páginas.
E55. El procedimiento de la realización E54 que, además, comprende el registro de la tasa.
E56. El procedimiento de la realización E51 en el que la evaluación de la información de acceso a las páginas comprende la determinación de una tasa a la que se accede a una página.
E57. El procedimiento de la realización E56 que, además, comprende el registro de la tasa.
E58. El procedimiento de la realización E51 en el que la evaluación de la información de acceso a las 5 páginas comprende la detección de errores de paginación.
E59. El procedimiento de la realización E58 en el que la detección de errores de paginación incluye la detección de fallos permanentes.
E60. El procedimiento de la realización E58 en el que la detección de errores de paginación incluye la detección de fallos transitorios o de transición.
10 E61. El procedimiento de la realización E1 en el que el seguimiento de la utilización de las páginas comprende la detección de solicitudes de lectura y escritura en fichero.
E62. El procedimiento de la realización E1 en el que el seguimiento de la utilización de las páginas comprende la lectura de la información del conjunto de trabajo del proceso.
E63. El procedimiento de la realización E1 en el que el seguimiento de la utilización de las páginas 15 comprende la grabación de los datos cuando las páginas son transferidas sacándolas de la memoria.
E64. El procedimiento de la realización E1 en el que el seguimiento de la utilización de las páginas comprende la grabación de los datos cuando las páginas son eliminadas de los conjuntos de trabajo.
E65. El procedimiento de la realización E1 en el que el seguimiento de la utilización de las páginas comprende la grabación de datos en respuesta a un evento o un contexto.
20 E66. El procedimiento de la realización E65 en el que los datos se graban en respuesta a una tarea conmutada.
E67. El procedimiento de la realización E65 en el que los datos se graban en respuesta a una ventana creada.
E68. El procedimiento de la realización E65 en el que los datos se graban en respuesta a una acción 25 detectada.
E69. El procedimiento de la realización E68 en el que la acción detectada comprende un cambio en la ventana que tiene el foco.
E70. El procedimiento de la realización E68 en el que la acción detectada comprende un evento de entrada de usuario.
30 E71. El procedimiento de la realización E65 en el que los datos se graban en respuesta a un evento del sistema de ordenadores relacionado con la hibernación.
E72. El procedimiento de la realización E65 en el que los datos se graban en respuesta a un evento del sistema de ordenadores relacionado con un estado de espera.
E73. El procedimiento de la realización E65 en el que los datos se graban en respuesta a un evento del 35 sistema de ordenadores relacionado con el arranque del sistema.
E74. El procedimiento de la realización E65 en el que los datos se graban en respuesta al lanzamiento de un programa.
E75. El procedimiento de la realización E65 en el que los datos se graban en respuesta a la terminación de un programa.
40 E76. El procedimiento de la realización E65 en el que los datos se graban en respuesta a un inicio de sesión de un usuario.
E77. El procedimiento de la realización E65 en el que los datos se graban en respuesta a un evento de conexión a la red.
E78. El procedimiento de la realización E65 en el que los datos se graban en respuesta a un evento 45 relacionado con la reproducción multimedia.
E79. El procedimiento de la realización E65 en el que los datos se graban en respuesta a un contexto especificado por un programa.
E80. El procedimiento de la realización E1 en el que la priorización de al menos algunas de las páginas comprende la selección de una página en el otro almacenamiento en base al valor de prioridad asociado con la página seleccionada, y la carga de la página seleccionada a memoria en una operación en segundo plano.
E81. El procedimiento de la realización E80 en el que la carga de la página seleccionada a memoria en una operación en segundo plano comprende la obtención de datos de prioridad inactiva.
E82. El procedimiento de la realización E80 en el que la carga de la página seleccionada a la memoria en una operación de segundo plano comprende la observación de patrones de E/S para determinar un momento de transferencia.
E83. El procedimiento de la realización E82 en el que el momento de transferencia se determina en base a la probabilidad de que la transferencia no se solape con una transferencia de E/S en primer plano.
E84. El procedimiento de la realización E82 en el que el momento de transferencia se determina en base a la probabilidad de que la transferencia no provoque una búsqueda que ralentice una transferencia de E/S en primer plano.
E85. El procedimiento de la realización E82 en el que el momento de transferencia se programa en base a la utilización del procesador.
E86. El procedimiento de la realización E80 en el que la carga de la página selecciona a memoria en una operación en segundo plano comprende la generación de un paquete falso para evitar una inversión de prioridades.
E87. El procedimiento de la realización E80 en el que la carga de la página selecciona a memoria en una operación en segundo plano comprende determinar que el sistema está inactivo en base a la entrada actual del usuario, a la utilización actual del procesador y a la utilización actual del disco.
E88. El procedimiento de la realización E1 en el que el seguimiento de la utilización de las páginas comprende grabar los datos de utilización de páginas en un registro.
E89. El procedimiento de la realización E1 en el que el seguimiento de la utilización de las páginas comprende la fusión de los datos actuales de utilización de páginas con los datos previos de utilización de páginas.
E90. El procedimiento de la realización E1 en el que los datos previos de utilización de páginas comprenden datos obtenidos de la grabación de la utilización de páginas según se entrena en al menos otro sistema de ordenadores.
E91. El procedimiento de la realización E1 en el que los datos previos de utilización de páginas comprenden datos de páginas construidos de antemano agrupados con otros datos de páginas.
E92. Un medio legible por ordenador que tiene instrucciones ejecutables por ordenador para llevar a cabo el procedimiento de la realización E1.
E93. Un sistema en un entorno informático que comprende:
un mecanismo de seguimiento que hace seguimiento de la utilización de páginas de memoria para una pluralidad de páginas;
un mecanismo de priorización que asocia una puntuación con cada página de la que se hace seguimiento en base, al menos en parte, a la utilización de páginas de memoria objeto de seguimiento para esa página;
un reequilibrador que determina qué paginas están en memoria en base a la puntuación asociada con cada página de la que se hace seguimiento;
un observador que genera eventos relacionados con la memoria; y
un mecanismo de actualización que recibe eventos del observador y activa el reequilibrador.
E94. El sistema de la realización E93 en el que uno de los eventos comprende a un evento de conmutación de tareas.
E95. El sistema de la realización E93 en el que uno de los eventos comprende un evento correspondiente a la creación de una ventana.
E96. El sistema de la realización E93 en el que uno de los eventos comprende un evento correspondiente al proporcionamiento de un diálogo.
5 E97. El sistema de la realización E93 en el que uno de los eventos comprende un evento correspondiente a un cambio de foco de la ventana.
E98. El sistema de la realización E93 en el que uno de los eventos comprende un evento de entrada de usuario.
E99. El sistema de la realización E93 en el que uno de los eventos comprende un evento correspondiente 10 al lanzamiento de un programa.
E100. El sistema de la realización E93 en el que uno de los eventos comprende un evento correspondiente a la terminación de un programa.
E101. El sistema de la realización E93 en el que uno de los eventos comprende un evento correspondiente a un arranque del sistema.
15 E102. El sistema de la realización E93 en el que uno de los eventos comprende un evento de inicio de sesión.
E103. El sistema de la realización E93 en el que uno de los eventos comprende un evento correspondiente a una parada del sistema.
E104. El sistema de la realización E93 en el que uno de los eventos comprende un evento correspondiente 20 a la entrada en un modo de espera.
E105. El sistema de la realización E93 en el que uno de los eventos comprende un evento correspondiente a una reanudación tras un modo en espera.
E106. El sistema de la realización E93 en el que uno de los eventos comprende un evento correspondiente a la entrada en un modo de hibernación.
25 E107. El sistema de la realización E93 en el que uno de los eventos comprende un evento correspondiente a una reanudación tras un modo de hibernación.
E108. El sistema de la realización E93 en el que uno de los eventos comprende un evento correspondiente a que un usuario diferente opere el sistema.
E109. El sistema de la realización E93 en el que uno de los eventos comprende un evento correspondiente 30 al comienzo de una reproducción multimedia.
E110. El sistema de la realización E93 en el que uno de los eventos comprende un evento correspondiente a la terminación del contenido multimedia que se estaba reproduciendo.
E111. El sistema de la realización E93 en el que uno de los eventos comprende un evento correspondiente a un cronocorrimiento de vídeo.
35 E112. El sistema de la realización E93 en el que uno de los eventos comprende un evento correspondiente a una conexión remota al sistema.
E113. El sistema de la realización E93 en el que uno de los eventos comprende un evento correspondiente a un contexto especificado por programa.
E114. Un procedimiento implementador por ordenador que comprende:
40 identificar páginas en memoria y páginas mantenidas en un dispositivo secundario de almacenamiento en base a datos de valor de las páginas asociados con cada página identificada;
poblar la memoria con al menos algunas páginas provenientes del dispositivo secundario de almacenamiento, comprendiendo la sustitución de al menos algunas de las páginas en memoria que tienen valores relativamente menores con al menos algunas páginas provenientes del dispositivo
45 secundario de almacenamiento que tienen valores relativamente mayores, antes de que se reciba una demanda de al menos algunas de las páginas que tienen valores más altos; y
agrupar las páginas seleccionadas formando un grupo de páginas, y mantener los datos de valor de la página en asociación con el grupo.
E115. El procedimiento de la realización E114 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a su momento de último acceso.
5
E116. El procedimiento de la realización E114 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a patrones de utilización.
E117. El procedimiento de la realización E114 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a la frecuencia de utilización.
10
E118. El procedimiento de la realización E114 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a una ubicación virtual.
E119. El procedimiento de la realización E114 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a un momento de utilización.
E120. El procedimiento de la realización E114 en el que el momento de utilización comprende información del día de la semana.
15
E121. El procedimiento de la realización E114 en el que el momento de utilización comprende información del momento del día.
E122. El procedimiento de la realización E114 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a una ubicación física.
20
E123. El procedimiento de la realización E114 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a las veces que las páginas fueron eliminadas de la memoria.
E124. El procedimiento de la realización E114 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a la eficiencia de la transferencia de E/S.
25
E125. El procedimiento de la realización E114 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a qué procesos utilizan las páginas.
E126. El procedimiento de la realización E114 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a información de la vida útil de los procesos.
E127. El procedimiento de la realización E114 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a información de errores.
30
E128. El procedimiento de la realización E114 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a al menos un evento.
E129. El procedimiento de la realización E114 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a los procesos de un usuario específico.
35
E130. El procedimiento de la realización E114 en el que la agrupación de las páginas seleccionadas comprende la agrupación de las páginas en base a datos de contexto.
E131. El procedimiento de la realización E130 que, además, comprende la grabación de datos de contexto en asociación con la utilización de una página.
E132. El procedimiento de la realización E131 en el que la grabación de datos de contexto comprende la grabación de información del estado de la potencia.
40
E133. El procedimiento de la realización E131 en el que la grabación de datos de contexto comprende la grabación de información del estado del disco.
E134. El procedimiento de la realización E131 en el que la grabación de datos de contexto comprende la grabación de información de eventos.
E135. Un procedimiento implementado por ordenador que comprende:
45
la observación de la necesidad de páginas de memoria;
la determinación de valores para las páginas en base a la necesidad observada; y
2
226
la carga de al menos parte de la memoria en base a los valores de las páginas.
E136. El procedimiento de la realización E135 en el que la carga de al menos parte de la memoria comprende la selección de páginas en base a los valores.
E137. El procedimiento de la realización E135 en el que la carga de al menos parte de la memoria 5 comprende la carga de toda la memoria.
E138. El procedimiento de la realización E135 en el que la observación de la necesidad de páginas comprende hacer un seguimiento de la utilización real de las páginas.
E139. El procedimiento de la realización E135 en el que la observación de la necesidad de páginas comprende un entrenamiento para determinar las páginas que es probable que se necesiten.
10 E140. El procedimiento de la realización E139 en el que el entrenamiento para determinar las páginas que es probable que se necesiten incluye la simulación de la utilización de páginas.
E141. El procedimiento de la realización E139 en el que el entrenamiento para determinar las páginas que es probable que se necesiten incluye el análisis de código.
E142. El procedimiento de la realización E139 en el que el entrenamiento para determinar las páginas que 15 es probable que se necesiten incluye la ejecución de programas en un sistema de ordenadores de entrenamiento y el uso de los valores en otro sistema de ordenadores.
E143. El procedimiento de la realización E135 que, además, comprende la construcción de un repositorio persistente de información que incluye los valores, y el almacenamiento del repositorio persistente en un fichero.
20 E144. El procedimiento de la realización E135 en el que la carga de al menos parte de la memoria comprende la carga de la memoria que está libre.
E145. El procedimiento de la realización E135 que, además, comprende la identificación de páginas de bajo valor en memoria, en el que la carga de al menos parte de la memoria comprende la sustitución de al menos algunas de las páginas de bajo valor.
25 E146. Un medio legible por ordenador que tiene instrucciones ejecutables por ordenador para llevar a cabo el procedimiento de la realización E145.
E147. Un procedimiento implementado por ordenador que comprende:
la identificación de páginas de valor bajo; y
el mantenimiento en la memoria de información de gestión de la memoria, incluyendo información sobre 30 las páginas de valor bajo.
E148. El procedimiento de la realización E147 en el que el mantenimiento de la información de gestión de la memoria comprende el mantenimiento de información enriquecida de la utilización, comprendiendo al menos una entre información de patrón, frecuencia, agrupamiento y contexto.
E149. El procedimiento de la realización E147 en el que el mantenimiento de la información de gestión de la 35 memoria incluye el mantenimiento de datos para páginas que han estado en la memoria pero ya no lo están, y para páginas que no han estado en la memoria.
E150. El procedimiento de la realización E147 en el que el mantenimiento de la información de gestión de la memoria comprende el mantenimiento de información enriquecida de la utilización, comprendiendo al menos una entre información de patrón, frecuencia, agrupamiento y contexto, y el mantenimiento de
40 información enriquecida de la utilización para páginas que han estado en la memoria pero ya no lo están, y para páginas que no han estado en la memoria.
E151. El procedimiento de la realización E150 en el que el mantenimiento de la información enriquecida de la utilización comprende el mantenimiento de entradas de conjuntos de trabajo que contienen información enriquecida para páginas que ya no están en memoria pero que son válidas en el espacio de
45 direccionamiento para el conjunto de trabajo.
E152. El procedimiento de la realización E150 en el que el mantenimiento de la información enriquecida de la utilización comprende la asignación de descriptores y entradas de páginas físicas para mantener la información enriquecida de la utilización para páginas que salen de la memoria.
E153. El procedimiento de la realización E147 en el que el mantenimiento de la información de la gestión de la memoria incluye el mantenimiento de datos estadísticos en la memoria a partir de los cuales puede derivarse una información enriquecida de la utilización que comprende al menos una de información de patrón, frecuencia, agrupamiento y contexto.
E154. El procedimiento de la realización E153 en el que el mantenimiento de las estadísticas comprende el mantenimiento de las entradas por página.
E155. El procedimiento de la realización E153 en el que el mantenimiento de las estadísticas comprende el mantenimiento de entradas para grupos de páginas.
E156. El procedimiento de la realización E153 en el que el mantenimiento de las estadísticas comprende el mantenimiento de entradas para ficheros.
E157. El procedimiento de la realización E153 en el que el mantenimiento de las estadísticas comprende el mantenimiento de datos de estado en al menos una página.
E158. El procedimiento de la realización E157 en el que los datos de estado incluyen datos sobre cuándo se eliminó una página de la memoria.
E159. El procedimiento de la realización E157 en el que los datos de estado incluyen datos sobre cuándo se cargó una página en la memoria.
E160. El procedimiento de la realización E147 que, además, comprende la utilización de la información de gestión de la memoria para priorizar páginas de la memoria en subconjuntos.
E161. El procedimiento de la realización E147 que, además, comprende la utilización de la información de gestión de la memoria para proteger las páginas más valiosas contra la eventualidad de que se utilicen para otro fin.
E162. El procedimiento de la realización E147 que, además, comprende volver a dar una prioridad a las páginas de la memoria en base a la información enriquecida de la utilización, que comprende al menos una entre información de patrón, frecuencia, agrupamiento y contexto.
E163. Un medio legible por ordenador que tiene instrucciones ejecutables por ordenador para llevar a cabo el procedimiento de la realización E147.
E164. Un procedimiento implementado por ordenador que comprende:
la captura de información enriquecida sobre la utilización de la memoria, comprendiendo la información enriquecida al menos uno de datos de patrón, frecuencia, contexto y agrupamiento, y
hacer persistente la información enriquecida en un fichero.
E165. El procedimiento de la realización E164 en el que la captura de información enriquecida comprende el muestreo de la utilización real de las páginas.
E166. El procedimiento de la realización E164 en el que la captura de información enriquecida comprende la realización de un seguimiento de la utilización real de las páginas.
E167. Un medio legible por ordenador que tiene instrucciones ejecutables por ordenador para llevar a cabo el procedimiento de la realización E164.
E168. A procedimiento en un entorno informático que tiene una memoria y un almacenamiento secundario que comprende:
la recepción de un evento relacionado con el contexto; y
la priorización de la memoria en respuesta al evento, de modo que las páginas que es más probable que sean usadas en el contexto tienen un valor mayor con respecto a las páginas que es menos probable que sean usadas.
E169. El procedimiento de la realización E168 en el que la priorización de la memoria comprende el cambio de un subconjunto en el que se clasifica una página de memoria.
E170. El procedimiento de la realización E168 en el que la priorización de la memoria comprende la carga en la memoria de al menos una página proveniente del almacenamiento secundario.
E171. El procedimiento de la realización E168 en el que la priorización de la memoria comprende la sustitución de páginas de la memoria con páginas provenientes del almacenamiento secundario.
Aunque la invención es susceptible de diversas modificaciones y de construcciones alternativas, ciertas realizaciones ilustradas de la misma han sido mostradas en los dibujos y han sido descritas con detalle en lo que antecede. Sin embargo, debería entenderse que no hay intención alguna de limitar la invención a las formas específicas dadas a conocer, sino que, al contrario, la invención ha de abarcar todas las modificaciones, construcciones alternativas y equivalentes comprendidas dentro del alcance de la invención.

Claims (82)

  1. REIVINDICACIONES
    1. Un sistema en un entorno informático que comprende:
    un mecanismo (402) de seguimiento que hace seguimiento de la utilización de páginas de memoria y registra los datos de contexto, correspondiendo los datos de contexto a un estado del sistema (110) de 5 ordenador en asociación con la utilización de una página, para una pluralidad de páginas;
    un mecanismo (426) de priorización que asocia una puntuación con cada página de la que se hace seguimiento en base a los datos de contexto proporcionados por dicho mecanismo (402) de seguimiento para esa página; y
    un reequilibrador (424) que determina qué paginas están en memoria (202) en base a la puntuación
    10 asociada con cada página de la que se hace seguimiento sustituyendo al menos algunas de las páginas en memoria que son de valor relativamente menor con al menos algunas páginas provenientes de un dispositivo secundario (204) de almacenamiento que son de valor relativamente mayor, en el que el valor de una página está determinado por su puntuación.
  2. 2. El sistema de la reivindicación 1 en el que el reequilibrador (424) transfiere una página seleccionada,
    15 sacándola de la memoria (202), a otro dispositivo de almacenamiento en base a la puntuación de la página seleccionada.
  3. 3.
    El sistema de la reivindicación 1 en el que el otro dispositivo de almacenamiento comprende memoria (302) no volátil de acceso aleatorio.
  4. 4.
    El sistema de la reivindicación 1 en el que el otro dispositivo de almacenamiento comprende un disco (204).
    20 5. El sistema de la reivindicación 1 en el que el reequilibrador (424) busca de antemano una página seleccionada y la introduce en la memoria (202) a partir de otro dispositivo de almacenamiento en base a la puntuación de la página seleccionada.
  5. 6. El sistema de la reivindicación 1 que, además, comprende un mecanismo de registro conectado al mecanismo
    (402) de seguimiento, estando configurado el mecanismo de registro para disponer la salida del mecanismo 25 (402) de seguimiento a un registro formateado.
  6. 7.
    El sistema de la reivindicación 1 en el que el registro formateado incluye una cabecera y una tabla de entradas.
  7. 8.
    El sistema de la reivindicación 7 en el que la cabecera incluye información de contexto asociada con la utilización de páginas de memoria.
  8. 9. El sistema de la reivindicación 7 en el que la cabecera incluye información de estado de memoria asociada con 30 la utilización de páginas de memoria.
  9. 10.
    El sistema de la reivindicación 7 en el que la cabecera incluye información de tiempo asociada con la utilización de páginas de memoria.
  10. 11.
    El sistema de la reivindicación 7 en el que cada entrada incluye datos de fuente y de desplazamiento para un fichero o un espacio de direcciones de proceso.
    35 12. El sistema de la reivindicación 7 en el que cada entrada incluye además datos indicativos de la página que fue leída del disco (204).
  11. 13. El sistema de la reivindicación 6 que, además, comprende un integrador (412) que integra en los datos integrados el registro formateado con datos obtenidos previamente.
  12. 14. El sistema de la reivindicación 13 en el que el integrador (412) conserva los datos integrados en una base de 40 datos de información de páginas.
  13. 15.
    El sistema de la reivindicación 14 que, además, comprende un servicio de extracción que desarrolla al menos un plan de escenario en base a los datos integrados en la base de datos de información de páginas.
  14. 16.
    El sistema de la reivindicación 15 en el que el mecanismo (426) de priorización accede a un plan de escenario para asociar la puntuación con cada página de la que se hace seguimiento.
    45 17. El sistema de la reivindicación 1 en el que el mecanismo (402) de seguimiento registra la frecuencia de los datos de utilización de páginas para cada página de la pluralidad de páginas.
  15. 18.
    El sistema de la reivindicación 1 en el que el mecanismo (402) de seguimiento registra los datos basados en tiempo correspondientes a un momento de la última utilización de una página.
    30
  16. 19.
    El sistema de la reivindicación 1 en el que el mecanismo (426) de priorización clasifica las páginas entre sí en base a sus puntuaciones respectivas y el reequilibrador (424) busca de antemano páginas a la memoria (202) en un orden de búsqueda previa en base a la clasificación.
  17. 20.
    El sistema de la reivindicación 1 que, además, comprende un conjunto de páginas en espera en memoria
    5 (202), en el que el reequilibrador (424) lee páginas seleccionada del otro almacenamiento introduciéndolas en el conjunto de páginas en espera.
  18. 21. El sistema de la reivindicación 20 en el que el conjunto de páginas en espera comprende una pluralidad de subconjuntos y en el que el reequilibrador (424) mueve de forma lógica una página de un subconjunto del conjunto de páginas en espera a otro subconjunto en base a los datos de utilización detectados para la página.
    10 22. El sistema de la reivindicación 21 en el que mover de forma lógica una página de un subconjunto del conjunto de páginas en espera a otro subconjunto comprende mover la página entre un subconjunto basado en el momento de la última utilización y un subconjunto basado en la frecuencia.
  19. 23. El sistema de la reivindicación 1 que, además, comprende un observador (430) que genera eventos relacionados con la memoria.
    15 24. El sistema de la reivindicación 23 que, además, comprende un mecanismo de actualización que recibe eventos del observador (430) y activa el reequilibrador (424).
  20. 25. El sistema de la reivindicación 24 en el que uno de los eventos comprende al menos uno entre el conjunto que comprende:
    un evento de conmutación de tareas, un evento correspondiente a la creación de una ventana, un evento
    20 correspondiente al proporcionamiento de un diálogo, un evento correspondiente a un cambio de foco de ventana, un evento de entrada de usuario, un evento correspondiente al lanzamiento de un programa, un evento correspondiente a la terminación de un programa, un evento correspondiente a un arranque del sistema, un evento de inicio de sesión, un evento correspondiente al apagado del sistema, un evento correspondiente a la entrada en modo de espera, un evento correspondiente a una reanudación tras un
    25 modo en espera, un evento correspondiente a la entrada en un modo de hibernación, un evento correspondiente a una reanudación tras un modo de hibernación, un evento correspondiente a que un usuario diferente opere el sistema, un evento correspondiente al inicio de una reproducción multimedia, un evento correspondiente a la terminación del contenido multimedia que se estaba reproduciendo, un evento correspondiente a un cronocorrimiento del vídeo, un evento correspondiente a una conexión remota al
    30 sistema y un evento correspondiente a un contexto especificado por programa.
  21. 26.
    El sistema de la reivindicación 23 que, además, comprende un mecanismo de actualización que recibe eventos del observador (430) y proporciona datos de estado al mecanismo (402) de seguimiento.
  22. 27.
    El sistema de la reivindicación 26 en el que los datos de estado incluyen solicitudes relativas a ficheros.
  23. 28. El sistema de la reivindicación 26 en el que los datos de estado incluyen datos relativos a la utilización de la 35 memoria por parte de un proceso.
  24. 29.
    El sistema de la reivindicación 23 que, además, comprende un mecanismo planificador (440) de E/S conectado al reequilibrador (424) para transferir páginas entre la memoria (202) y un almacenamiento secundario.
  25. 30.
    El sistema de la reivindicación 29 en el que el mecanismo planificador (440) de E/S transfiere las páginas en una operación en segundo plano.
    40 31. El sistema de la reivindicación 30 en el que el mecanismo planificador (440) de E/S observa patrones de E/S para determinar un momento de transferencia que probablemente no interfiera en la transferencia de E/S de primer plano.
  26. 32. El sistema de la reivindicación 30 en el que el mecanismo planificador (440) de E/S determina un momento de
    transferencia que probablemente no cause una búsqueda que ralentice una transferencia de E/S en primer 45 plano.
  27. 33.
    El sistema de la reivindicación 30 en el que el planificador (440) de E/S genera un paquete falso para evitar una inversión de prioridades.
  28. 34.
    El sistema de la reivindicación 30 en el que el planificador (440) de E/S evalúa la utilización actual del procesador y la utilización actual del disco para determinar un estado de cálculo inactivo.
    50 35. El sistema de la reivindicación 1 en el que el planificador (440) de E/S transfiere las páginas en una operación de primer plano.
  29. 36. Un procedimiento implementado por ordenador que comprende:
    hacer un seguimiento de la utilización de páginas de memoria y registrar los datos de contexto, correspondiendo los datos de contexto a un estado de un sistema (110) de ordenador en asociación con la utilización de una página, para una pluralidad de páginas;
    5 asociar una puntuación con cada página de la que se hace seguimiento en base a los datos de contexto para esa página;
    identificar páginas en una memoria (202) y páginas mantenidas en un dispositivo secundario (204) de almacenamiento en base datos de valor de las páginas asociadas con cada página identificada, determinándose por las puntuaciones los datos de valor de las páginas; y
    10 poblar la memoria con al menos algunas páginas provenientes del dispositivo secundario de memoria, comprendiendo la sustitución de al menos algunas de las páginas en memoria que son de valor relativamente menor con al menos algunas páginas provenientes del dispositivo secundario de almacenamiento que son de valor relativamente mayor.
  30. 37. El procedimiento de la reivindicación 36 en el que la identificación de los valores de identificación para las
    15 páginas en una memoria (202) y los valores para las páginas mantenidas en un dispositivo secundario de almacenamiento comprende la identificación de páginas con valor bajo y páginas con valor alto.
  31. 38. El procedimiento de la reivindicación 36 que, además, comprime al menos algunas de las páginas en memoria
    (202) que tienen valores relativamente bajos para proporcionar espacio para al menos algunas páginas
    provenientes del dispositivo secundario de almacenamiento que tienen valores relativamente altos antes de 20 que se reciba una demanda de al menos algunas de las páginas que tienen valores más altos.
  32. 39.
    El procedimiento de la reivindicación 36 que, además, comprende la determinación de los datos de valor de las páginas.
  33. 40.
    El procedimiento de la reivindicación 39 en el que la determinación de los datos de valor de las páginas comprende leer de un fichero al menos parte de los datos de valor de las páginas.
    25 41. El procedimiento de la reivindicación 40 en el que el fichero comprende datos de entrenamiento obtenidos de la medición de la utilización de páginas en otro sistema (110) de ordenador.
  34. 42. El procedimiento de la reivindicación 39 en el que la determinación de los datos de valor de las páginas comprende hacer un seguimiento de la utilización de las páginas para determinar al menos parte de los datos de valor de las páginas.
    30 43. El procedimiento de la reivindicación 42 en el que el seguimiento de la utilización de las páginas comprende hacer un seguimiento de los patrones de acceso.
  35. 44. El procedimiento de la reivindicación 42 en el que el seguimiento de la utilización de las páginas comprende hacer un seguimiento de la frecuencia de acceso.
  36. 45. El procedimiento de la reivindicación 42 en el que el seguimiento de la utilización de las páginas comprende 35 registrar los datos de tiempo correspondientes a la última utilización de las páginas.
  37. 46.
    El procedimiento de la reivindicación 42 en el que el seguimiento de la utilización de las páginas comprende el recuento de la utilización de las páginas en un periodo de tiempo.
  38. 47.
    El procedimiento de la reivindicación 42 en el que el seguimiento de la utilización de las páginas comprende el mantenimiento de los datos correspondientes al momento de creación de una página.
    40 48. El procedimiento de la reivindicación 42 que, además, comprende guardar, en un almacenamiento persistente, datos correspondientes a la utilización de las páginas de las que se hace seguimiento para al menos algunas de las páginas.
  39. 49. El procedimiento de la reivindicación 42 en el que el seguimiento de la utilización de las páginas comprende la evaluación de la información de acceso a las páginas.
    45 50. El procedimiento de la reivindicación 49 en el que la evaluación de la información de acceso a las páginas comprende la lectura de bits de acceso de entrada de la tabla de páginas.
  40. 51.
    El procedimiento de la reivindicación 49 en el que la evaluación de la información de acceso a las páginas comprende evaluar cuándo se pone a cero la información de acceso a las páginas.
  41. 52.
    El procedimiento de la reivindicación 49 en el que la evaluación de la información de acceso a las páginas comprende la determinación de una tasa de puesta a cero de la información de acceso a las páginas.
  42. 53.
    El procedimiento de la reivindicación 52 que, además, comprende el registro de la tasa.
  43. 54.
    El procedimiento de la reivindicación 49 en el que la evaluación de la información de acceso a las páginas 5 comprende la determinación de una tasa a la que se accede a una página.
  44. 55.
    El procedimiento de la reivindicación 54 que, además, comprende el registro de la tasa.
  45. 56.
    El procedimiento de la reivindicación 49 en el que la evaluación de la información de acceso a las páginas comprende la detección de errores de paginación.
  46. 57.
    El procedimiento de la reivindicación 42 en el que el seguimiento de la utilización de las páginas comprende la 10 detección de solicitudes de lectura y escritura en fichero.
  47. 58. El procedimiento de la reivindicación 42 en el que el seguimiento de la utilización de las páginas comprende al menos uno de:
    leer la información del conjunto de trabajo del proceso, grabar los datos cuando las páginas son transferidas sacándolas de la memoria (202) y grabar los datos cuando las páginas son eliminadas de los 15 conjuntos de trabajo.
  48. 59.
    El procedimiento de la reivindicación 42 en el que el seguimiento de la utilización de las páginas comprende la grabación de datos en respuesta a un evento o un contexto.
  49. 60.
    El procedimiento de la reivindicación 59 en el que se graban datos en respuesta a al menos uno de: una tarea conmutada, una ventana creada, una acción detectada, un cambio en el que la ventana tiene el foco, un evento
    20 de entrada de usuario, un evento del sistema (110) de ordenador relacionado con la hibernación, un evento de entrada de usuario, un evento del sistema (110) de ordenador relacionado con un estado de espera, un evento de entrada de usuario, un evento del sistema (110) de ordenador relacionado con un arranque del sistema, un lanzamiento de programa, una terminación de programa, un cambio en un usuario del sistema, un inicio de sesión y un evento de conexión a la red, un evento relacionado con la reproducción multimedia.
    25 61. El procedimiento de la reivindicación 60 en el que los datos se registran en respuesta a un contexto especificado por un programa.
  50. 62.
    El procedimiento de la reivindicación 39 en el que la determinación de los datos de valor de las páginas incluye la determinación de un coste de una transferencia de E/S para al menos una página.
  51. 63.
    El procedimiento de la reivindicación 39 en el que la determinación de los datos de valor de las páginas incluye
    30 el cálculo del valor de prioridad para una página seleccionada en base a una pluralidad de factores de utilización de la página.
  52. 64. El procedimiento de la reivindicación 63 en el que el cálculo del valor de prioridad en base a una pluralidad de factores de utilización de la página comprende la ponderación de un factor de utilización de la página con respecto a otro factor.
    35 65. El procedimiento de la reivindicación 39 en el que la determinación de los datos de valor de las páginas incluye la combinación matemática de los datos de frecuencia de utilización de la página con la información de la última utilización de la página para la página seleccionada.
  53. 66. El procedimiento de la reivindicación 39 en el que la identificación de páginas en una memoria (202) comprende la selección de un subconjunto de páginas disponibles para el sistema (110) de ordenador.
    40 67. El procedimiento de la reivindicación 66 en el que el subconjunto de páginas comprende páginas correspondientes a un fichero particular.
  54. 68. El procedimiento de la reivindicación 67 en el que el subconjunto de páginas comprende páginas correspondientes a una sección particular en la memoria (202).
  55. 69.
    El procedimiento de la reivindicación 67 en el que el subconjunto de páginas comprende páginas 45 correspondientes a una sección particular en un almacenamiento.
  56. 70.
    El procedimiento de la reivindicación 36 que, además, comprende el agrupamiento de páginas seleccionadas formando un grupo de páginas y el mantenimiento de los datos de valor de las páginas en asociación con el grupo.
  57. 71.
    El procedimiento de la reivindicación 70 en el que el agrupamiento de páginas seleccionadas comprende el agrupamiento de páginas en base, al menos, a uno del conjunto que comprende: sus momentos de último acceso, los patrones de utilización, la frecuencia de utilización, una ubicación virtual, un momento de utilización, una ubicación física, las veces que las páginas fueron eliminadas de la memoria (202), la eficiencia de la transferencia de E/S, qué procesos utilizan las páginas, la información de la vida útil de los procesos, la información de errores, al menos un evento, un proceso específico de usuario y los datos de contexto.
  58. 72.
    El procedimiento de la reivindicación 70 en el que el momento de utilización comprende información del día de la semana.
  59. 73.
    El procedimiento de la reivindicación 70 en el que el momento de utilización comprende información del momento del día.
  60. 74.
    El procedimiento de la reivindicación 73 que, además, comprende la recepción de datos de contexto de un programa de aplicación.
  61. 75.
    El procedimiento de la reivindicación 73 que, además, comprende el registro de los datos de contexto en asociación con la utilización de una página.
  62. 76.
    El procedimiento de la reivindicación 75 en el que la grabación de los datos de contexto comprende la grabación de, al menos, uno del conjunto que comprende: información del estado de la potencia, información del estado del disco (204) e información de eventos.
  63. 77.
    El procedimiento de la reivindicación 75 en el que la grabación de los datos de contexto comprende la grabación de la información de evento de un evento relacionado con la memoria.
  64. 78.
    El procedimiento de la reivindicación 36 que, además, comprende la clasificación de las páginas identificadas en base a sus respectivos datos de valor de las páginas y en el que poblar la memoria (202) comprende cargar páginas en la memoria (202) en un orden basado en la clasificación.
  65. 79.
    El procedimiento de la reivindicación 36 en el que poblar la memoria (202) comprende la carga de páginas seleccionadas provenientes del almacenamiento secundario a un conjunto de páginas en espera en la memoria (202).
  66. 80.
    El procedimiento de la reivindicación 79 en el que el conjunto de páginas en espera comprende una pluralidad de subconjuntos y comprende, además, mover de manera lógica una página de un subconjunto del conjunto de páginas en espera a otro subconjunto en base a datos de utilización detectados para la página.
  67. 81.
    El procedimiento de la reivindicación 80 en el que mover de manera lógica una página comprende mover la página de un subconjunto basado en la frecuencia a un subconjunto basado en un momento de última utilización.
  68. 82.
    El procedimiento de la reivindicación 80 en el que mover de manera lógica la página comprende mover la página de un subconjunto basado en un momento de última utilización a un subconjunto basado en la frecuencia.
  69. 83.
    El procedimiento de la reivindicación 36 que, además, comprende guardar en un almacenamiento persistente los datos de valor de las páginas asociados con al menos algunas de las páginas.
  70. 84.
    El procedimiento de la reivindicación 36 en el que poblar la memoria (202) comprende cargar las páginas en la memoria (202) en una operación en segundo plano.
  71. 85.
    El procedimiento de la reivindicación 84 en el que la carga de la página en la memoria (202) en una operación en segundo plano comprende la obtención de datos de prioridad inactiva.
  72. 86.
    El procedimiento de la reivindicación 84 en el que la carga de la página en la memoria (202) en una operación en segundo plano comprende la observación de patrones de E/S para determinar un momento de transferencia.
  73. 87.
    El procedimiento de la reivindicación 86 en el que el momento de transferencia se determina en base a una probabilidad de que la transferencia no se solape con una transferencia de E/S en primer plano.
  74. 88.
    El procedimiento de la reivindicación 86 en el que el momento de transferencia se determina en base a una probabilidad de que la transferencia no provoque una búsqueda que ralentice una transferencia de E/S en primer plano.
  75. 89.
    El procedimiento de la reivindicación 84 en el que la carga de la página seleccionada en la memoria (202) en una operación en segundo plano comprende la evaluación de la utilización actual del procesador y la utilización actual del disco.
  76. 90.
    El procedimiento de la reivindicación 36 en el que poblar la memoria (202) comprende la carga de las páginas 5 en memoria (202) en una operación en primer plano.
  77. 91.
    Un medio legible por ordenador que tiene en el mismo instrucciones ejecutables por ordenador que, cuando se ejecutan en un ordenador, llevan a cabo el procedimiento de una de las reivindicaciones 36 a 90.
  78. 92.
    El sistema de la reivindicación 1 en el que el mecanismo de seguimiento comprende un medio de entrenamiento para determinar páginas que es probable que se necesiten.
    10 93. El sistema de la reivindicación 92 en el que el medio de entrenamiento para determinar páginas que es probable que se necesiten incluye un medio para simular la utilización de las páginas.
  79. 94.
    El sistema de la reivindicación 92 en el que el medio de entrenamiento para determinar páginas que es probable que se necesiten incluye un medio para el análisis de código.
  80. 95.
    El sistema de la reivindicación 92 en el que el medio de entrenamiento para determinar páginas que es
    15 probable que se necesiten incluye un medio para la ejecución de programas en un sistema (110) de ordenador de entrenamiento y el uso de los valores en otro sistema (110) de ordenador.
  81. 96. El sistema de la reivindicación 1 que, además, comprende un medio para la construcción de un repositorio persistente de información que incluye las puntuaciones, y un medio para almacenar el repositorio persistente en un fichero.
    20 97. El sistema de la reivindicación 1 en el que el reequilibrador (424) comprende un medio para cargar la memoria
    (202) que está libre.
  82. 98. El sistema de la reivindicación 1 que, además, comprende un medio para la identificación de páginas de bajo valor en la memoria (202), en el que el reequilibrador (424) comprende medios para sustituir al menos algunas de las páginas de bajo valor.
ES03022573T 2002-10-04 2003-10-02 Procedimiento y mecanismos para una gestión proactiva de la memoria. Expired - Lifetime ES2371454T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US41611502P 2002-10-04 2002-10-04
US416115P 2002-10-04
US10/325,591 US6910106B2 (en) 2002-10-04 2002-12-20 Methods and mechanisms for proactive memory management
US325591 2002-12-20

Publications (1)

Publication Number Publication Date
ES2371454T3 true ES2371454T3 (es) 2012-01-02

Family

ID=31996938

Family Applications (1)

Application Number Title Priority Date Filing Date
ES03022573T Expired - Lifetime ES2371454T3 (es) 2002-10-04 2003-10-02 Procedimiento y mecanismos para una gestión proactiva de la memoria.

Country Status (12)

Country Link
US (5) US6910106B2 (es)
EP (1) EP1406174B8 (es)
JP (1) JP4724362B2 (es)
KR (1) KR100972723B1 (es)
CN (1) CN1327369C (es)
AT (1) ATE526631T1 (es)
AU (2) AU2003246330A1 (es)
BR (1) BRPI0304297B1 (es)
CA (2) CA2723077C (es)
ES (1) ES2371454T3 (es)
MX (1) MXPA03008766A (es)
RU (2) RU2348067C2 (es)

Families Citing this family (308)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1345234A1 (en) * 2002-03-11 2003-09-17 STMicroelectronics S.r.l. Semiconductor memory with self-refresh capability
US20040025045A1 (en) * 2002-07-30 2004-02-05 Sentry Technologies Pte, Ltd. Method for switching rapidly between computing modes
US6910106B2 (en) 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
CA2515968C (en) * 2003-02-12 2009-04-28 Research In Motion Limited An apparatus and methods for managing data used by a mobile device
US7082508B2 (en) * 2003-06-24 2006-07-25 Intel Corporation Dynamic TLB locking based on page usage metric
US8595394B1 (en) 2003-06-26 2013-11-26 Nvidia Corporation Method and system for dynamic buffering of disk I/O command chains
US8095511B2 (en) * 2003-06-30 2012-01-10 Microsoft Corporation Database data recovery system and method
US7900092B2 (en) * 2003-07-11 2011-03-01 Computer Associates Think, Inc. Kernel-level method of flagging problems in applications
US20050015728A1 (en) * 2003-07-17 2005-01-20 International Business Machines Corporation Method, system, and program product for customizing a user interface
US8683132B1 (en) 2003-09-29 2014-03-25 Nvidia Corporation Memory controller for sequentially prefetching data for a processor of a computer system
US7502891B2 (en) * 2003-10-30 2009-03-10 International Business Machines Corporation Storage management based on worklist
US8356142B1 (en) * 2003-11-12 2013-01-15 Nvidia Corporation Memory controller for non-sequentially prefetching data for a processor of a computer system
US8700808B2 (en) * 2003-12-01 2014-04-15 Nvidia Corporation Hardware support system for accelerated disk I/O
US7203854B2 (en) * 2004-02-12 2007-04-10 Microsoft Corporation System for reconfiguring a computer between a high power and high functionality configuration and a low power and low functionality configuration
US20110099053A1 (en) * 2004-04-30 2011-04-28 Irizarry Jr Robert T Method and system for monitoring successful use of application software
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US8538997B2 (en) * 2004-06-25 2013-09-17 Apple Inc. Methods and systems for managing data
US8131674B2 (en) 2004-06-25 2012-03-06 Apple Inc. Methods and systems for managing data
JP2006011803A (ja) * 2004-06-25 2006-01-12 Hitachi Ltd 情報処理システムおよびその制御方法
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US8356143B1 (en) 2004-10-22 2013-01-15 NVIDIA Corporatin Prefetch mechanism for bus master memory access
US7613870B2 (en) * 2004-11-18 2009-11-03 International Business Machines Corporation Efficient memory usage in systems including volatile and high-density memories
US7360042B2 (en) * 2004-12-20 2008-04-15 Microsoft Corporation Determining when to evict unused items from storage
US7543119B2 (en) * 2005-02-10 2009-06-02 Richard Edward Hessel Vector processor
US7543244B2 (en) * 2005-03-22 2009-06-02 Microsoft Corporation Determining and displaying a list of most commonly used items
US7340686B2 (en) 2005-03-22 2008-03-04 Microsoft Corporation Operating system program launch menu search
US7512904B2 (en) * 2005-03-22 2009-03-31 Microsoft Corporation Operating system launch menu program listing
US7496722B2 (en) * 2005-04-26 2009-02-24 Hewlett-Packard Development Company, L.P. Memory mapped page priorities
US8386722B1 (en) 2008-06-23 2013-02-26 Google Inc. Stacked DIMM memory interface
US8041881B2 (en) 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
US7386656B2 (en) 2006-07-31 2008-06-10 Metaram, Inc. Interface circuit system and method for performing power management operations in conjunction with only a portion of a memory circuit
US7392338B2 (en) 2006-07-31 2008-06-24 Metaram, Inc. Interface circuit system and method for autonomously performing power management operations in conjunction with a plurality of memory circuits
US7590796B2 (en) * 2006-07-31 2009-09-15 Metaram, Inc. System and method for power management in memory systems
US8081474B1 (en) 2007-12-18 2011-12-20 Google Inc. Embossed heat spreader
US8359187B2 (en) 2005-06-24 2013-01-22 Google Inc. Simulating a different number of memory circuit devices
US8090897B2 (en) 2006-07-31 2012-01-03 Google Inc. System and method for simulating an aspect of a memory circuit
US8796830B1 (en) 2006-09-01 2014-08-05 Google Inc. Stackable low-profile lead frame package
US8335894B1 (en) 2008-07-25 2012-12-18 Google Inc. Configurable memory system with interface circuit
US8089795B2 (en) 2006-02-09 2012-01-03 Google Inc. Memory module with memory stack and interface with enhanced capabilities
US8077535B2 (en) 2006-07-31 2011-12-13 Google Inc. Memory refresh apparatus and method
US8438328B2 (en) 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
US8397013B1 (en) 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
US20080028136A1 (en) 2006-07-31 2008-01-31 Schakel Keith R Method and apparatus for refresh management of memory modules
US8130560B1 (en) 2006-11-13 2012-03-06 Google Inc. Multi-rank partial width memory modules
US8111566B1 (en) 2007-11-16 2012-02-07 Google, Inc. Optimal channel design for memory devices for providing a high-speed memory interface
US8327104B2 (en) 2006-07-31 2012-12-04 Google Inc. Adjusting the timing of signals associated with a memory system
US10013371B2 (en) 2005-06-24 2018-07-03 Google Llc Configurable memory circuit system and method
US8244971B2 (en) 2006-07-31 2012-08-14 Google Inc. Memory circuit system and method
US20080082763A1 (en) 2006-10-02 2008-04-03 Metaram, Inc. Apparatus and method for power management of memory circuits by a system or component thereof
US8055833B2 (en) 2006-10-05 2011-11-08 Google Inc. System and method for increasing capacity, performance, and flexibility of flash storage
US8060774B2 (en) 2005-06-24 2011-11-15 Google Inc. Memory systems and memory modules
US9171585B2 (en) 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
US9542352B2 (en) 2006-02-09 2017-01-10 Google Inc. System and method for reducing command scheduling constraints of memory circuits
US9507739B2 (en) 2005-06-24 2016-11-29 Google Inc. Configurable memory circuit system and method
US20060294049A1 (en) * 2005-06-27 2006-12-28 Microsoft Corporation Back-off mechanism for search
US20070067455A1 (en) * 2005-08-08 2007-03-22 Microsoft Corporation Dynamically adjusting resources
US8370583B2 (en) * 2005-08-12 2013-02-05 Silver Peak Systems, Inc. Network memory architecture for providing data based on local accessibility
US8095774B1 (en) 2007-07-05 2012-01-10 Silver Peak Systems, Inc. Pre-fetching data into a memory
US8392684B2 (en) * 2005-08-12 2013-03-05 Silver Peak Systems, Inc. Data encryption in a network memory architecture for providing data based on local accessibility
US8171238B1 (en) 2007-07-05 2012-05-01 Silver Peak Systems, Inc. Identification of data stored in memory
JP5242397B2 (ja) 2005-09-02 2013-07-24 メタラム インコーポレイテッド Dramをスタックする方法及び装置
US8489562B1 (en) 2007-11-30 2013-07-16 Silver Peak Systems, Inc. Deferred data storage
US8929402B1 (en) 2005-09-29 2015-01-06 Silver Peak Systems, Inc. Systems and methods for compressing packet data by predicting subsequent data
US8811431B2 (en) 2008-11-20 2014-08-19 Silver Peak Systems, Inc. Systems and methods for compressing packet data
US20070088920A1 (en) * 2005-10-19 2007-04-19 Philip Garcia Managing data for memory, a data store, and a storage device
US20070124573A1 (en) * 2005-10-28 2007-05-31 Walker Phillip M Method for rapid startup of a computer system
KR100739760B1 (ko) 2005-11-23 2007-07-13 삼성전자주식회사 컴퓨터의 메모리 사용에 대한 정보를 제공하는 시스템 및방법
US8019854B2 (en) * 2005-11-25 2011-09-13 Samsung Electronics Co., Ltd. System and method of providing information on computer memory use
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US9632929B2 (en) 2006-02-09 2017-04-25 Google Inc. Translating an address associated with a command communicated between a system and memory circuits
US8607005B2 (en) * 2006-02-17 2013-12-10 International Business Machines Corporation Monitoring program execution to learn data blocks accessed by software process for facilitating efficient prefetching
US7620784B2 (en) * 2006-06-09 2009-11-17 Microsoft Corporation High speed nonvolatile memory device using parallel writing among a plurality of interfaces
KR100801894B1 (ko) 2006-06-15 2008-02-12 삼성전자주식회사 휴대용 단말기에서 메모리 용량을 고려한 프로그램 실행을위한 장치 및 방법
WO2007146970A2 (en) * 2006-06-16 2007-12-21 Texas Instruments Incorporated Page processing circuits, devices, methods and systems for secure demand paging and other operations
EP1870813B1 (en) * 2006-06-19 2013-01-30 Texas Instruments France Page processing circuits, devices, methods and systems for secure demand paging and other operations
US8111260B2 (en) 2006-06-28 2012-02-07 Microsoft Corporation Fast reconfiguration of graphics pipeline state
US7692660B2 (en) * 2006-06-28 2010-04-06 Microsoft Corporation Guided performance optimization for graphics pipeline state management
US8954947B2 (en) * 2006-06-29 2015-02-10 Microsoft Corporation Fast variable validation for state management of a graphics pipeline
US7590800B2 (en) * 2006-06-30 2009-09-15 Seagate Technology Llc 2D dynamic adaptive data caching
US7743216B2 (en) * 2006-06-30 2010-06-22 Seagate Technology Llc Predicting accesses to non-requested data
US7724589B2 (en) 2006-07-31 2010-05-25 Google Inc. System and method for delaying a signal communicated from a system to at least one of a plurality of memory circuits
US7555621B1 (en) * 2006-08-01 2009-06-30 Kaspersky Lab, Zao Disk access antiblocking system and method
US8755381B2 (en) 2006-08-02 2014-06-17 Silver Peak Systems, Inc. Data matching using flow based packet data storage
US8885632B2 (en) 2006-08-02 2014-11-11 Silver Peak Systems, Inc. Communications scheduler
KR101128234B1 (ko) * 2006-08-23 2012-03-23 엘지전자 주식회사 메모리 접근 제어 장치 및 방법
JP5245231B2 (ja) * 2006-09-07 2013-07-24 日本電気株式会社 メモリ管理方法、メモリ管理装置およびプログラム
JP4864797B2 (ja) * 2006-09-11 2012-02-01 Kddi株式会社 P−cscf高速ハンドオフシステム及びp−cscf高速ハンドオフ方法
US7747813B2 (en) * 2006-11-24 2010-06-29 Sandforce, Inc. Multi-memory device system and method for managing a lifetime thereof
US7904619B2 (en) 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
US7809900B2 (en) * 2006-11-24 2010-10-05 Sandforce, Inc. System, method, and computer program product for delaying an operation that reduces a lifetime of memory
CN101578587B (zh) * 2006-11-24 2015-02-25 Lsi公司 延迟缩减存储器寿命的操作
US7904672B2 (en) 2006-12-08 2011-03-08 Sandforce, Inc. System and method for providing data redundancy after reducing memory writes
US7827358B2 (en) * 2007-01-07 2010-11-02 Apple Inc. Memory management methods and systems
KR100866627B1 (ko) 2007-01-29 2008-11-03 삼성전자주식회사 컨트롤 플로우를 이용한 페이지 프리로드 방법 및 그시스템
JP5094193B2 (ja) * 2007-04-16 2012-12-12 株式会社日立製作所 記憶システム及びその制御方法
US8032699B2 (en) * 2007-06-15 2011-10-04 Seagate Technology Llc System and method of monitoring data storage activity
US8209479B2 (en) 2007-07-18 2012-06-26 Google Inc. Memory circuit system and method
US20090055132A1 (en) * 2007-08-22 2009-02-26 Samsung Electronics Co., Ltd. Determining situational patterns of use for computing systems
US8032468B2 (en) * 2007-08-22 2011-10-04 Samsung Electronics Co., Ltd. Identifying and recommending potential uses of computing systems based on their patterns of use
US8046454B2 (en) * 2007-08-22 2011-10-25 Samsung Electronics Co. Ltd. Identifying and recommending potential communication states based on patterns of use
US8080874B1 (en) 2007-09-14 2011-12-20 Google Inc. Providing additional space between an integrated circuit and a circuit board for positioning a component therebetween
US7895242B2 (en) * 2007-10-31 2011-02-22 Microsoft Corporation Compressed storage management
US7849275B2 (en) 2007-11-19 2010-12-07 Sandforce, Inc. System, method and a computer program product for writing data to different storage devices based on write frequency
US7903486B2 (en) 2007-11-19 2011-03-08 Sandforce, Inc. System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory
KR101420798B1 (ko) * 2007-11-23 2014-07-17 삼성전자주식회사 실시간 응답성이 요구되는 코드를 위한 요구 페이징 방법및 단말
US8307115B1 (en) 2007-11-30 2012-11-06 Silver Peak Systems, Inc. Network memory mirroring
US8631203B2 (en) * 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
US8352671B2 (en) 2008-02-05 2013-01-08 Spansion Llc Partial allocate paging mechanism using a controller and a buffer
US8275945B2 (en) 2008-02-05 2012-09-25 Spansion Llc Mitigation of flash memory latency and bandwidth limitations via a write activity log and buffer
US8442052B1 (en) 2008-02-20 2013-05-14 Silver Peak Systems, Inc. Forward packet recovery
US9600261B2 (en) 2008-03-25 2017-03-21 Qualcomm Incorporated Apparatus and methods for widget update scheduling
US9069575B2 (en) 2008-03-25 2015-06-30 Qualcomm Incorporated Apparatus and methods for widget-related memory management
US9747141B2 (en) 2008-03-25 2017-08-29 Qualcomm Incorporated Apparatus and methods for widget intercommunication in a wireless communication environment
US9269059B2 (en) 2008-03-25 2016-02-23 Qualcomm Incorporated Apparatus and methods for transport optimization for widget content delivery
US9110685B2 (en) 2008-03-25 2015-08-18 Qualcomm, Incorporated Apparatus and methods for managing widgets in a wireless communication environment
GB2460464A (en) * 2008-05-30 2009-12-02 Symbian Software Ltd Memory paging control method using two cache parts, each maintained using a FIFO algorithm
US8743683B1 (en) 2008-07-03 2014-06-03 Silver Peak Systems, Inc. Quality of service using multiple flows
US10164861B2 (en) 2015-12-28 2018-12-25 Silver Peak Systems, Inc. Dynamic monitoring and visualization for network health characteristics
US9717021B2 (en) 2008-07-03 2017-07-25 Silver Peak Systems, Inc. Virtual network overlay
US10805840B2 (en) 2008-07-03 2020-10-13 Silver Peak Systems, Inc. Data transmission via a virtual wide area network overlay
US20100030963A1 (en) * 2008-08-04 2010-02-04 Sandisk Il Ltd. Managing storage of cached content
US9032151B2 (en) * 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US8356128B2 (en) * 2008-09-16 2013-01-15 Nvidia Corporation Method and system of reducing latencies associated with resource allocation by using multiple arbiters
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
US9727473B2 (en) 2008-09-30 2017-08-08 Intel Corporation Methods to communicate a timestamp to a storage system
US20100088459A1 (en) * 2008-10-06 2010-04-08 Siamak Arya Improved Hybrid Drive
US8370552B2 (en) * 2008-10-14 2013-02-05 Nvidia Corporation Priority based bus arbiters avoiding deadlock and starvation on buses that support retrying of transactions
US9542431B2 (en) * 2008-10-24 2017-01-10 Microsoft Technology Licensing, Llc Cyclic commit transaction protocol
JP4764472B2 (ja) * 2008-12-02 2011-09-07 株式会社日立製作所 データベース管理方法、データベース管理プログラム、および、データベース管理装置
KR101618634B1 (ko) * 2009-01-07 2016-05-09 삼성전자주식회사 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법
KR101056560B1 (ko) * 2009-02-11 2011-08-11 (주)인디링스 고체 상태 디스크 시스템에서 버퍼 캐시의 프로그래밍 방법및 장치
US20100241726A1 (en) * 2009-03-23 2010-09-23 Riverbed Technology, Inc. Virtualized Data Storage Over Wide-Area Networks
US8698823B2 (en) 2009-04-08 2014-04-15 Nvidia Corporation System and method for deadlock-free pipelining
US8209501B2 (en) * 2009-05-05 2012-06-26 Microsoft Corporation Capturing and loading operating system states
US8135912B2 (en) * 2009-05-18 2012-03-13 Hola Networks, Ltd. System and method of increasing cache size
WO2010134098A1 (en) * 2009-05-21 2010-11-25 Vijay Sathya System and method of enabling identification of a right event sound corresponding to an impact related event
KR101562973B1 (ko) 2009-05-22 2015-10-26 삼성전자 주식회사 메모리 장치 및 메모리 장치의 동작 방법
US8291503B2 (en) * 2009-06-05 2012-10-16 Microsoft Corporation Preloading modules for performance improvements
WO2010144624A1 (en) 2009-06-09 2010-12-16 Google Inc. Programming of dimm termination resistance values
US20100325372A1 (en) * 2009-06-17 2010-12-23 Housty Oswin E Parallel training of dynamic random access memory channel controllers
CN101656789B (zh) * 2009-07-01 2012-09-05 中兴通讯股份有限公司 手机实现管理应用程序信息的方法及应用程序管理器
US8516166B2 (en) * 2009-07-20 2013-08-20 Lsi Corporation System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory
US8560604B2 (en) 2009-10-08 2013-10-15 Hola Networks Ltd. System and method for providing faster and more efficient data communication
US8477425B2 (en) 2010-02-28 2013-07-02 Osterhout Group, Inc. See-through near-eye display glasses including a partially reflective, partially transmitting optical element
US9341843B2 (en) 2010-02-28 2016-05-17 Microsoft Technology Licensing, Llc See-through near-eye display glasses with a small scale image source
WO2011106798A1 (en) 2010-02-28 2011-09-01 Osterhout Group, Inc. Local advertising content on an interactive head-mounted eyepiece
US8467133B2 (en) 2010-02-28 2013-06-18 Osterhout Group, Inc. See-through display with an optical assembly including a wedge-shaped illumination system
US20150309316A1 (en) 2011-04-06 2015-10-29 Microsoft Technology Licensing, Llc Ar glasses with predictive control of external device based on event input
US8488246B2 (en) 2010-02-28 2013-07-16 Osterhout Group, Inc. See-through near-eye display glasses including a curved polarizing film in the image source, a partially reflective, partially transmitting optical element and an optically flat film
US9285589B2 (en) 2010-02-28 2016-03-15 Microsoft Technology Licensing, Llc AR glasses with event and sensor triggered control of AR eyepiece applications
US9091851B2 (en) 2010-02-28 2015-07-28 Microsoft Technology Licensing, Llc Light control in head mounted displays
US9097890B2 (en) 2010-02-28 2015-08-04 Microsoft Technology Licensing, Llc Grating in a light transmissive illumination system for see-through near-eye display glasses
US9366862B2 (en) 2010-02-28 2016-06-14 Microsoft Technology Licensing, Llc System and method for delivering content to a group of see-through near eye display eyepieces
US9129295B2 (en) 2010-02-28 2015-09-08 Microsoft Technology Licensing, Llc See-through near-eye display glasses with a fast response photochromic film system for quick transition from dark to clear
US9223134B2 (en) 2010-02-28 2015-12-29 Microsoft Technology Licensing, Llc Optical imperfections in a light transmissive illumination system for see-through near-eye display glasses
US9134534B2 (en) 2010-02-28 2015-09-15 Microsoft Technology Licensing, Llc See-through near-eye display glasses including a modular image source
US9097891B2 (en) 2010-02-28 2015-08-04 Microsoft Technology Licensing, Llc See-through near-eye display glasses including an auto-brightness control for the display brightness based on the brightness in the environment
US9182596B2 (en) 2010-02-28 2015-11-10 Microsoft Technology Licensing, Llc See-through near-eye display glasses with the optical assembly including absorptive polarizers or anti-reflective coatings to reduce stray light
US8482859B2 (en) 2010-02-28 2013-07-09 Osterhout Group, Inc. See-through near-eye display glasses wherein image light is transmitted to and reflected from an optically flat film
US10180572B2 (en) 2010-02-28 2019-01-15 Microsoft Technology Licensing, Llc AR glasses with event and user action control of external applications
US9229227B2 (en) 2010-02-28 2016-01-05 Microsoft Technology Licensing, Llc See-through near-eye display glasses with a light transmissive wedge shaped illumination system
US9759917B2 (en) 2010-02-28 2017-09-12 Microsoft Technology Licensing, Llc AR glasses with event and sensor triggered AR eyepiece interface to external devices
US20120249797A1 (en) 2010-02-28 2012-10-04 Osterhout Group, Inc. Head-worn adaptive display
US9128281B2 (en) 2010-09-14 2015-09-08 Microsoft Technology Licensing, Llc Eyepiece with uniformly illuminated reflective display
US8472120B2 (en) 2010-02-28 2013-06-25 Osterhout Group, Inc. See-through near-eye display glasses with a small scale image source
US9235531B2 (en) 2010-03-04 2016-01-12 Microsoft Technology Licensing, Llc Multi-level buffer pool extensions
US8712984B2 (en) * 2010-03-04 2014-04-29 Microsoft Corporation Buffer pool extension for database server
US9229773B1 (en) * 2010-06-30 2016-01-05 Crimson Corporation Determining when to perform a maintenance operation on a computing device based on status of a currently running process or application on the computing device
US8380703B2 (en) * 2010-07-26 2013-02-19 International Business Machines Corporation Feedback loop between a query optimizer and a cache manager
KR20120041582A (ko) * 2010-10-21 2012-05-02 삼성전자주식회사 스냅샷 이미지 분할 처리 장치 및 스냅샷 이미지 분할 처리 방법
US8812788B2 (en) 2010-11-09 2014-08-19 Lsi Corporation Virtual cache window headers for long term access history
US10394757B2 (en) 2010-11-18 2019-08-27 Microsoft Technology Licensing, Llc Scalable chunk store for data deduplication
US8244938B2 (en) * 2010-11-23 2012-08-14 International Business Machines Corporation Sliding write window mechanism for writing data
TWI417721B (zh) * 2010-11-26 2013-12-01 Etron Technology Inc 衰減熱資料之方法
US8862845B2 (en) * 2010-12-06 2014-10-14 Xiotech Corporation Application profiling in a data storage array
US9235500B2 (en) 2010-12-07 2016-01-12 Microsoft Technology Licensing, Llc Dynamic memory allocation and relocation to create low power regions
US8959293B2 (en) 2010-12-14 2015-02-17 Microsoft Corporation Data deduplication in a virtualization environment
US9336380B2 (en) * 2010-12-15 2016-05-10 Microsoft Technology Licensing Llc Applying activity actions to frequent activities
JP5702808B2 (ja) * 2011-01-12 2015-04-15 パナソニック株式会社 プログラム実行装置およびコンパイラシステム
JP2012173870A (ja) * 2011-02-18 2012-09-10 Toshiba Corp 半導体装置及びメモリ保護方法
CN103403688A (zh) * 2011-02-21 2013-11-20 富士通株式会社 处理器管理方法
US8818960B2 (en) * 2011-03-18 2014-08-26 Microsoft Corporation Tracking redo completion at a page level
US9886899B2 (en) * 2011-05-17 2018-02-06 Ignis Innovation Inc. Pixel Circuits for AMOLED displays
US8176437B1 (en) 2011-07-18 2012-05-08 Google Inc. Responsiveness for application launch
US9032413B2 (en) 2011-09-01 2015-05-12 Microsoft Technology Licensing, Llc Decoupling background work and foreground work
US9063775B2 (en) 2011-09-01 2015-06-23 Microsoft Technology Licensing, Llc Event aggregation for background work execution
US8990171B2 (en) 2011-09-01 2015-03-24 Microsoft Corporation Optimization of a partially deduplicated file
US20130067346A1 (en) * 2011-09-09 2013-03-14 Microsoft Corporation Content User Experience
JP2013061847A (ja) * 2011-09-14 2013-04-04 Sony Corp 情報処理装置および情報処理方法
US9130991B2 (en) 2011-10-14 2015-09-08 Silver Peak Systems, Inc. Processing data packets in performance enhancing proxy (PEP) environment
US9626224B2 (en) 2011-11-03 2017-04-18 Silver Peak Systems, Inc. Optimizing available computing resources within a virtual environment
US9104606B2 (en) 2011-11-22 2015-08-11 Landy Wang Temporal standby list
EP3037971B1 (en) * 2011-12-27 2024-01-17 Intel Corporation Methods and apparatus to manage workload memory allocation
US9164803B2 (en) 2012-01-20 2015-10-20 Microsoft Technology Licensing, Llc Background task resource control
US9201810B2 (en) * 2012-01-26 2015-12-01 Microsoft Technology Licensing, Llc Memory page eviction priority in mobile computing devices
CN103377067B (zh) * 2012-04-13 2019-01-25 富泰华工业(深圳)有限公司 应用程序加载系统及方法
KR101955978B1 (ko) * 2012-05-23 2019-03-08 엘지전자 주식회사 영상 표시 장치 및 영상 표시 장치의 메모리 관리 방법
US9032168B2 (en) 2012-05-31 2015-05-12 Htc Corporation Memory management methods and systems for mobile devices
US8990534B2 (en) 2012-05-31 2015-03-24 Apple Inc. Adaptive resource management of a data processing system
US8856447B2 (en) 2012-07-17 2014-10-07 Apple Inc. Converting memory accesses near barriers into prefetches
US9009401B2 (en) 2012-07-27 2015-04-14 International Business Machines Corporation Multi-updatable least recently used mechanism
US8930631B2 (en) * 2012-08-20 2015-01-06 International Business Machines Corporation Efficient management of computer memory using memory page associations and memory
US9043570B2 (en) * 2012-09-11 2015-05-26 Apple Inc. System cache with quota-based control
US20140082324A1 (en) * 2012-09-14 2014-03-20 Reuven Elhamias Method and Storage Device for Using File System Data to Predict Host Device Operations
US9069669B2 (en) 2012-10-11 2015-06-30 Industrial Technology Research Institute Method and computer system for memory management on virtual machine
US9489236B2 (en) 2012-10-31 2016-11-08 Microsoft Technology Licensing, Llc Application prioritization
US9195601B2 (en) 2012-11-26 2015-11-24 International Business Machines Corporation Selective release-behind of pages based on repaging history in an information handling system
CN103902459B (zh) * 2012-12-25 2017-07-28 华为技术有限公司 确定共享虚拟内存页面管理模式的方法和相关设备
US8812744B1 (en) 2013-03-14 2014-08-19 Microsoft Corporation Assigning priorities to data for hybrid drives
US9626126B2 (en) 2013-04-24 2017-04-18 Microsoft Technology Licensing, Llc Power saving mode hybrid drive access management
US9946495B2 (en) 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
US10102148B2 (en) 2013-06-13 2018-10-16 Microsoft Technology Licensing, Llc Page-based compressed storage management
US9286097B2 (en) 2013-07-23 2016-03-15 Intel Corporation Switching a first OS in a foreground to a standby state in response to a system event and resuming a second OS from a background
WO2015012878A1 (en) * 2013-07-23 2015-01-29 Intel Corporation Operating system switching method and apparatus
KR101489870B1 (ko) 2013-08-19 2015-02-06 성균관대학교산학협력단 가상화 장치 및 그 메모리 관리 방법
US20150052326A1 (en) * 2013-08-19 2015-02-19 International Business Machines Corporation User-controlled paging
US9241044B2 (en) 2013-08-28 2016-01-19 Hola Networks, Ltd. System and method for improving internet communication by using intermediate nodes
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
US9317350B2 (en) 2013-09-09 2016-04-19 International Business Machines Corporation Method and apparatus for faulty memory utilization
US9645934B2 (en) 2013-09-13 2017-05-09 Samsung Electronics Co., Ltd. System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer
US9317421B2 (en) * 2013-09-27 2016-04-19 Intel Corporation Memory management
CN104572493A (zh) * 2013-10-23 2015-04-29 华为技术有限公司 一种存储器资源优化方法和装置
EP3206127B1 (en) * 2013-11-22 2019-03-06 Huawei Technologies Co., Ltd. Method, computer, and apparatus for migrating memory data
JP6351722B2 (ja) * 2013-12-23 2018-07-04 インテル・コーポレーション クラスタ化されたワイド実行機械におけるメモリアクセス用の命令およびロジック
KR102168169B1 (ko) 2014-01-07 2020-10-20 삼성전자주식회사 비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템
US20150242432A1 (en) * 2014-02-21 2015-08-27 Microsoft Corporation Modified Memory Compression
US9678797B2 (en) 2014-03-10 2017-06-13 Microsoft Technology Licensing, Llc Dynamic resource management for multi-process applications
US9460001B2 (en) * 2014-03-21 2016-10-04 Veritas Technologies Llc Systems and methods for identifying access rate boundaries of workloads
US9684625B2 (en) * 2014-03-21 2017-06-20 Microsoft Technology Licensing, Llc Asynchronously prefetching sharable memory pages
US10108622B2 (en) 2014-03-26 2018-10-23 International Business Machines Corporation Autonomic regulation of a volatile database table attribute
US9710198B2 (en) * 2014-05-07 2017-07-18 Sandisk Technologies Llc Method and computing device for controlling bandwidth of swap operations
US9928169B2 (en) 2014-05-07 2018-03-27 Sandisk Technologies Llc Method and system for improving swap performance
US9665296B2 (en) 2014-05-07 2017-05-30 Sandisk Technologies Llc Method and computing device for using both volatile memory and non-volatile swap memory to pre-load a plurality of applications
US20150324132A1 (en) * 2014-05-07 2015-11-12 Sandisk Technologies Inc. Method and Computing Device for Fast Erase of Swap Memory
US9633233B2 (en) 2014-05-07 2017-04-25 Sandisk Technologies Llc Method and computing device for encrypting data stored in swap memory
KR102254099B1 (ko) 2014-05-19 2021-05-20 삼성전자주식회사 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템
KR102295769B1 (ko) 2014-05-20 2021-08-30 삼성전자주식회사 스토리지 컨트롤러 및 상기 스토리지 컨트롤러의 동작 방법
CN108897761B (zh) 2014-05-27 2023-01-13 华为技术有限公司 一种聚簇存储方法及装置
CN104133852B (zh) * 2014-07-04 2018-03-16 小米科技有限责任公司 网页访问方法、装置、服务器及终端
US9948496B1 (en) 2014-07-30 2018-04-17 Silver Peak Systems, Inc. Determining a transit appliance for data traffic to a software service
US9696933B2 (en) * 2014-08-15 2017-07-04 International Business Machines Corporation Virtual machine manager initiated page-in of kernel pages
US9875344B1 (en) 2014-09-05 2018-01-23 Silver Peak Systems, Inc. Dynamic monitoring and authorization of an optimization device
EP3204859B1 (en) 2014-10-07 2020-12-02 Google LLC Methods and systems for cache lines de-duplication
US9892054B2 (en) 2014-10-07 2018-02-13 Google Llc Method and apparatus for monitoring system performance and dynamically updating memory sub-system settings using software to optimize performance and power consumption
US9690928B2 (en) 2014-10-25 2017-06-27 Mcafee, Inc. Computing platform security methods and apparatus
US9558078B2 (en) 2014-10-28 2017-01-31 Microsoft Technology Licensing, Llc Point in time database restore from storage snapshots
US9880760B2 (en) * 2014-10-30 2018-01-30 Sandisk Technologies Llc Managing data stored in a nonvolatile storage device
US9846604B2 (en) 2014-11-14 2017-12-19 International Business Machines Corporation Analyzing data sources for inactive data
CN104503923B (zh) * 2014-11-21 2017-08-11 华中科技大学 一种非对称磁盘阵列高速缓存调度方法
EP3200083B1 (en) 2014-12-23 2019-03-13 Huawei Technologies Co. Ltd. Resource scheduling method and related apparatus
CA2876379A1 (en) 2014-12-29 2016-06-29 Adam J. Storm Memory management in presence of asymmetrical memory transfer costs
EP3054384B1 (en) 2015-02-04 2018-06-27 Huawei Technologies Co., Ltd. System and method for memory synchronization of a multi-core system
US9632924B2 (en) 2015-03-02 2017-04-25 Microsoft Technology Licensing, Llc Using memory compression to reduce memory commit charge
US9921977B2 (en) 2015-03-11 2018-03-20 International Business Machines Corporation Privilege based memory pinning mechanism
US9916264B2 (en) 2015-03-11 2018-03-13 International Business Machines Corporation Privilege based memory pinning mechanism
MA41915A (fr) * 2015-04-07 2018-02-13 Benjamin Gittins Unités de requête de transfert de mémoire programmable
US10037270B2 (en) 2015-04-14 2018-07-31 Microsoft Technology Licensing, Llc Reducing memory commit charge when compressing memory
US9898349B2 (en) 2015-06-23 2018-02-20 International Business Machines Corporation Management of asynchronous and synchronous resource requests
KR102443069B1 (ko) 2015-08-12 2022-09-14 삼성전자주식회사 어플리케이션을 실행하기 위한 장치 및 방법
US9753670B2 (en) 2015-11-05 2017-09-05 International Business Machines Corporation Prioritizing memory pages to copy for memory migration
US9875058B2 (en) 2015-11-05 2018-01-23 International Business Machines Corporation Prioritizing pages to transfer for memory sharing
KR102529171B1 (ko) 2016-02-26 2023-05-04 삼성전자주식회사 메모리 장치 진단 시스템
US9823854B2 (en) * 2016-03-18 2017-11-21 Qualcomm Incorporated Priority-based access of compressed memory lines in memory in a processor-based system
US10228855B2 (en) 2016-03-30 2019-03-12 International Business Machines Corporation Tuning memory across database clusters for distributed query stability
US10884950B2 (en) * 2016-05-16 2021-01-05 International Business Machines Corporation Importance based page replacement
US10432484B2 (en) 2016-06-13 2019-10-01 Silver Peak Systems, Inc. Aggregating select network traffic statistics
US10379862B2 (en) 2016-06-28 2019-08-13 International Business Machines Corporation Effectiveness and prioritization of prefeteches
US9967056B1 (en) 2016-08-19 2018-05-08 Silver Peak Systems, Inc. Forward packet recovery with constrained overhead
JP6786342B2 (ja) * 2016-10-18 2020-11-18 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
US20180150125A1 (en) * 2016-11-28 2018-05-31 Qualcomm Incorporated Wifi memory power minimization
US10481999B2 (en) * 2016-12-05 2019-11-19 Microsoft Technology Licensing, Llc Partial process recording
US10776408B2 (en) * 2017-01-11 2020-09-15 International Business Machines Corporation Natural language search using facets
WO2018136835A1 (en) 2017-01-19 2018-07-26 Gill David C Systems and methods for generating a graphical representation of a strike velocity of an electronic drum pad
US10892978B2 (en) 2017-02-06 2021-01-12 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows from first packet data
US10257082B2 (en) 2017-02-06 2019-04-09 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows
US10771394B2 (en) 2017-02-06 2020-09-08 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows on a first packet from DNS data
US11044202B2 (en) 2017-02-06 2021-06-22 Silver Peak Systems, Inc. Multi-level learning for predicting and classifying traffic flows from first packet data
US10540287B2 (en) * 2017-05-12 2020-01-21 Samsung Electronics Co., Ltd Spatial memory streaming confidence mechanism
US11074009B2 (en) 2017-06-19 2021-07-27 Micron Technology, Inc. Managed NAND cold data storage
JP7003470B2 (ja) 2017-07-18 2022-01-20 富士通株式会社 情報処理装置、情報処理方法、及びプログラム
US10561930B2 (en) 2017-07-21 2020-02-18 Spinner Systems, Inc. Device to provide network access to entertainment machine
EP4020940A1 (en) 2017-08-28 2022-06-29 Bright Data Ltd. Content fetching by selecting tunnel devices
US11190374B2 (en) 2017-08-28 2021-11-30 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
KR20190026231A (ko) * 2017-09-04 2019-03-13 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11212210B2 (en) 2017-09-21 2021-12-28 Silver Peak Systems, Inc. Selective route exporting using source type
US11698964B2 (en) * 2017-12-13 2023-07-11 Intel Corporation Malware detection in memory
CN111465926A (zh) 2017-12-18 2020-07-28 三菱电机株式会社 信息处理装置、信息处理方法和信息处理程序
US10637721B2 (en) 2018-03-12 2020-04-28 Silver Peak Systems, Inc. Detecting path break conditions while minimizing network overhead
CN110294372B (zh) * 2018-03-23 2023-02-28 奥的斯电梯公司 一种无线信号装置、电梯服务请求系统和方法
CN109614050B (zh) * 2018-12-11 2022-03-04 浪潮(北京)电子信息产业有限公司 磁盘休眠状态控制方法、装置、设备及可读存储介质
EP4053717A3 (en) 2019-02-25 2022-10-26 Bright Data Ltd. System and method for url fetching retry mechanism
CN109977168B (zh) * 2019-03-18 2021-11-05 武汉达梦数据库股份有限公司 基于数据页预加载的数据库数据同步方法及设备
EP4027618A1 (en) 2019-04-02 2022-07-13 Bright Data Ltd. Managing a non-direct url fetching service
US10936480B2 (en) * 2019-05-31 2021-03-02 Microsoft Technology Licensing, Llc Memory management for multiple process instances
KR102116858B1 (ko) * 2019-09-06 2020-05-29 한국과학기술정보연구원 스케줄링장치 및 그 동작 방법
CN113590500A (zh) * 2020-04-30 2021-11-02 华为技术有限公司 一种内存管理方法及终端设备
US11321225B2 (en) * 2020-05-22 2022-05-03 International Business Machines Corporation Reducing the memory load time for logic simulator by leveraging architecture simulator
US11481281B2 (en) 2020-06-11 2022-10-25 International Business Machines Corporation Predictive fog computing in an edge device
US11836507B2 (en) * 2020-06-18 2023-12-05 Dell Products L.P. Prioritizing the pre-loading of applications with a constrained memory budget using contextual information
US11429590B2 (en) * 2020-10-15 2022-08-30 International Business Machines Corporation Protecting against invalid memory references
WO2022118323A1 (en) * 2020-12-02 2022-06-09 Unifabrix Ltd. Adjustable-precision multidimensional memory entropy sampling for optimizing memory resource allocation
CN112486559B (zh) * 2020-12-15 2023-06-20 青岛海尔科技有限公司 产品调整方法、装置和存储介质及电子装置
US11966331B2 (en) 2020-12-30 2024-04-23 International Business Machines Corporation Dedicated bound information register file for protecting against out-of-bounds memory references
US11983532B2 (en) 2020-12-30 2024-05-14 International Business Machines Corporation Optimize bound information accesses in buffer protection
US11700289B2 (en) * 2021-05-31 2023-07-11 Citrix Systems, Inc. User experience analysis for multi-channel remote desktop environments
CN114218153B (zh) * 2021-12-06 2023-11-14 海飞科(南京)信息技术有限公司 用于存储管理的方法、介质、程序产品、系统和装置
CN115328751B (zh) * 2022-08-10 2023-03-14 北京同创永益科技发展有限公司 一种面向混沌工程实验动态构建观测页面的方法

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US687266A (en) * 1899-10-09 1901-11-26 Albert Raymond Pneumatic separator.
SU737952A1 (ru) * 1978-01-20 1980-05-30 Предприятие П/Я А-3162 Устройство управлени буферной пам тью
JPS57161933A (en) * 1981-03-31 1982-10-05 Fujitsu Ltd Automatic program editing system
JPH06100981B2 (ja) * 1983-12-28 1994-12-12 株式会社日立製作所 記憶階層制御方式
JPH02273843A (ja) * 1989-04-14 1990-11-08 Nec Corp スワッピング装置
JPH03147157A (ja) * 1989-11-02 1991-06-24 Nec Eng Ltd 情報処理装置
RU2010317C1 (ru) * 1990-07-20 1994-03-30 Институт точной механики и вычислительной техники им.С.А.Лебедева РАН Устройство управления буферной памятью
JPH04205634A (ja) * 1990-11-30 1992-07-27 Matsushita Electric Ind Co Ltd 記憶装置制御方法
US5263136A (en) * 1991-04-30 1993-11-16 Optigraphics Corporation System for managing tiled images using multiple resolutions
JPH0559537U (ja) * 1992-01-10 1993-08-06 三菱電機株式会社 計算機
US6185629B1 (en) * 1994-03-08 2001-02-06 Texas Instruments Incorporated Data transfer controller employing differing memory interface protocols dependent upon external input at predetermined time
US5897660A (en) 1995-04-07 1999-04-27 Intel Corporation Method for managing free physical pages that reduces trashing to improve system performance
US5717954A (en) * 1995-10-13 1998-02-10 Compaq Computer Corporation Locked exchange FIFO
US5809280A (en) * 1995-10-13 1998-09-15 Compaq Computer Corporation Adaptive ahead FIFO with LRU replacement
US5758056A (en) * 1996-02-08 1998-05-26 Barr; Robert C. Memory system having defective address identification and replacement
US6879266B1 (en) * 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
FR2770952B1 (fr) * 1997-11-12 2000-01-21 Adl Systeme Sa Dispositif de tele-ecriture
US6272534B1 (en) 1998-03-04 2001-08-07 Storage Technology Corporation Method and system for efficiently storing web pages for quick downloading at a remote device
US7007072B1 (en) * 1999-07-27 2006-02-28 Storage Technology Corporation Method and system for efficiently storing web pages for quick downloading at a remote device
US6959318B1 (en) * 1998-03-06 2005-10-25 Intel Corporation Method of proxy-assisted predictive pre-fetching with transcoding
US6425057B1 (en) * 1998-08-27 2002-07-23 Hewlett-Packard Company Caching protocol method and system based on request frequency and relative storage duration
JP3175764B2 (ja) * 1998-11-06 2001-06-11 日本電気株式会社 メモリスケジューリング方法及びメモリスケジューリングプログラムを格納する記憶媒体
US6378043B1 (en) * 1998-12-31 2002-04-23 Oracle Corporation Reward based cache management
US6237065B1 (en) * 1999-05-14 2001-05-22 Hewlett-Packard Company Preemptive replacement strategy for a caching dynamic translator
US6317806B1 (en) * 1999-05-20 2001-11-13 International Business Machines Corporation Static queue and index queue for storing values identifying static queue locations
US6425097B1 (en) * 1999-05-27 2002-07-23 Sun Microsystems, Inc. Method and apparatus for testing an impedance-controlled input/output (I/O) buffer in a highly efficient manner
US6366996B1 (en) * 2000-01-24 2002-04-02 Pmc-Sierra, Inc. Page memory management in non time critical data buffering applications
US6418510B1 (en) * 2000-09-14 2002-07-09 International Business Machines Corporation Cooperative cache and rotational positioning optimization (RPO) scheme for a direct access storage device (DASD)
RU2189073C2 (ru) * 2000-10-13 2002-09-10 Курский государственный технический университет Система распределения ресурсов
US7043524B2 (en) * 2000-11-06 2006-05-09 Omnishift Technologies, Inc. Network caching system for streamed applications
US6651141B2 (en) * 2000-12-29 2003-11-18 Intel Corporation System and method for populating cache servers with popular media contents
US6546472B2 (en) * 2000-12-29 2003-04-08 Hewlett-Packard Development Company, L.P. Fast suspend to disk
US6877081B2 (en) * 2001-02-13 2005-04-05 International Business Machines Corporation System and method for managing memory compression transparent to an operating system
JP2002342037A (ja) * 2001-05-22 2002-11-29 Fujitsu Ltd ディスク装置
KR100389867B1 (ko) * 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
US6922765B2 (en) 2001-06-21 2005-07-26 International Business Machines Corporation Method of allocating physical memory space having pinned and non-pinned regions
US6742097B2 (en) * 2001-07-30 2004-05-25 Rambus Inc. Consolidation of allocated memory to reduce power consumption
US20030110357A1 (en) * 2001-11-14 2003-06-12 Nguyen Phillip V. Weight based disk cache replacement method
US6782453B2 (en) 2002-02-12 2004-08-24 Hewlett-Packard Development Company, L.P. Storing data in memory
JP3901002B2 (ja) * 2002-04-23 2007-04-04 日本電気株式会社 ページングシステム、ページング方法、および、ページングプログラム
US6910106B2 (en) * 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management

Also Published As

Publication number Publication date
US20050235119A1 (en) 2005-10-20
EP1406174A3 (en) 2007-09-05
RU2482535C2 (ru) 2013-05-20
CA2723077A1 (en) 2004-04-04
US7185155B2 (en) 2007-02-27
JP4724362B2 (ja) 2011-07-13
MXPA03008766A (es) 2004-09-10
EP1406174B1 (en) 2011-09-28
AU2010201717B2 (en) 2011-10-27
CN1327369C (zh) 2007-07-18
CN1510579A (zh) 2004-07-07
KR20040031645A (ko) 2004-04-13
US20100199063A1 (en) 2010-08-05
JP2004133934A (ja) 2004-04-30
RU2348067C2 (ru) 2009-02-27
AU2010201717A1 (en) 2010-05-20
EP1406174A2 (en) 2004-04-07
KR100972723B1 (ko) 2010-07-27
CA2723077C (en) 2014-05-13
BR0304297A (pt) 2004-08-31
US20100199043A1 (en) 2010-08-05
BRPI0304297B1 (pt) 2016-10-11
AU2003246330A1 (en) 2004-04-22
AU2003243990A1 (en) 2004-04-22
US8032723B2 (en) 2011-10-04
US20050228964A1 (en) 2005-10-13
US6910106B2 (en) 2005-06-21
US8539186B2 (en) 2013-09-17
EP1406174B8 (en) 2012-02-29
CA2442188C (en) 2011-06-28
RU2003129662A (ru) 2005-03-27
RU2008140263A (ru) 2010-04-20
US20040068627A1 (en) 2004-04-08
ATE526631T1 (de) 2011-10-15
CA2442188A1 (en) 2004-04-04
US7698513B2 (en) 2010-04-13

Similar Documents

Publication Publication Date Title
ES2371454T3 (es) Procedimiento y mecanismos para una gestión proactiva de la memoria.
US9767140B2 (en) Deduplicating storage with enhanced frequent-block detection
US8732217B2 (en) Using a per file activity ratio to optimally relocate data between volumes
US9058212B2 (en) Combining memory pages having identical content
ES2657800T3 (es) Compresión de memoria modificada
RU2671049C2 (ru) Выгрузка в файловой системе
US20100299547A1 (en) Power-saving control apparatus and method
US6598143B1 (en) Method to increase performance of acquiring free memory pages
US9152823B2 (en) Systems, methods, and computer readable media for computer data protection
CN102047234A (zh) 即时快照的排序以及分优先级
US11169968B2 (en) Region-integrated data deduplication implementing a multi-lifetime duplicate finder
US10073851B2 (en) Fast new file creation cache
Carlton A critical evaluation of the treatment of deleted files in microsoft windows operation systems
Pei Removing Performance Bottlenecks on SSDS and SSD-Based Storage Systems
BR122016001493B1 (pt) Métodos e mecanismos para gerenciamento proativo de memória
Power et al. Operating system fundamentals