BRPI0304297B1 - método para gerenciamento proativo de memória - Google Patents

método para gerenciamento proativo de memória Download PDF

Info

Publication number
BRPI0304297B1
BRPI0304297B1 BRPI0304297A BR0304297A BRPI0304297B1 BR PI0304297 B1 BRPI0304297 B1 BR PI0304297B1 BR PI0304297 A BRPI0304297 A BR PI0304297A BR 0304297 A BR0304297 A BR 0304297A BR PI0304297 B1 BRPI0304297 B1 BR PI0304297B1
Authority
BR
Brazil
Prior art keywords
memory
pages
page
data
disk
Prior art date
Application number
BRPI0304297A
Other languages
English (en)
Other versions
BR0304297A (pt
Inventor
Cenk Ergan
Mehmet Iyigun
Michael R Fortin
Stuart Sechrest
Original Assignee
Microsoft Corp
Microsoft Technology Licensing Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp, Microsoft Technology Licensing Llc filed Critical Microsoft Corp
Publication of BR0304297A publication Critical patent/BR0304297A/pt
Publication of BRPI0304297B1 publication Critical patent/BRPI0304297B1/pt

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)
  • Static Random-Access Memory (AREA)
  • Debugging And Monitoring (AREA)

Abstract

"métodos e mecanismos para gerenciamento proativo de memória". trata-se de um método e sistema para gerenciamento proativo, resiliente e auto-sintonizante de memória que resulta em aperfeiçoamentos de desempenho reais e captados em gerenciamento de memória, ao carregar e manter dados que são prováveis de serem necessários dentro da memória, antes dos dados serem realmente necessários. o sistema inclui mecanismos dirigidos ao monitoramento de uso histórico de memória, análises de uso de memória, memória de renovação com páginas altamente valiosas (por exemplo, altamente utilizadas), eficiência de pré-busca de i/o, e gerenciamento de disco ativo. baseado nas informações de uso de memória, as páginas são priorizadas com valores relativos, e os mecanismos que funcionam para pré-buscar e/ou manter as páginas mais valiosas em memória. as paginas são pré-buscadas e mantidas em um conjunto de página inativa priorizada que inclui inúmeros subconjuntos, através dos quais as páginas mais valiosas permanecem em memória com relação a páginas menos valiosas. os dados valiosos que são paginados podem ser automaticamente trazidos de volta, de maneira resiliente. os benefícios incluem reduzir ou até eliminar de forma significativa as i/o de discos devido a falhas de página de memória.

Description

"método para gerenciamento proativo de memória" REMISSÃO RECÍPROCA A PEDIDOS AFINS
[001] A presente invenção reivindica o benefício do pedido provisório de patente Norte-Americana N° 60/416.115, depositado em 4 de outubro de 2002 e incorporado no presente documento à guisa de referência.
CAMPO DA INVENÇÃO
[002] A invenção refere-se, de um modo geral, ao gerenciamento de memória de computador.
ANTECEDENTES DA INVENÇÃO
[003] Os sistemas contemporâneos de computação são equipados com quantidades significativas de memória de acesso aleatório, ou RAM, atualmente sob a ordem de 256 megabytes até alguns giga-bytes. Entretanto, os métodos e mecanismos de gerenciamento de memória atuais foram realizados há muitos anos atrás, quando a RAM era uma fonte de computação relativamente escassa. Para proporcionar grandes quantidades de memória virtual a processos de programas, tal mecanismo de gerenciamento de memória depende de técnicas, tais como pagi nação sob demanda, que transferem essencialmente páginas de dados a partir da RAM para uma unidade de disco quando uma certa quantidade de espaço da RAM fosse necessária por outro processo e se aqueles dados transferidos ainda fossem novamente necessários por seu processo correspondente, lendo os dados de volta a partir do disco para a RAM.
[004] Com tal gerenciamento de memória convencional, as páginas necessárias ficam frequentemente ausentes da memória, mesmo que a quantidade total de código e dados que é mencionada em padrões de uso típico seja razoavelmente estável com relação ao tempo e seja pequena com relação ao dimensionamento de memória atual. Isto é essencialmente um resultado de dois fatores, isto é, que o sis- tema sofre transições que podem forçar as páginas necessárias a partir da memória e/ou mudam rapidamente o conjunto de páginas necessárias, e erosão, em que páginas que não estão em uso ativo são sobrepostos por outros dados.
[005] Os exemplos de tais transições incluem inicialização a partir de um estado desligado, que mudam de um usuário para outro, retornam de um modo de inatividade (standby) ou de hibernação, utilizam uma aplicativo consumidor de memória (memory hungry application), (por exemplo, jogar um jogo e então prossegue de volta ao sistema de uso típico, e retorna ao computador após um longo retardo. É desnecessário dizer que, além de operação rápida normal, os clientes desejam muito sistema e uma partida rápida no programa que sigam tais transições. Entretanto, com o gerenciamento de memória atual, isto não é possível no momento. Por exemplo, testes mostraram que, após um retorno da hibernação, um disparo de aplicativo pode levar de nove a onze segundos, mesmo que grandes quantidades de memória não sejam utilizadas neste momento. Isto deve-se ao fato de que a maior parte do tempo de disparo é consumida em transferências de disco, com a CPU bloqueada, que aguarda o código necessário e páginas de dados a serem lidos a partir do disco, que como resultado de pagina-ção de demanda é essencialmente realizada uma página por vez. Em suma, após tais transições, o conjunto de páginas de maior utilidade não estão frequentemente em memória, que resultam em paginação de demanda que proporciona uma experiência desagradável ao usuário devido à lentidão de tempos de transferência de entrada/saída(l/0).
[006] Embora algumas transições envolvam evicção deliberada de páginas de memória, e outras resultam em demanda repentina para memória, ainda outras resultam em páginas que tornam-se inativas e são trocadas por discos. Mais particularmente, as páginas de memória que estão em conjuntos de trabalho podem ser aparadas e colocadas dentro de um cache de páginas que não estão em uso, referidas no presente documento como um conjunto de páginas em espera (por exemplo, uma lista inativa em um sistema baseado na plataforma Windows®), juntamente com as páginas de arquivos que estão fechados. Para reduzir o número de discos de leituras e gravações, o gerenciamento de memória monitora quais as páginas de memória no conjunto de páginas inativas foram menos acessadas recentemente, e quando a memória é necessária, seleciona-se aquelas páginas para transferência para disco, essencialmente em tipos de fila primeiro a entrar, primeiro a sair (FIFO).
[007] Embora esta técnica trabalhe na medida em que reduz-se em transferências de disco de redução, porque isto resulta em páginas recentemente mais usadas pelos processos que são aqueles que permanecem em memória, aplicativos modernos possuem código e requerimentos de dados amplos. Como resultado, em curto prazo, as páginas podem ser chamadas de volta a partir deste conjunto de páginas inativas, entretanto, por um prazo mais longo, com gerenciamento de memória convencional, a fila simples (FIFO) do conjunto de página inativa resulta em erosão, na qual páginas possivelmente valiosas (porém não utilizadas recentemente) são sobrepostas por páginas menos valiosas (porém mais utilizadas recentemente). Consequentemente, é necessário um número significativo de transferências l/O até e a partir dos discos. Mesmo em sistemas potentes estas transferências de l/O atuam como um estágio de estrangulamento, onde o sistema subutiliza grandes quantidades de memória disponível, deixando a CPU inativa por grande quantidade de tempo.
[008] Em suma, os programas modernos requerem grande quantidade de memória de acesso aleatório e rápidas capacidades de processamento, que os dispositivos de computação modernos oferecem. Entretanto, a tecnologia atual de gerenciamento de memória não cor- responde-se de forma adequada a esses recursos conjuntamente, pois o gerenciamento de memória atual foi desenvolvido em um momento em que a memória estava escassa, e foi então projetado com a visão geral de que o uso de disco substancial era inevitável, ainda que não incômodo devido ao fato de esses aplicativos serem pequenos e a realização de multitarefas ser rara. Como tal, o gerenciamento de memória convencional não tenta limitar o uso de disco, além de manter em memória as páginas recentemente mais acessadas. Em computação moderna, isto resulta em uma quantidade de significativa de uso de disco, e desse modo proporciona um estágio de estrangulamento que prejudica tanto o desempenho real como o percebido.
SUMÁRIO DA INVENÇÃO
[009] Resumidamente, a presente invenção é dirigida a uma arquitetura de gerenciamento de memória aperfeiçoada, que compreende sistemas, métodos e mecanismos que proporcionam um sistema de gerenciamento de memória proativo, resiliente e de auto-sintonizaçâo. O sistema de gerenciamento de memória funciona para proporcionar melhoras de desempenho real e percebido em gerenciamento de memória, ao carregar e manter em memória dados que são provavelmente necessários, antes dos dados serem realmente necessários. As páginas de dados podem ser priorizadas com um valor/pontuação de acordo com vários fatores, que incluem suas utilidades, frequências de uso, tempo de último uso, facilidade de transferência de dados e outra, informação baseada no contexto. Os mecanismos funcionam para pré-buscar e/ou manter os dados mais valiosos em memória. Se os dados precisarem ser trocados ou sobrepostos, os dados podem ser automaticamente trazidos de volta de uma maneira resiliente, não devido à demanda real, porém devido à demanda esperada.
[0010] Ao preencher a memória com dados apropriados antes daquelas páginas serem necessárias, o sistema de gerenciamento de memória reduz ou elimina substancialmente as operações de transferência de disco sob demanda, e então reduz ou elimina os estágios de estrangulamentos l/O em muitos cenários de cliente significativos. Para esse fim, as implementações da presente invenção compreendem diversos mecanismos dirigidos ao monitoramento do histórico de uso de memória, análise de uso de memória, renovar a memória com páginas altamente valiosas (por exemplo, altamente utilizadas), eficiência de pré-busca, e gerenciamento de disco ativo.
[0011] Para obter a informação necessária para designar um valor para uma página, um rico conjunto de informações sobre cada página é monitorado através de técnicas de rastreamento e registro, de preferência até um período de tempo relativamente longo. Os dados avaliados são processados transformando-se em informações gerenciáveis, que são mantidas e acessadas como parte de um processo de tomada de decisão que reequilibra os conteúdos de memória em resposta aos eventos relacionados com a memória e/ou sobre uma base temporiza-da de forma que os dados mais valiosos sejam mantidos e/ou pré-buscados dentro da memória com relação aos dados menos valiosos. O valor de prioridade permite que um conjunto de página inativa (por exemplo, uma lista inativa em um sistema baseado na plataforma Windows®), de páginas de memória seja priorizado, tal que as páginas no conjunto de página inativa possam ser de maior prioridade em termos de valor com relação a outras páginas, independente de quando referenciadas pela última vez, e desta maneira mantidas em memória com relação a outras páginas. A pré-busca resiliente e proativa carrega páginas valiosas oriundas do disco para o conjunto de página inativa, em uma ordem determinada pela prioridade. A carga é de preferência realizada em uma baixa prioridade, transferência em segundo plano l/O para impedir que interfira em uma operação normal do usuário, embora esta também possa ser realizada em uma operação em primeiro plano.
[0012] Como resultado da presente invenção, a utilização da CPU é significantemente aumentada sem interferir no uso normal de sistema. Para muitos usuários de computador, todo o conjunto de páginas de memória realmente usado é pequeno o bastante para manter em memória, sendo que resulta em inúmeras falhas de demanda (para ler os dados necessários do disco) reduzidas a zero ou quase zero.
[0013] Em uma implementação, um mecanismo de rastreamento observa atividade relacionada à memória, e uma parte registrante efetua o registro dos resultados das observações. Um integrador combina a parte registrante que resulta com os prévios registros dentro de um base de dados de informação de página. Um serviço de extração acessa os dados no base de dados de informação de página para desenvolver planos de cenário a partir do mesmo, e os planos de cenário são analisados para priorizar as páginas dentro de uma lista. A lista é então classificada de acordo com o valor calculado para cada página, que foi baseado nas observações de uso de memória e possivelmente outros fatores.
[0014] Uma parte de reequilíbrio, disparada por um evento (por exemplo, sistema ou tempo gerado) trabalha com um planejador l/O para adicionar páginas em um conjunto de página inativa priorizado, em uma ordem determinada por cada valor calculado de página. O conjunto de página inativa priorizado inclui inúmeros subconjuntos que correspondem aos valores para cada página. Estes valores podem mudar com o tempo e/ou baseados no uso real, e desta maneira as páginas podem mover-se de forma lógica entre os subconjuntos. À medida em que necessita-se de memória, se sob demanda ou para pré-busca em segundo plano, os dados de prioridade mais baixa no subconjunto são paginados primeiro. Desta maneira, as páginas mais valiosas, conforme determinado por cálculos e observações de uso atual, bem como contexto e outras informações, são colocadas automaticamente em memória em uma maneira de não-interferência, e tende a permanecer nesta com relação às páginas menos valiosas.
[0015] Outras vantagens tornar-se-ão óbvias a partir da seguinte descrição detalhada quando tomadas em conjunto com os desenhos, nos quais: BREVE DESCRICÃO DOS DESENHOS
[0016] A Figura 1 é um diagrama de blocos que representa, de um modo geral um sistema de computador dentro do qual a presente invenção pode ser incorporada;
As Figuras 2 e 3 compreendem diagramas de blocos que representam uma relação básica entre os componentes do sistema de acordo com um aspecto da presente invenção;
As Figuras 4A e 4B compreendem um diagrama de blocos que representa uma arquitetura geral adequada para realizar gerenciamento proativo de memória de acordo com um aspecto da presente invenção; A Figura 5A é um diagrama de blocos que mostra uma maneira na qual um conjunto de página inativa pode manter dados de página; A Figura 5B é um diagrama de blocos que representa uma maneira alternativa na qual um conjunto de página inativa priorizado pode manter dados de página em subconjuntos priorizados, de acordo com um aspecto da presente invenção; e A Figura 6 é um diagrama de blocos que representa um sistema de restrição para compelir atividades em segundo plano para limitar interferência com aplicativos do usuário, de acordo com um aspecto da presente invenção.
DESCRIÇÃO DETALHADA
AMBIENTE DE OPERAÇÃO EXEMPLIFICATIVO
[0017] A Figura 1 Ilustra um exemplo de um ambiente de sistema de computação adequado 100 sobre o qual a invenção pode ser im- plementada. O ambiente de sistema de computação 100 é somente um exemplo de um ambiente de computação adequado e não pretende sugerir qualquer limitação para o escopo de uso ou funcionalidade da invenção. O ambiente de computação 100 não deve ser interpretado como se tivesse qualquer dependência ou requerimento com relação a qualquer um nem combinação de componentes ilustrados no ambiente de operação exemplificativo 100.
[0018] A invenção é operacional com inúmeros outros propósitos gerais ou configurações ou ambientes de sistema de computação com propósito especial. Exemplos de ambientes, sistemas de computação bem conhecidos, e/ou configurações que podem ser adequados para uso com a invenção incluem, porém sem caráter limitativo: computadores pessoais, computadores de servidor, dispositivos de mão ou portáteis, dispositivos de mesa gráfica, sistemas de multiprocessador, sistemas baseados em microprocessador, aparelhos decodificadores, eletrônica de consumo programável, PCs de rede, microcomputadores, computadores de quadro principal, ambientes de computação distribuídos que incluam qualquer um dos sistemas ou dispositivos acima, e similares [0019] A invenção pode ser descrita no contexto geral das instruções executáveis por computador, tais como módulos de programa, que são executados por um computador. Geralmente, os módulos de programa incluem rotinas, programas, objetos, componentes, estruturas de dados, e assim por diante, que realizam tarefas particulares ou implementam tipos de dados abstratos. A invenção pode ser também exercida em ambientes de computação distribuídos onde as tarefas são realizadas por dispositivos de processamento remoto que são conectados através de uma rede de comunicações. Em um ambiente de computação distribuído, os módulos de programa podem ser localizados em meios de armazenamento de computador local e/ou remoto que incluem dispositivos de armazenamento de memória.
[0020] Com referência à Figura 1, um sistema exemplificativo para implementar a invenção inclui um dispositivo de computação de propósito geral na forma de um computador 110. Os componentes do computador 110 podem incluir, porém não limitados a, uma unidade de processamento 120, uma memória de sistema 130, e um barramento de sistema 121 que acopla vários componentes de sistema que incluem a memória de sistema para a unidade de processamento 120. O barramento de sistema 121 pode ser qualquer um dos diversos tipos de estruturas de barramento que inclua um barramento de memória ou controlador de memória, um barramento periférico, e um barramento local que utilize uma variedade de arquiteturas de barramento. À guisa de exemplo, e sem caráter limitativo, tais arquiteturas incluem barramento (ISA) Industry Standard Architeture, barramento (MCA) Micro Channel Architeture, barramento (EISA) Enhanced ISA, barramento local (VESA) Video Eletronics Standards Association, e barramento (PCI) Peripheral Component Interconnect porém também conhecido como barramento Mezzanine.
[0021] O computador 110 inclui tipicamente uma variedade de meios legíveis por computador. O meio legível por computador pode ser qualquer meio disponível que possa ser acessado pelo computador 110 e inclui tanto meio volátil como não-volátil e meio removível e não-removível. À guisa de exemplo, e sem caráter limitativo, o meio legível por computador pode compreender meio de armazenamento de computador e meio de comunicação. O meio de armazenamento de computador inclui meio volátil e não-volátil, removível e não-removível implementado em qualquer método ou tecnologia para armazenamento de informações tais como instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados. O meio de armazenamento de computador inclui, porém não limitado a, RAM, ROM, EEPROM, memória instatânea ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento de disco óptico, cassetes magnéticos, fitas magnéticas, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, ou qualquer outro meio que possa ser usado para armazenar as informações desejadas e que possa ser acessado pelo computador 110. Os meios de comunicação tipicamente concretizam instruções legíveis por computador,estruturas de dados, módulos de programa ou outros dados em um sinal de dados modulados tal como onda portadora ou outro mecanismo de transporte e incluem qualquer meio de distribuição de informações. O termo "sinal de dados modulados" significa um sinal que possui um ou mais conjuntos de características do mesmo ou alterados de tal maneira para codificar informações no sinal. À guisa de exemplo, e sem caráter limitativo, os meios de comunicação incluem meios cabeados tais como rede com fio ou conexão direta com fio, e meios sem fio tais como acústico, RF, infravermelho e outro meios sem fio. As combinações de qualquer um destes acima deve estar também incluído dentro do escopo do meio legível por computador.
[0022] A memória de sistema 130 inclui meio de armazenamento de computador na forma de memória volátil e/ou não-volátil tal como memória somente de leitura (ROM) 131 e memória de acesso aleatório (RAM) 132. Um sistema básico de entrada/saída 133 (BIOS), contendo as rotinas básicas que ajudam a transferir informações entre os elementos dentro do computador 110, tal como durante a inicialização, é tipicamente armazenado em ROM 131. A RAM 132 contém tipicamente dados e/ou módulos de programa que são imediatamente acessíveis e/ou atualmente operadas através da unidade de processamento 120. À guisa de exemplo, e sem caráter limitativo, a Figura 1 ilustra um sistema operacional 134, programas aplicativos 135, outros módulos de programa 136 e dados de programa 137.
[0023] O computador 110 pode também incluir outros meios de armazenamento de computador removíveis/não removíveis, volá-teis/não voláteis. Somente à guisa de exemplo, A Figura 1 ilustra uma unidade de disco rígido 141 que lê a partir de ou grava para um meio magnético não-removível, não-volátil, uma unidade disco magnético 151 que lê a partir de ou grava para um disco magnético removível, não-volátil 152, e uma unidade de disco ótico 155 que lê a partir de ou grava para um disco ótico removível, não-volátil 156 tal como um CD ROM ou outro meio ótico. Outros meios de armazenamento de computador removíveis/não-removíveis, voláteis/não-voláteis que podem ser utilizados no ambiente de operação exemplificativo incluem, porém não limitados a, cassetes de fita magnética, placas de memória instantânea, discos versáteis digitais, fita de vídeo digital, RAM de estado sólido, ROM de estado sólido, e similares. A unidade de disco rígido 141 é tipicamente conectada ao barramento de sistema 121 através de uma interface de memória removível tal como interface 140, e unidade de disco magnético 151 e unidade de disco ótico 155 são tipicamente conectadas ao barramento de sistema 121 através de uma interface de memória removível, tal como interface 150.
[0024] As unidades e seus meios de armazenamento de computador associados, discutidos acima e ilustrados na Figura 1, proporcionam armazenamento de instruções legíveis por computador, estruturas de dados, módulos de programa e outros dados para o computador 110. Na Figura 1, por exemplo, a unidade de disco rígido 141 é ilustrada como um sistema operacional de armazenamento 144, programas aplicativos 145, outros módulos de programa 146 e dados de programa 147. Nota-se que estes componentes tanto podem ser iguais como diferentes do sistema operacional 134, programas aplicativos 135, outros módulos de programa 136, e dados de programa 137. O sistema operacional 144, programas aplicativos 145, outros módulos de programa 146, e dados de programa 147 são dados diferentes números no presente documento para ilustrar que, em um mínimo, eles são cópias diferentes. Um usuário pode ingressar comandos e informações no computador 110 através de dispositivos de entrada tais como uma mesa gráfica, ou digitador eletrônico 164, um microfone 163, um teclado 162 e um dispositivo de indicação 161, comumente referido como mouse, cursor trackball, mesa sensível ao toque. Outros dispositivos de entrada não mostrados na Figura 1 podem incluir um punho de comando (joystick),sensor de jogo, prato de satélite, dispositivo de varredura ou similares. Estes e outros dispositivos são frequentemente conectados à unidade de processamento 120 através de uma interface de entrada com o usuário 160 que é acoplada ao barramento de sistema, porém pode ser conectada através de outra interface e estruturas de barramento, tais como porta paralela, porta de jogos ou um barramento serial universal (USB). Um monitor 191 ou outro tipo de dispositivo de vídeo é também conectado ao sistema de barramento 12 através de uma interface, tal como interface de vídeo 190. O monitor 191 pode ser também integrado com um painel de tela sensível ao toque ou similar. Nota-se que o monitor e/ou painel de tela sensível ao toque pode ser fisicamente acoplado em um alojamento no qual o dispositivo de computação 110 é incorporado, tal como em um computador pessoal do tipo mesa gráfica. Ademais, computadores tal como o dispositivo de computação 110 pode também incluir outros dispositivos de saída periféricos tais como auto falantes 195 e impressora 196, que podem ser conectados através de uma interface periférica de saída 194 ou similar.
[0025] O computador 110 pode operar em um ambiente de rede que utiliza conexões lógicas para um ou mais computadores remotos, tal como um computador remoto 180. O computador remoto 180 pode ser um computador pessoal, um servidor, um roteador, um PC de rede, um dispositivo de rede não hierárquica ou outro nó de rede comum, e inclui tipicamente muitos ou todos os elementos descritos acima com relação ao computador 110, embora somente um dispositivo de armazenamento de memória 181 seja ilustrado na Figura 1. As conexões lógicas mostradas na Figura 1 incluem uma rede de área local (LAN) 171 e uma rede remota (WAN) 173, porém pode incluir também outras redes. Tais ambientes de rede são comuns em escritórios, redes de computador empresarial corporativa, intranet e a Internet. Por exemplo, na presente invenção, o sistema de computador 110 pode compreender máquina-fonte a partir da qual dados são emigrados, e o computador remoto 180 pode compreender a máquina de destino. Nota-se entretanto que as máquinas fonte e de destino não precisam ser conectadas através de uma rede ou qualquer outro meio, porém em vez disso, os dados podem ser emigrados através de qualquer meio capaz de ser gravado pela plataforma-fonte e lido pela plataforma ou plataformas de destino.
[0026] Quando usado em um ambiente de rede LAN, o computador 110 conecta-se ao LAN 171 através de uma interface de rede ou adaptador 170. Quando usado em um ambiente de rede WAN, o computador 110 inclui tipicamente um modem 172 ou outro meio para estabelecer comunicações com relação à WAN 173, tal como a Internet. O modem 172, que pode ser interno ou externo, pode ser conectado ao barramento de sistema 121 através da interface de entrada com o usuário 160 ou outro mecanismo apropriado. Em um ambiente de rede, os módulos de programa mostrados com relação ao computador 110, ou partes dos mesmos, podem ser armazenados no dispositivo de armazenamento de memória remota. À guisa de exemplo, e sem caráter limitativo, A Figura 1 ilustra programas aplicativos remotos 185 à medida em que estão presentes no dispositivo de memória 181.Será avaliado que as conexões de rede mostradas são exemplificativas e outros meios de estabelecer um link de comunicação entre os computadores podem ser utilizados.
GERENCIAMENTO PROATIVO DE MEMÓRIA
[0027] Um aspecto da presente invenção é, em parte, geralmente dirigido em direção a uma arquitetura de gerenciamento de memória melhorada que compreende sistemas, métodos e mecanismos que resultam em melhora de desempenho atual e percebido através de aspectos significativos de interface com usuário, programas aplicativos, e software de sistema operacional. Para essa finalidade, como representado na Figura 2, a presente invenção proporciona um sistema de gerenciamento de memória proativa, resiliente e de auto-sintonização 200 que monitora as atividades e os trabalhos relacionadas de memória de um usuário para assegurar, pelo menos a um nível relativamente alto de satisfação, que os dados necessários estejam presentes em memória de acesso aleatório 202 (ou simplesmente "memória" como usado no presente documento) antes dos dados serem necessários, em vez de lidos dentro da memória 202 mediante a demanda de um disco 204 (ou outro, mecanismo de armazenamento secundário equivalente, tais como uma memória instantânea, uma fonte de dados de rede, uma unidade de fita e/ou virtualmente qualquer tipo de armazenamento de dados). Em outras palavras, o gerenciamento de memória proativa e resiliente traz potencialmente dados úteis para dentro da memória e tenta manter estes dados em memória. Se os dados úteis precisarem ser trocados ou sobrepostos, os dados podem ser automaticamente trazidos de volta de maneira resiliente, não devido à demanda atual, porém de preferência devido à demanda esperada.
[0028] Para essa finalidade, a presente invenção impulsiona grandes quantidades de memória atualmente disponíveis para manter em memória os conjuntos de trabalho de processos potencialmente ativos, e manter a conservação de registro, estruturas de dados, e algoritmos que o sistema utiliza para executar o gerenciamento de memória proa-tiva e resiliente. Espera-se que tal conservação de registro, estruturas de dados, e outros algoritmos torne-se mais e mais favorável com o tempo, entretanto as implementações atuais resultaram em reduções significativas em transferências l/O sob demanda.
[0029] Como pode ser facilmente avaliado, ao ter a memória 202 preenchida com dados apropriados (por exemplo, dispostos em páginas) antes destas páginas serem necessárias, o sistema de gerenciamento de memória 200 da presente invenção reduz ou elimina substancialmente operações de transferência de disco mediante demanda, e desta maneira reduz ou elimina estágios de estrangulamento l/O em muitos cenários de cliente significativo. Nota-se que conforme usado no presente documento, o termo "página" pode referir-se à menor quantidade de dados que o sistema de gerenciamento de memória 200 manuseia como uma unidade, (por exemplo, 4096 bytes), entretanto não há intenção de limitar a presente invenção a qualquer quantidade fixa particular de dados, e assim a "página" de dados pode ser alguma outra quantidade fixa, ou ainda pode ser uma quantidade variável de dados (por exemplo, tão pequena como um byte ou múltiplo do mesmo), ou até transferências de fluxo. Desta maneira, um sistema de gerenciamento de memória que pode ler /gravar/ quantidades arbitrárias de fluxo de dados, em vez de uma quantidade de forma fixa ou múltipla do mesmo, por exemplo, continua equivalente à leitura e gravação de uma ou mais páginas.
[0030] Conforme descrito abaixo, as implementações da presente invenção compreendem diversos mecanismos, que incluem aqueles dirigidos em direção a monitoramento de histórico uso de memória, análise de uso de memória, de renovação com páginas altamente vali- osas (por exemplo, altamente utilizadas), gerenciamento de disco eficiente,e ativo. Em geral, estes mecanismos trabalham juntos como o sistema de gerenciamento de memória proativa 200, para assegurar que os dados necessários estarão em memória antes de serem requeridos. Para esse fim, algoritmos, que sustentam estruturas de dados, e métodos estendem gerenciamento de memória para operar de forma proativa, ao tirar vantagem de vários tipos de dados de uso de memória e outras informações que podem ser adquiridas continuamente e/ou por um quadro de tempo relativamente longo. Nota-se, entretanto, que a presente invenção não requer qualquer combinação de tais mecanismos, porém pode proporcionar inúmeros benefícios e melhor relacionados com a memória com poucos e/ou mecanismos alternativos. Por exemplo, ao determinar um valor indicativo de que as páginas são mais prováveis de serem usadas que outras, e deixa-se as páginas mais valiosas em memória, as reduções em transferências l/O podem ser obtidas sem qualquer pré-busca em segundo plano de páginas em memória, e mesmo que as informações usadas para determinar o valor daquelas páginas sejam adquiridas intermitentemente e/ou somente com relação a um período de tempo relativamente curto.
[0031] Ademais, métodos e mecanismos de gerenciamento de memória da presente invenção podem melhorar o uso de memória ao serem ativos não só em períodos quando a memória está cheia e troca de decisões precisam ser feitas, porém em outros níveis de uso de memória, que inclui quando a memória está relativamente vazia. Por exemplo, a frequência em que uma página carregada é acessada pode ser calculada independente se o sistema está sob pressão de memória. Além disso, em vez de gerenciar somente o que está atualmente em memória, a presente invenção gerencia a memória de forma global, incluindo o que está atualmente em disco, e vice-versa.
[0032] A presente invenção representa o estado de memória de inúmeras maneiras, que inclui ao adicionar as informações que são atualmente mantidas em torno de cada página de memória. Tais informações novas podem incluir a frequência de cada página de uso com o tempo, em vez de simplesmente informações implícitas e explícitas com base no tempo de último uso. Implementações exemplificati-vas mantêm também informações sobre páginas que não estão atualmente presentes em memória. Conforme descrito abaixo, as estruturas de dados são utilizadas para organizar a memória livre que segura ou pode segurar dados potencialmente úteis, e são usadas para controlar quando a memória é feita disponível para usos alternativos.
[0033] Para obter as informações, um rico conjunto de informações sobre cada página é monitorado através de técnicas de rastrea-mento e registro, de preferência, com relação a um período de tempo relativamente longo. Ao observar as diversas páginas usadas por processos quando ativas com relação a um período relativamente longo, o código que é acessado e os arquivos de dados que são lidos são gravados, proporcionando um cálculo significativo do valor de uma página para, assim, estabelecer conjuntos de trabalho potenciais. Estes dados calculados são mantidos e acessados como parte de um processo de tomada de decisão que reequilibra os conteúdos de memória em resposta a eventos relacionados com a memória e/ou de outra maneira (Por exemplo, de forma periódica). Em outras palavras, o monitoramento de dados ricos resulta em informações que quando analisadas permitem que mais páginas valiosas sejam mantidas e/ou pré-buscadas dentro da memória com relação a páginas menos valiosas, se o valor for determinado por dados mais prováveis de serem necessários, facilidade de transferência de dados, contexto e/ou outros critérios.
[0034] Em geral, a presente invenção mantém informações ricas não tradicionais por página de memória para obter um valor relativo para cada página, tanto para identificar páginas de alto valor como páginas de baixo valor, quer a página esteja atualmente em memória quer não ou em outro armazenamento. Essas ricas informações (incluindo dados de padrão/frequência/agrupamento/e contexto) são mantidas em memória (e também persistidos) para páginas em memória bem como para páginas que não estão mais em memória (por exemplo, estão atualmente sobre um disco rígido ou flexível, mídia de CD, mídia de DVD, rede, memória instantânea e assim por diante) ou nunca estiveram em memória. Estas informações são usadas para pré-carregar (pré-buscar) páginas valiosas que não estão em memória, dentro da memória, e/ou para manter páginas mais valiosas com relação a páginas menos valiosas. Uma maneira é isto ser realizado através de um mecanismo de complemento de conjunto de trabalho que continua a trabalhar em entradas de conjunto que contêm as informações de uso ricas para páginas que não estão mais em memória porém são válidas no espaço de endereço para o conjunto de trabalho Outra maneira é através de um conjunto de página inativa estendida, (por exemplo, um cache de páginas que não estão em uso, tal como uma lista inativa em um sistema baseado em Windows®), que é construído baseado no mecanismo histórico de página de arquivo, onde mais descritores de página física e entradas são alocados que há memória física, e estas são usadas para manter informações padrão de uso, frequência, agrupamento e/ou contexto sobre páginas que deixam a memória.
[0035] Diversas estatísticas são monitoradas para derivar padrões de referência e/ou frequência de uso que determina o indício da necessidade de uma página, tal como uma conta de período utilizado, tempo de criação, tempo de último acesso e assim por diante, conforme descrito abaixo. Estes tipos de estatísticas podem ser mantidos em memória por entradas de página ou faixas/grupos que podem ser usa- dos para derivar padrões de referência, frequência de uso e assim por diante. Tais estatísticas podem ser entradas mantidas e/ou objetos para arquivos, objetos de mapeamento de memória ou outros grupos de página. Ademais, máquinas de estado podem ser dispostas por página ou grupo de página que possui estados além de bits de idade, tais como para cobrir quando uma página for removida da memória e trazida de volta. Estas informações variadas podes ser usadas para priorizar páginas em memória em subconjuntos, e proteger páginas valiosas contra repropostas, tais como quando os programas fazem referência a grandes quantidades de páginas uma ou duas vezes. A priorização pode ser explícita, e não inferidas a partir da posição em uma lista. A prioridade pode ser periódica ou ocasionalmente recalculada partir de padrões de uso, frequência, contexto, agrupamento capturados e assim por diante.
[0036] Ademais, o custo para trazer uma página particular para dentro da memória pode ser um fator para determinar o valor da mesma, por exemplo, se a página for retrocedida ao arquivo de página, em um arquivo pequeno, ou entre páginas que são sequencialmente acessadas/movidas podem ser usadas para estabelecer este fator de custo. Tal avaliação pode ser feita por página, porém também pode ser feita mais compacta, tal como ao manter algumas ou todas informações ricas somente em um subconjunto de páginas, obter e/ou manter estatísticas e contas de grupo de páginas, para objetos de arquivo, para seção/mapeamentos, e assim por diante. Ademais, os dados de estado podem ser obtidos e utilizados como parte das informações de página estendida.
[0037] Por exemplo, ao observar o contexto, fatores que não estão normalmente sob consideração em decisões de gerenciamento de memória podem ser levados em conta, incluindo estado da potência e estado do disco. Os eventos observados são também levados em con- ta, para tirar ações apropriadas para rápida recuperação a partir de inatividade/retorno, hibernação/retorno, e execução/termina-ção de programas que são conhecidos por possuírem grande impacto de memória.
[0038] Além de gravar tais informações de estado, outros mecanismos estão disponíveis para facilitar o gerenciamento de memória proativa da presente invenção. Por exemplo, os programas aplicativos podem declarar que certos dados são menos (ou mais) úteis que outros dados, por exemplo, dados necessários para lidar com um erro raro podem ser declarados como não indicados para serem usados novamente, onde tais dados são melhores candidatos a serem atribuídos ou ponderados com um valor inferior. Um usuário também pode indicar certos dados de prioridade maiores ou menores, por exemplo, um usuário que raramente usa um arquivo de ajuda de aplicativo pode proporcionar manualmente uma configuração para indicar a baixa prioridade da mesma para o aplicativo e/ou o sistema operacional, ou vice-versa, por exemplo, sempre se possível manter os dados de ajuda em memória. Para esse fim, as interfaces de programação de aplicativo (ou funções similares) para aplicativos podem ser proporcionadas para permitir que os programas contribuam para o gerenciamento de memória de sistema, tal como ao especificar que as páginas (por exemplo, uma região de páginas) não são mais valiosas, ou que outro conjunto de páginas é valioso. Os programas aplicativos podem também especificar contextos e operações que o gerenciador de memória pode usar para monitorar e valores de grupo de páginas referenciados naqueles programas. Desta maneira, os programas aplicativos podem marcar operações que o programa aplicativo acredita ser importantes com relação ao uso de memória, tal como exibir um diálogo de Abrir/Salvar Arquivo ou mostrar facetas de tarefa.
[0039] Os valores de página também podem ser usados para me- Ihorar o gerenciamento de memória de outras formas. Por exemplo, quando um programa efetua grandes quantidades de páginas de arquivo que são utilizadas uma ou duas vezes, somente páginas similares são repropostas, e as páginas de maior valor são protegidas. Além disso, a compactação de certas páginas é também possível, tal como ao possuir páginas de valor baixo e/ou intermediário compactadas em memória em vez de trocadas por disco. Por exemplo, um mecanismo aplicativo ou de descoberta/de partida pode indicar que deve ser desejável compactar algum bloco amplo de (por exemplo, valor baixo ou intermediário) dados em vez de gravá-los em disco para espaço livre.
[0040] As técnicas de rastreamento e registro que são usadas para proporcionar novas habilidades para gravar dados de uso de memória que passam entre estes atualmente conhecidos.Novos algoritmos podem minar estes dados e gerar instruções ou planos de cenário para pré-buscar dados a partir de disco de maneira eficiente, e para manter dados em memória baseados em priorização de valor. Por exemplo, devido às ricas informações, um conjunto de página inativa de páginas de memória pode ser priorizado, em vez de simplesmente dispostos em uma fila do tipo FIFO onde não há prioridade quantificada. Com a presente invenção, o conjunto de página inativa pode ser de maior prioridade em termos de valor com relação a outras páginas, independente de quando referenciadas pela última vez, e desta maneira mantém em memória com relação a outras páginas, que incluem estas na memória de conjunto de trabalho. Por exemplo, as páginas de um certo processo ativo podem provavelmente nunca ser usadas novamente, mesmo que essas páginas tenham sido recentemente usadas, onde tais páginas são de valor menor que as páginas que não foram usadas por um período muito longo porém potencialmente reuti-lizáveis.
[0041] Ademais, além de dados de estado observados e resulta- dos calculados tais como frequência de uso real, tempo de último uso e outros resultados calculados, outros critérios podem ser usados para determinar o valor de uma página. Por exemplo, o conceito de uma penalidade de substituição pode ser usado para determinar o valor de páginas em memória, por exemplo, dados dispersos de forma randô-mica (não contíguos em disco) são mais caros para transferir para e a partir de disco do que os dados sequenciais contíguos, e desta maneira estes podem ser mais valiosos para manter os dados dispersos de forma randômica em memória, e transferir os dados sequenciais, tais como se uma grande quantidade de memória for requerida de repente. Desta maneira, a utilidade de uma página pode ser determinada pelo custo de transferência l/O da mesma, juntamente com o rastreamento histórico de uso e máquina e outro contexto da mesma tais como considerações de estado de disco e potência. Ainda outros fatores podem ser usados, tais como o peso de uma entidade (por exemplo, aplicativo ou usuário) podem atribuir a certos dados.
[0042] Em uma implementação, o uso de memória de programas é monitorado em uma máquina, por exemplo, por usuário, e a utilidade potencial de páginas tanto em disco como em memória são categorizadas. A partir deste monitoramento e categorização, um orçamento de memória pode ser determinado, e baseado no orçamento, um mecanismo de segundo plano l/O tenta preencher a memória com as páginas de mais alta utilidade disponíveis, como determinado pelo valor quantificado de cada página. As páginas de memória desta maneira podem ser resilientes, por exemplo, removidas se necessário porém automaticamente re-armazenadas quando o espaço torna-se novamente disponível. Nota-se que esta abordagem, que conta com pagi-nação de demanda re-ativa (com agrupamento limitado ou pré-buscado) para trazer as páginas do disco somente no momento da primeira vez de uso, e as mantém de maneira FIFO. Com a presente invenção, quando as páginas estiverem residentes, as estruturas de memória mantêm as páginas em memória sobre uma base priorizada, que pode variar com o tempo à medida em que estas são usadas, tal que as páginas de maior utilidade permanecem em memória a menos que e até a memória ser necessária para outras atividades atuais.
[0043] Para identificar as páginas de alto valor (bem como baixo), e/ou dados de padrão de acesso são propagados e mantidos em um armazenamento persistente não-residente, onde estas informações (por exemplo, que inclui dados de padrão, frequência, contexto e/ou agrupamento) são persistidos através de partidas. Nota-se que além de gravar os dados de página para arquivos, estas também são mantidas, que inclui interpretar os dados, construir novos valores, e/ou extrair os dados para descartar dados redundantes ou desnecessários, tal que o que for salvo nos armazenamentos persistentes compreende não só dados de uso de página, como também dados de padrões discernidos. Conforme descrito abaixo, o valor de página e dados de valor de página e padrão de acesso que são mantidos e usados pelo gerenciamento de memória são capturados por rastreamento e/ou leitura de referências de página, juntamente com outros contextos e eventos (como descrito abaixo). Acompanhando a presente invenção, a operação de rastreamento e amostragem vai além de simplesmente manter as contas e uma quantidade pequena de estado por página em memória. Para esse fim, os mecanismos de rastreamento e leitura incluem rastreamento de bits acessados de PTE (entrada de tabela de página) que efetua o registro quando os bits acessados forem reinicializados. Nota-se que ao calcular e manter a taxa em que os dados de acesso são conduzidos e reinicializados limita-se a quantidade de dados que está efetuada em registro, por exemplo, para páginas frequentemente referenciadas, as informações não são efetuadas em registro em todos os acessos, porém de preferência a taxa em que os bits de acesso PTE são inicializados pode ser mantida. Ademais, as falhas de páginas (falhas irrecuperáveis e recuperáveis/falhas de transição) e pedidos de arquivo de gravação e leitura podem ser postos em registro. Os mecanismos para conjuntos de trabalho de processo instantâneos podem também obter dados de valor de página, como podem os mecanismos para rastrear a página à medida em que eles deixam a memória ou à medida em que são aparados dos conjuntos de trabalho.
[0044] Com estas informações, as páginas podem ser agrupadas e as informações extraídas, tanto para páginas no armazenamento persistente como em memória, através de seus períodos de último acesso, padrões de uso, frequência de uso, localidade física e virtual, quando as páginas são aparadas, e assim por diante. Estes agrupamentos podem então serem usados para trocar de forma eficiente as regiões de páginas em um período, e podem ser usadas no esquema no destino, tal como em arquivo de página. Por exemplo, se poucas páginas forem usadas, o grupo todo pode ser trazido de forma eficiente. Os mecanismos podem realizar "agrupamento inteligente" ao utilizar o arquivo persistente/histórico de página, tal como trazer todo o arquivo em um período, e assim por diante. As páginas podem ser adicionalmente agrupadas através de processos que as utiliza, com relação à parte da existência de um processo (por exemplo, disparo, desligamento), que as páginas são utilizadas, pelo qual as páginas falham irrecuperavelmente dentro de um período (por exemplo, operações de limite de disco). Outras formas de agrupamento de páginas incluem páginas referenciadas em torno de troca de tarefa, clique de mouse,hesitação, foco e outra entrada de usuário, uso baseado no tempo tal como nos períodos do dia e/ou dias da semana particulares, através dos processos de um usuário específico, e outros contextos, que incluem contextos especificados em aplicativos.
[0045] Em geral, o gerenciamento de memória de acordo com a presente invenção pode monitorar e adotar medidas com base em um rico conjunto de eventos e contextos, que incluem comutação de tarefa, criação de janela, diálogo, mudança de foco, hesitações e cliques de mouse, e outros eventos de entrada de usuário. Outros eventos e contextos incluem disparo e desligamento aplicativo, inicialização de sistema, inatividade/hibernação, retorno, troca de usuários, vídeo, áudio e/ou eventos de reprodução de mídia (por exemplo, início e fim), deslocamento de tempo de vídeo, conexão remota para o sistema (que inclui área remota de trabalho, protocolo telnet, e assim por diante, e contextos especificados de aplicativos.
[0046] De acordo com um aspecto da presente invenção, as páginas mais valiosas não só são mantidas em memória com relação a páginas menos valiosas, como as páginas mais valiosas podem ser carregadas dentro da memória (pré-buscadas) com relação a páginas menos valiosas (a memória é automaticamente ocupada) mesmo quando não há demanda para estas páginas. Esta ocupação e/ou re-equilíbrio pode ser feito diversas vezes e de diversas maneiras, incluindo após a re-inicialização, após uma grande quantidade de memória ser liberada, ou mesmo um tanto de forma contínua ou pelo menos regular, de preferência conforme uma operação de segundo plano. Prefere-se que o mecanismo de ocupação usado pelo gerenciador de memória não seja intruso, e baseado nos mecanismos de prioridade de inatividade l/Os e de detecção de inatividade. Conforme descrito abaixo, isto não é só um algoritmo de programa de execução, mas pode operar de forma acelerada ao observar padrões normais de entrada l/O, e fundo de programa de execução l/O quando não for provável a sobreposição ou devido a uma busca por l/O normal. Os mecanismos de detecção de inatividade (por exemplo, enfileirado com uma tarefa inativa) determinam quando o sistema está inativo ao examinar a entrada de usuário, CPU e disco, para realizar o equilíbrio de memória de maneira reservada. Entretanto, a ocupação de primeiro plano da memória é também valiosa de vez em quando, e desta maneira algumas ou todas as pré-cargas da memória podem ser altas em prioridade.
[0047] Durante a pré-busca, as operações l/O podem ser desta maneira gerenciadas para proporcionar eficiência através de mecanismos que restringem a interferência entre os aplicativos ativos e os programas ao realizar trabalho de segundo plano. Por exemplo, as transferências l/O podem ser classificadas para reduzir os períodos de busca, e as transferências l/O podem ser priorizadas de modo que as operações de segundo plano (por exemplo, pré-busca) não retardem as operações de primeiro plano e não interfiram no uso de sistema normal do usuário. Ademais, os mecanismos pode ser proporcionados para categorizar os pedidos l/O e passar essas informações por pilha de acionador, de modo que os mecanismos de baixo nível estejam disponíveis para programar a execução l/O com a prioridade apropriada. Isto permite que as categorias de l/O co baixa prioridade não interfiram nas categorias de alta prioridade, que podem exigir que evitem possíveis inversões de prioridade quando a dada operação for requerida várias vezes sob categorias diferentes. As (entradas /saídas) l/O de categorias diferentes podem ser despachadas utilizando algoritmos que buscam reconhecer padrões predominantes de uso e minimizar as interferências.
[0048] Um dos aspectos da operação l/O é impulsionar os recursos sob utilizados sem prejudicar o desempenho de outra atividade de sistema e de usuário, entretanto podem ocorrer problemas na leitura de páginas de arquivo de alta utilidade do disco sem interferir nos aplicativos de primeiro plano do usuário. Um tal problema é o requerimento para pré-buscar a partir de arquivos que o usuário exclusivamente já abriu, tais como arquivos de registro e índice de cache de arquivos de internet temporários. Em tal situação na qual o arquivo já está exclusi- vamente aberto, o arquivo não pode ser aberto normalmente para pré-busca a partir do mesmo. De forma semelhante, se o mecanismo de gerenciamento de memória abrir com êxito um arquivo para pré-busca, e um aplicativo que exija acesso exclusivo para o arquivo tentar abri-lo, o aplicativo falharia, resultando no que poderia ser percebido como erros de aplicativo aleatórios. Este problema pode ser desviado ao chamar um API especial para abrir o arquivo de maneira atípica na qual o sistema de arquivo não atualiza as informações compartilhadas para aquele arquivo.
[0049] Outro problema com relação a l/O é dirigido para emissão de pedidos l/O de maneira que não interfira nos pedidos de maior prioridade l/O sobre o sistema. Isto pode ser realizado, em parte ao não iniciar uma baixa prioridade l/O se o disco não estiver inativo por tempo suficiente (por exemplo, 75 ms) desde o último l/O normal. Entretanto, isto resulta em um problema de inversão de prioridade, que pode ser solucionado ao enviar uma leitura provisória com um sinalizador especial abaixo de uma pilha de l/O. Nota-se que o envio de um pacote de leitura provisória é uma maneira de comunicar-se com a pilha de l/O para informá-la da inversão de prioridade, que trabalha mesmo quando o pedido real for violado para muitos sub-pedidos que são dispersados na pilha tal que todos estes não possam ser atingidos através do manejo do pedido normal. Quando o acionador de filtro vê a correspondência IRP (pacote de pedido l/O), o mesmo promove a prioridade de todos l/Os relevantes do mesmo que sobrepõe-se com esta faixa, e a leitura provisória IRP é então completada sem realizar nenhum trabalho real. Entretanto, mesmo com este ajuste, que emite um ampla lista de paginação de baixa prioridade l/Os pode bloquear um encadeamento de alta prioridade. Desta maneira, isto pode ser evitado ao emitir somente pouca paginação de pré-busca de baixa prioridade l/Os, para um arquivo único em um período, que reduz grandemente o potencial para inversão de prioridade, e encurta sua duração. Com estes aperfeiçoamentos, uma vez que as páginas de arquivo de alta utilidade sobre o disco e as páginas de baixa prioridade em memória são identificadas, os pedidos podem ser imediatamente enfileirados sem preocupa-rem-se com a interferência na atividade atual do usuário.
[0050] Como resultado deste aspecto da invenção, a utilização da CPU é significantemente aumentada sem interferir no uso normal de sistema. Para muitos usuários típicos, todo o conjunto de páginas retornadas de arquivo realmente usadas é pequeno o bastante para manter-se em memória. As páginas necessárias podem ser pré-carregadas após à inicialização, e também re-armazenamento se ocorrer constantemente uma alta demanda temporária para memória e estas páginas tiverem de ser trocada por disco. Nota-se que se o conjunto de trabalho agregado de memória necessária for muito grande para um dado sistema e aplicativo, os subconjuntos do conjunto de trabalho podem ser mantidos em memória, ao mesmo tempo em que a presente invenção irá se esforçar para proporcionar l/O eficiente para o equilíbrio das páginas.
[0051] Entretanto, ao testar muitos cenários de clientes comuns, foi mostrado que o número total de páginas referenciadas mesmo em uma carga de trabalho relativamente complexa ajusta-se dentro de quantidades contemporâneas de memória. Por exemplo, conforme determinado através de uma variedade de experiências, as páginas necessárias para algumas cargas de trabalho muito significativas foram capazes de se ajustar dentro da memória de máquinas com 384 megabytes de RAM, e muitas em 256 megabytes de RAM. Devido ao fato da memória ser maior que o necessário, a presente invenção torna a mesma viável para pré-carregar as páginas apropriadas e eliminar as falhas de página, e desse modo executar os aplicativos de usuário em utilização total de CPU em resposta à entrada de usuário.
[0052] Como resultado da eliminação (ou quase eliminação) de falhas de página, a presente invenção permite que o disco seja gerenciado de forma muito mais eficiente do que feito presentemente. Por exemplo, em muitos casos é possível eliminar uma situação na qual um retorno do estado de inatividade é retardado por rotação ascendente de disco. Desta maneira, um benefício significativo de gerenciamento de memória estendida e proativa da presente invenção é que dispositivos portáteis, tais como dispositivos de computação de mesa gráfica, portáteis e outros dispositivos podem executar por longos períodos de tempo sem a leitura a partir do disco. Ao manter o disco a partir de rotação descendente quando sobre potência de batería representa um avanço de economias de potência significativas para usuários móveis, como um disco que é girado de forma descendente por períodos estendidos aumenta a vida da batería em máquinas portáteis, e aumenta a vida do disco em geral.
[0053] Sem contar, leituras de disco, a única razão para manter um disco em rotação é satisfazer as gravações. Entretanto, a atividade de gravação típica compreende gravações repetidas para os mesmos setores de disco, e inúmeros setores distintos gravados por longos períodos são tipicamente simples. Como resultado, um cache de setor de disco simples, que utiliza memória restaurada de batería ou outro NVRAM não-volátil pode geralmente manejar gravações, como representado na Figura 3, onde uma quantidade relativamente pequena de memória de acesso aleatório não-volátil (como representado pela caixa pontilhada) opcional (NVRAM) 302 pode ser parte de um sistema de armazenamento não-volátil total 300 que permite que o disco permaneça em rotação descendente quando algumas gravações não podem ser evitadas ou são desejáveis, por exemplo, quando um usuário salva um documento. Em uma implementação, NVRAM de sistemas testados capacitados de 32 megabytes para reter tais gravações de limite de disco por períodos relativamente longos, durante os quais o disco foi capaz de ser girado de forma descendente, ao mesmo tempo em que realiza tarefas comuns como ler e-mail, navegar na rede, editar e salvar documentos, e assim por diante. Nota-se que a memória de acesso aleatório 302 pode ser gerenciada de forma proativa através de um sistema de gerenciamento de armazenamento proativo opcional 304 (que pode ser um tanto similar ao sistema de gerenciamento de memória proativa 200 descrito no presente documento) para trocar as páginas armazenadas de menor valor a partir de NVRAM 302 por disco 204 quando o disco estiver girando, para liberar espaço para quando o disco for posteriormente girado de forma descendente [0054] Embora girar um disco de forma descendente imponha uma penalidade severa no primeiro acesso de disco requerido, o gerenciamento cuidadoso de cache de setor e de memória irá capacitar o impedimento de retardo sincrônicos na maioria das situações. Isto não será sempre possível, entretanto, e desta maneira o sistema operacional terá de fazer decisões estratégicas sobre quando é mais vantajoso parar e reiniciar os discos, e em alguns casos, futuros aplicativos devem ser capazes de ajudar em reinicializações de discos de ponte.
[0055] Para resumir, em geral, a presente invenção é dirigida com respeito às técnicas de gerenciamento de memória que reduzem substancialmente a necessidade de utilizar o componente mais lento, o disco, como um fator durante o uso de sistema normal. A presente invenção, através de uma nova abordagem resiliente e proativa para gerenciamento de memória, é disposta para distribuir compreensividade consistente em operações significativas relacionadas com a memória mesmo após a inicialização, troca rápida de usuário, ou saída de um grande aplicativo tal como um programa de jogo. Os retornos confia-damente rápidos da inatividade não atrasaram em rotação ascendente de disco também resultam da presente invenção, bem como tempos de resposta reduzidos por operações grandes e caras que são atualmente limitadas a disco devido à paginação de demanda. Outros benefícios resultam do armazenamento em cache de memória de auto-sintonização e esquema de arquivo automático sobre o disco que adapta-se aos padrões de uso de sistema e proporciona desempenho total melhorado. Ainda outros benefícios incluem problemas de mídia drasticamente reduzidos, ao projetar a memória e a largura de banda de disco usadas por aplicativos de mídia, proteção de atividades de segundo plano tal como dispositivos de varredura anti-vírus, índices de arquivo e programas de procedimento de identificação que podem incapacitar a compreensividade interativa, e a vida da batería, baixo ruído, e baixa vibração para dispositivos móveis, que resultam da conservação de discos em rotação descendente por longos períodos de tempo. As capacidades de fluxo melhoradas para aplicativos de mídia e do tipo e-home que possuem múltiplos fluxos de segundo plano também resultam da presente invenção.
[0056] A seção seguinte descreve diversas implementações exemplificai ivas, que devem ser observadas somente algumas maneiras de utilizar as informações que podem ser obtidas para gerenciar memória IMPLEMENTAÇÕES EXEMPLÍFICATIVAS
[0057] Pelo menos uma implementação exemplificativa da presente invenção descrita abaixo foi implementada em um sistema modificado executando um sistema operacional Microsoft Corporation's Windows® XP SP1 de execução e o sistema de arquivo Windows® NFTS. Entretanto, não há intenção de limitar a presente invenção a nenhum sistema operacional ou tipo de gerenciamento de memória, porém ao contrário, a presente invenção tende a operar e proporcionar benefícios com qualquer computador que tenha a memória gerenciada por um sistema de gerenciamento de memória, devido ao fato de a pre- sente invenção incluir um esquema de gerenciamento de cache inteligente e especulativo. Além disso, embora uma implementação exem-plificativa seja disposta com uma unidade de disco como um armazenamento secundário a partir desta a memória é carregada, deve estar prontamente óbvio que o armazenamento secundário não é necessariamente uma unidade de disco, e inclui alternativas tais como memória instantânea, fonte de dados de rede, unidade de fita ou virtualmente qualquer tipo de armazenamento de dados, e de fato um sistema de computador que é completamente sem disco pode tirar muitas vantagens da presente invenção.
[0058] De acordo com um aspecto da presente invenção e como geralmente representado na implementação exemplificativa 400 das Figuras 4A e 4B, são desenvolvidos diversos mecanismos que implementam a abordagem da presente invenção para gerenciamento de memória proativa, resiliente e de auto-sintonização. Tais mecanismos proporcionam o rastreamento e registro de páginas referenciadas, a proteção de páginas mais valiosas da erosão, e a busca e re-armazenamento destas páginas para transições seguintes de memória. Estes mecanismos executam como parte do núcleo quando necessário, porém pode incluir também serviços (desprivilegiados) de modo de usuário.
[0059] Conforme descrito acima, para rastrear e registrar o uso de memória e outros dados de contexto, a presente invenção acumula informações para obter dados ricos, que incluem quais as páginas acessadas para atividades frequentes do usuário atual. Por exemplo, cada acesso à páginas através de um processo simples, ou por todo o sistema em um período de tempo especificado, pode ser registrado. Para esse fim, como representado na Figura 4A, em uma implementação de gerenciamento de memória exemplificativa 400, um mecanismo de rastreamento 402, ou rastreador, rastreia referências de páginas ao monitorar a atividade relacionadas com a página 404, que inclui monitoramento de bits de acesso que corresponde às páginas que foram acessadas, e examinar como as páginas são trazidas para dentro da memória através de falhas.
[0060] Conforme também representado na Figura 4A, o rastrea-mento de informações é persistido por uma parte registrante 406 dentro de estruturas de dados (por exemplo, que incluem um ou mais registros prévios 408 e registros brutos 410, descritos abaixo) que identificam cada página como um par de deslocamento de arquivo, ou, para páginas privadas tais como pilhas, um par de endereço de conjunto virtual de trabalho. Mais particularmente, em uma implementação, o mecanismo de rastreamento 402 registra os eventos de memória virtual relacionados com o processo em armazenamentos temporários de núcleo (não mostrados), a partir dos quais os registros brutos 410 são posteriormente montados. Outra peça útil de informações que pode ser obtida pelo mecanismo de rastreamento 402 monitora se a página (quando referenciada) esteve residente em memória ou teve de ser falhada de forma irrecuperável a partir do disco. Os eventos de memória virtuais incluem acessos iniciais em páginas particulares de um espaço de endereço e contadores de acesso que registram a proporção em que a página está sendo re-acessada. As informações também estão incluídas no estado da máquina, e os contextos reconhecidos ativam-se no momento do rastreamento. Para cada página, as informações adicionais podem ser mantidas, tais como em que os disparos recentes de um cenário cada tal página foi referenciada, e informações de estado de sistema similares.
[0061] Desta maneira, uma base importante da abordagem de gerenciamento de memória da presente invenção é efetuar registro de eventos de gerenciamento de memória observados no sistema, isto é, representações de acessos em partes de espaços de endereço virtual através de processos particulares.Pode não ser possível registrar todos os acessos, e desta maneira na implementação descrita o trabalho é realizado na granularidade de página, para registrar os primeiros acessos e informações sobre a frequência de acessos subsequentes.
[0062] A parte registrante 406 opera obtendo os rastreamentos de núcleo e formatando-os como registros brutos 410. As responsabilidades da parte registrante incluem garantir que os limites de recuso sejam respeitados para que os registros não ocupem o disco do usuário. Os rastreamentos são desta maneira registrados nos registros brutos 410 que representam o padrão de acesso para uma instanciação particular de um processo com relação a algum intervalo razoavelmente curto. Por exemplo, os registros devem ser coletados para uma inicialização simples ou retorno de hibernação, para o período que segue algum evento de usuário, tal como criar o painel de controle, pelo período que um aplicativo seja o aplicativo de primeiro plano, para algum intervalo de tempo não fixos em um evento particular, e assim por diante.
[0063] Em uma implementação descrita, os registros incluem um cabeçalho, que pode conter contexto, estado de memória, e informações de tempo, e incluem uma tabela de <fonte, deslocamento, falha irrecuperável> entradas, onde a fonte é o arquivo ou espaço de endereço de processo acessado em um dado deslocamento, e a falha irrecuperável indica se os dados foram lidos a partir do disco, que proporciona um cálculo aproximado de custo.
[0064] Além de rastrear o uso de página para diversos contextos, as informações sobre padrões de acesso e existência de páginas individuais que estão em memória também podem ser mantidas, ao proporcionarem a habilidade para tomar decisões melhores quanto à utilidade de páginas dentro de conjuntos de trabalho. Por exemplo, os sistemas operacionais contemporâneos mantêm somente dois bits de informações de idade por página, pela qual até o gerenciador de memória, todas as páginas que não foram referenciadas recentemente (por exemplo, nos últimos poucos minutos) tendem a parecer iguais. Na presente invenção, as informações para as quais o sistema gerenciador de memória tem de acessar pode incluir inúmeros períodos (por exemplo, minutos) nos quais cada página foi utilizada, bem como os períodos em que cada página foi criada e acessada por último. No desenvolvimento da presente invenção, os mecanismos mantêm estas informações sobre as páginas mesmo quando estas páginas forem paginadas para disco. Em outras palavras, a página não só é monitorada enquanto em memória, como estas informações são mantidas ao mesmo tempo em que a página está sobre o disco. Esta informação adicional proporciona uma imagem significantemente mais precisa de como a página está sendo acessada com relação à duração da mesma.
[0065] O mecanismo de rastreamento 402 pode trabalhar em múltiplos rastreamentos ativos simultaneamente. Estes rastreamentos podem incluir rastreamentos contínuos, que por exemplo podem ser montados um após o outro até estes atingirem um tamanho particular (por exemplo, 100.000 registros) ou até estes representarem uma duração particular (por exemplo, um intervalo de cinco minutos). Nota-se que um mecanismo de rastreamento de implementação possui um overhead relativamente muito baixo, (por exemplo, 0,1% de CPU com um processador de 450 MHz, somado com poucos megabytes de memória para efetuar registro de um dia de uso de página), que habilita tal rastreamento contínuo quanto a que páginas estão sendo referenciadas, sem sobrecarregar o sistema. O rastreamento também pode ser realizado como uma operação do tipo amostragem, intermitente, tal como automaticamente acionada ou em resposta a pedidos através de uma ferramenta GUI para testar ou treinar propósitos, que permite que a coleta de informações de página seja associada com atividades e transições particulares, tais como disparo de aplicativo, troca rápida de usuário ou retorno de inatividade.
[0066] Nota-se que em vez de iniciar o rastreamento/ registro a partir do temporário para um usuário/sistema, alguma quantidade de pré-treinamento pode ser realizada (por exemplo, para outros usuários e sistemas). Isto permite a cópia de algum arquivo e valor de página e base de dados pré-construídos no tempo de configuração, ou outros períodos adequados, tais como quando o programa aplicativo é instalado. Esta solução estática ajuda a acelerar a linha de aprendizado que pode ser de outra maneira requerido a qualquer momento um novo usuário, novo sistema, nova versão de sistema operacional e/ou novo programa. Desta maneira, a presente invenção proporciona vantagens através de carga de memória seletiva baseada no valor ou toda carga de memória, onde o valor é determinado pelo menos em parte na pré-observação, seja através de histórico de uso de monitoramento, e/ou através de trino (que inclui simulação, análise de código, execuções em máquinas diferentes e assim por diante).Para manter os dados, um repositório persistente de informações que pertence ao uso de página o valor é construído, utilizado e armazenado, que pode estar em qualquer arquivo, que inclui arquivos executáveis, arquivos de dados de propósito especial e de documentos e base de dados. Ademais, nota-se que tal conhecimento pré-obtido também proporciona reduções significativas em transições l/O sob demanda mesmo sem realizar o acúmulo dinâmico de informações através de registro e rastreamento. Por exemplo, as transições l/O sob demanda podem ser reduzidas ao proporcionar simplesmente arquivos de grupos de página pré-construída, por exemplo, quando um usuário falha na primeira página para exibir o Painel de Controle, outras páginas relacionadas são trazidas para dentro da memória de forma eficiente a partir do disco.
[0067] Através do mecanismo de rastreamento 402 e do processo adicional descrito no presente documento, o sistema de gerenciamento de memória constrói e mantém planos de cenário (por exemplo, arquivos) 422 (Figura 4B) que contêm os dados que podem ser usados para estabelecer um ou mais valores calculáveis por páginas de arquivo, tal como frequência de uso. Para essa finalidade, diversos componentes podem processar os dados de forma adequada para tomar decisões de gerenciamento de memória, que inclui um integrador 412 que combina essencialmente os registros 408 e registros brutos prévios 410 em um base de dados de informações de página 414.
[0068] O integrador 412 representado na Figura 4A é um serviço, que pode executar em um processo de nível de usuário, (à medida em que o núcleo não é requerido), que lê os registros brutos 410, processa-os e integra as informações que estes contêm com informações de página para contextos similares já armazenados no sistema (por exemplo, nos registros prévios 408). Inicialmente não haverá informações prévias, porém o sistema irá atingir rapidamente um estado onde os rastreamentos brutos servem primeiramente para atualizar e aprimorar as informações já conhecidas a partir de prévias ocorrências de um contexto particular. Um integrador contínuo 412 que foi implementado mantém um vetor de bit histórico para cada página mencionada em rastreamentos para uma dada classe de contexto. Para integrar cada nova instância, o vetor de bit histórico é deslocado e um novo bit é adicionado representando o período de tempo mais recente. As páginas que aparecem no novo registro possuem um "1" como o novo bit, enquanto outras possuem um "0". As páginas que aparecem pela primeira vez são adicionadas a um base de dados de informação de página 414, enquanto as páginas que não estão sendo utilizadas recentemente podem ser removidas do base de dados 414.
[0069] Desta maneira, através de um integrador 412, os registros brutos 410 que cobrem eventos ou intervalos particulares são integrados com registros prévios 408 que contêm informações conhecidas sobre prévias instâncias de eventos similares, tais como prévias execuções do mesmo programa, para proporcionar o base de dados de informação de página 414. O base de dados de informação de página 414 causa essencialmente um colapso de informações contidas nos registros, para reduzir a quantidade de memória requerida para monitorar estes dados, ao mesmo tempo em que reorganiza as informações de modo que os eventos similares sejam apropriadamente agrupados, e em arquivos e páginas entre um registro bruto 410 e registros prévios 408 é identificada.
[0070] Conforme representado nas Figuras 4A e 4B, as informações no base de dados de informação de página 414 podem ser extraídas (por exemplo, através de um serviço de extração 420) para produzir os planos de cenário 422, que indicam a provável composição de futuros espaços de endereço virtual e a probabilidade de acesso a páginas dentro de espaço virtual em contextos particulares. Conforme descrito abaixo, estes planos de cenário 422 são usados por um re-balanceador 424 para predizer os futuros acessos para o sistema, e permitir que o re-balanceador 424 crie novos planos de gerenciamento de memória em resposta a eventos observados pelo sistema. Por exemplo, os planos de cenário podem ser construídos a partir de um conjunto fixo de arquivos de informação de página que compreende informações quanto a cenários conhecidos como importantes para o sistema, tal como iniciar e desligar o sistema, e retornar da hibernação. As mensagens particulares são usadas para estabelecer contextos. Devem-se adicionar informações a estes dados a partir de cenários selecionados por um usuário, por exemplo, através de uma ferramenta gráfica interativa, e os cenários diferentes podem ser dadas prioridades de padrão que podem ser modificadas através da ferramenta interativa.
[0071] Quando os planos de cenário 422 mudam, um priorizador de página de cenário 426 (por exemplo, um serviço de modo de usuário incorporado ou de outra maneira associado ao serviço de extração 420) processa os planos de cenário 422 para gerar uma lista de páginas que deve ser trazida para dentro da memória e protegida. Esta regeneração também pode ser acionada baseada em um tempo máximo transcorrido uma vez que finalmente realizada, tal como para garantir que os planos sejam regenerados pelo menos uma vez a cada quinze minutos. Em uma implementação, para executar a priorização, cada página é atribuída uma pontuação de prioridade calculada. Quando as pontuações são determinadas, as páginas são então classificadas através de suas pontuações calculadas para construir uma lista de página priorizada 428.
[0072] Um fator em pontuação, uso baseado na frequência, é determinado ao contar quantas vezes as páginas foram usadas em intervalos de tempo recentes, por exemplo dentro da última hora, últimas oito horas, último dia, última semana,e assim por diante, de acordo com os arquivos de cenário de dados. Para esse fim, o priorizador de página 426 continua a monitorar a frequência de uso de página por diversas aberturas de tempo, tais como através de depósitos de uma hora, oito horas, um dia, três dias, uma semana e três semanas. Baseado no número de vezes que uma página foi usada em cada um desses depósitos, uma página pode ser atribuída uma pontuação, tal como entre 0 e 127.
[0073] Cada plano de cenário pode também monitorar em que os últimos número de execuções (por exemplo, trinta e dois) a página foi usada, com rótulos de tempo para cada disparo. Uma verificação mais pesada é dada para os usos recentes da página. Ademais, as pontuações das páginas que estão em planos de cenário conhecidos, tal co- mo um plano de cenário mantido pelo Start Menu, podem ser aumentadas para concedê-las uma maior prioridade.
[0074] A pontuação das páginas pode também levar em consideração o contexto em que uma página é observada ao ser utilizada. Desta maneira, as pontuações podem ser dependendo do estado da máquina, os aplicativos que estão em execução, ou ações de usuário recentes. Tais abordagens sofisticadas para prioridade de página irão ser provavelmente aperfeiçoadas com o tempo. Nota-se que devido ao fato de cada plano de cenário manter as informações históricas e de tempo com relação ao último número de execuções (por exemplo, trinta e dois) em que as páginas foram acessadas, é possível determinar de forma frequente como uma página de arquivo particular foi acessada através dos cenários, com relação a outras páginas para quais informações foram registradas.
[0075] Para gerar eventos, como representado na Figura 4B, proporciona-se um observador 430. O observador 430 compreende de preferência um encadeamento no núcleo de sistema operacional que monitora o estado de sistema, que inclui mudanças pronunciadas no uso de memória física. Ademais, as chamadas explícitas podem ser feitas para acionar a avaliação de estado quando certas ações forem proporcionadas, tal como iniciar desligamento ou hibernação. Ademais, os aplicativos podem chamar dentro do núcleo para notificar o sistema de mudanças de estado potencialmente interessantes no qual um rótulo de escolha de aplicativo pode ser aplicado.
[0076] Em uma implementação, os eventos rastreados incluem disparos de aplicativos e reconhecem mensagens de janela passadas no núcleo. O gancho de mensagem de janela permite que o sistema detecte indicações de que os componentes de sistema ou aplicativos podem estar realizando uma operação significativa relacionada com a memória, tal como o disparo do Menu de Inicialização, ou a criação de diálogos ou janelas para Abrir Arquivo, Impressão, ou Painel de Controle. As heurísticas podem ser usadas para evitar o rastreamento redundante de eventos frequente ou firmemente compactados. Em resposta a esses eventos, o núcleo monitora o uso de página para um processo individual ao utilizar os bits acessados em entradas de tabela de página para páginas. Estes bits são esclarecidos quando o rastreamento começa e checados no final do rastreamento. Qualquer remoção ou reinicialização de bit acessado durante o rastreamento é também registrado. As páginas que são acessadas através de Arquivo de Leitura e falhas irrecuperáveis nos quais uma leitura de disco é realizada são registradas.
[0077] Quando observa-se uma mudança no estado de sistema ou uma chamada indica um evento importante, um evento 432 é gerado e o estado de sistema pode ser atualizado por uma avaliação de estado e um serviço de atualização 434. O rastreamento pode ser solicitado ou terminado, e/ou os dados de estado (e outras informações de memória de sistema) 436 passados para o mesmo, e o re-equilíbio pode ser acionado, como representado na Figura 4B. O estado inclui contextos ativos bem como a distribuição atual de memória entre os conjuntos de trabalho, a lista-zero, a lista suja e o conjunto de página inativa. As informações de memória de sistema incluem dimensionamen-tos de endereço virtual e dimensionamentos de conjunto de trabalho, dados instantâneos de processo, falhas recuperáveis e irrecuperáveis, bits de acesso de memória sustentados em hardware, as informações de uso por página derivadas pelo sistema operacional, e qualquer outro dado calculado ou observável, contextos e estados que podem ser usados para determinar os valores de página, conforme descrito acima.
[0078] Conforme geralmente descrito acima, tanto de forma contínua como no final do rastreamento, o núcleo produz um armazena- mento temporário de rastreamento, que inclui listas das páginas específicas necessárias a partir de diversos arquivos, bem como uma variedade de contadores de gerenciamento de memória interno, tal como quantas páginas livres/zero estavam no sistema e a constituição de um conjunto de página inativa. Conforme também descrito acima, os armazenamentos temporários de rastreamento são coletados por um serviço de nível de usuário e usados para atualizar os arquivos de cenário, por exemplo, mantidos em um diretório de pré-busca. Os arquivos de cenário podem ser identificados baseados em um contexto que foi rastreado, tal como AppLaunch.WMPIayer.exe-...pfx, ou Shell.StartMenuCreate...pfx.
[0079] Desta maneira, os eventos de sistema provocam uma reavaliação do estado de sistema, e podem acionar um re-equilíbrio de conteúdos de memória. Os contextos são indicados por marcadores que são disparados quando um código de sistema particular é executado, bem como especificado por aplicativos através de APIs ou similares. Os aplicativos podem proporcionar Uis através destes um usuário pode especificar e marcar por si só, os contextos individualizados. Outros eventos de sistema que podem provocar a re-avaliação incluem grandes alocações e desalocações de memória, o disparo de processos, ou detecção de que o usuário caiu em inatividade ou retornou de trabalho. Desta maneira, o gerenciador de memória e o re-balanceador 424 podem tirar ação dos gatilhos/eventos/ contextos, tal como para priorizar que as páginas são mais prováveis de serem necessárias em um contexto atual e dá-los um valor maior com relação a outros, e para pré-carregar a memória baseada nesta priorização. Estes contextos podem ser usados pelo processador de rastreamento para categorizar e agrupar os dados de uso de página rastreados. Quando identificadas, as páginas e grupos são re-dispostos em memória, tal como para trocá-los, traz-se todas as páginas relacionadas ao mesmo tempo quando uma delas falha, e assim por diante.
[0080] O re-balanceador de memória 424 faz interface entre o modo de usuário e os elementos de modo de núcleo do política de pré-busca do sistema de gerenciamento de memória. Conforme descrito abaixo, o re-balanceador 424 primeiramente conta com o núcleo para identificar e ordenar as páginas em um conjunto de página inativa, para identificar as páginas de baixo valor e proteger as páginas de maior valor. Ademais para a proteção das páginas mais valiosas, uma primeira proposta do re-balanceador de memória 424 é ocupar a memória com as páginas que o priorizador de página de cenário 426 escolheu, ao substituir as páginas de menor valor pelas páginas de maior valor, como determinado pelas pontuações de prioridade. Para esse fim, o re-balanceador de memória 424 avalia o priorizador de página de cenário 426 e os contadores de conteúdo de memória de núcleo determinam se é necessário tirar alguma ação. Nota-se que os contadores de conteúdo de memória do núcleo dão informações sobre quantas páginas livres/zero estão disponíveis, bem como estatísticas para cada subconjunto de página inativa (descrito abaixo) e tal como quantas páginas foram re-propostas devido à pressão de memória [0081] O re-balanceador 424 desta maneira observa a disposição atual da memória, e pode solicitar rotinas para originar conjuntos de trabalho a serem postos em ordem. A partir desta informação, o re-balanceador 424 então determina o orçamento de memória para ser usada para armazenamento de dados pré-buscados. Um conjunto de páginas que inclui-se no controle de gerenciamento especulativo é determinada ao identificar as páginas que proporcionam baixa utilidade, tais como páginas com conteúdos zerados além de certos limites estabelecidos pelo sistema. As páginas de baixa utilidade podem também compreender páginas que possuem conteúdos válidos que não estão em conjuntos de trabalho, e que não estão sendo usadas em um período relativamente longo. Através de um priorizador de página de cenário 426, o re-balanceador 424 usa desta maneira as informações nos planos de cenário 422 para estabelecer um conjunto mais ideal de conteúdos para a memória, dentro do orçamento da mesma. Pode-se questionar (por exemplo, através de APIs) para determinar quantos conteúdos estão em memória e pode-se então modificar os planos 422.
[0082] Se houver páginas livres ou de baixo valor, o re-balanceador 424 pede para o núcleo de sistema ocupá-las com páginas de maior valor que utilizam l/O de pré-busca de baixa prioridade até as páginas de maior valor serem trazidas para dentro da memória. Para esse fim, uma vez que o re-balanceador 424 estabelece uma lista de páginas de acordo com o orçamento, a lista de páginas desejadas para carregar (e paginar externamente) são passadas para um planejador l/O 440. Estas instruções l/O são de preferência classificadas na fila de disco para minimizar as buscas, que resultam em uma medi-ção(throughput) de disco muito maior. Se o re-balanceador 424 não for capaz de trazer tantas páginas para dentro da memória quanto gostaria, o re-balanceador 424 se lembra onde elas se encontram em sua lista, e quando as páginas tornam-se disponíveis, continua a pré-busca a partir daquele ponto.
[0083] Quando o priorizador de página de cenário 426 constrói uma nova lista de páginas, ou quando qualquer uma das páginas (resi-lientes) pré-buscadas que foram trazidas para dentro da memória forem re-propostas devido à pressão de memória, o re-balanceador de memória 424 inicia a pré-busca a partir do início da lista. Antes do re-balanceador 424 pré-buscar o novo lote de páginas, esclarece-se a preferência em páginas previamente pré-buscadas para torna-las disponíveis.
[0084] Nota-se que o re-balanceador de memória 424 pode ser programado para ser relativamente moderado com relação a quais as páginas deseja-se trazer para dentro da memória, tal como evitar a interferência na atividade do usuário. Para esse fim, o re-balanceador é ativado para realizar operações l/O de baixa prioridade através do planejador de 1/0 440, e pode evitar a tomada de ação quando o sistema está sob pressão de memória. Por exemplo, o re-balanceador 424 pode ser ativado somente para substituir as páginas que não foram usadas por um período relativamente longo, e que não foram usadas com frequência, e pode não tirar ação alguma se não tiver alguma quantidade limite de memória disponível no sistema (por exemplo, 16 megabytes) de alguma quantidade menor (por exemplo, 6 megabytes) as páginas são livres, zero ou de outra baixa utilidade.
[0085] O planejador l/O 440 trabalha para produzir conteúdos de memória desejados ao distribuir as l/Os, porém é forçado pela necessidade de evitar interferência ou outra l/O conduzida pelo sistema. Uma maneira disto ser realizado é aguardar por períodos de atividade relativamente ópticas l/O e interromper a tarefa em tamanhos de transferência um tanto pequenos. O sistema pode, entretanto, proporcionar esta classificação de não-interferência ao implementar um esquema de prioridade. Desta maneira o re-balanceador 424, por exemplo, de forma periódica e/ou quando acionado, decide quais as páginas devem estar na memória, baseado no uso antecipado, eficiência e assim por diante, conforme descrito acima, e o planejador l/O controla as transferências l/O para ajustar os conteúdos de memória como desejado, de maneira que tenta minimizar a interferência em outras operações l/O.
[0086] Conforme representado na Figura 5A, em gerencia-mento de memória tradicional, as páginas a serem paginadas primeiramente adicionadas a uma lista de página inativa 500, que é uma lista FIFO simples. Ao ser uma lista FIFO, todas as páginas adicionadas 500 são tratadas igualmente, sem considerar suas importâncias. Isto resulta em situações onde uma página que foi uma página valiosa é re-proposta antes de outra página que é muito improvável de ser usada, porém acontece de cair posteriormente na lista 500.
[0087] De acordo com um aspecto da presente invenção e conforme representado na Figura 5B, para aperfeiçoar esse esquema de maneira que proteja as páginas mais valiosas, um conjunto de página inativa priorizada, ou cache 502 é proporcionado que leva-se em conta os valores relativos das páginas, como determinado pela pontuação de prioridade baseada no rastreamento. Conforme representado na Figura 5B, tal conjunto de página inativa priorizada compreende subconjuntos 5020-50215, cada dos quais contém uma ou mais páginas atribuídas a uma prioridade particular. Nota-se que somente poucos subconjuntos (dezesseis) são mostrados na Figura 5B, entretanto como pode ser facilmente avaliado, que qualquer número prático de tais subconjuntos é viável, e os subconjuntos podem ser de vários tamanhos. O subconjunto 5020 é um subconjunto desprotegido, que atua como o conjunto de página inativa existente500 da Figura 5A; as páginas que não são adequadamente rastreadas podem passar nesta lista. Quando uma página precisa ser re-proposta a partir do conjunto de página inativa priorizada 502, a página é tirada do subconjunto não vazio, de prioridade mais baixa.
[0088] Desta maneira, quando um arquivo é fechado ou um conjunto de trabalho é posto em ordem, as páginas do mesmo vão para o conjunto de página inativa 502, com uma determinação feita no que diz respeito a qual subconjunto as páginas devem ser colocadas baseado nas informações de uso estendido, por exemplo, armazenados na entrada do base de dados PFN do gerenciador de memória para a página. Ademais para existência de página e campos de frequência de acesso, há campos que permitem a definição de prioridade da página baseado nas informações do base de dados de cenário e do contexto atual do sistema.
[0089] O encadeamento do programa de gerenciamento de memória do sistema re-equilibra ocasionalmente (por exemplo, ao solicitar o re-balanceador 424, Figura 4B) o conjunto de página inativa priorizada 502, tal como uma vez a cada segundo. As páginas que foram colocadas em subconjuntos de alta prioridade que não são subsequentemente usadas por longos períodos são migradas para subconjuntos de menor prioridade.
[0090] Em uma modalidade, certas páginas são colocadas no subconjunto de maior prioridade 50215, e aquelas páginas jamais são re-propostas. Isto proporciona um mecanismo para bloquear estar páginas em memória mesmo sob pressão de memória. Nota-se que este mecanismo é mais forte que o VirtualLock, devido ao fato dos processos que podem precisar destes poderem ir embora e voltar (e podem ainda, na realidade, ter que ser criados).
[0091] Desta maneira, ao acompanhar a presente invenção, estes mecanismos habilitam a seleção de páginas que são desejáveis para manterem-se em memória. Ao distribuir prioridades relativas a cenários, as páginas mais importan-tes não são geralmente re-propostas antes das páginas menos importantes. Ademais, uma determinação pode ser feita de modo que um conjunto de páginas de pouco valor ou nenhum valor possa ser substituído por páginas mais valiosas a partir do disco.
[0092] Em uma implementação, o sistema de gerenciamento de memória divide o conjunto de página inativa em dezesseis subconjuntos, que o mesmo utiliza para classificar diferentes classes de páginas e, ao ordenar os subconjuntos, para conceder um grau maior de proteção para algumas classes de páginas. Conforme descrito acima, uma página que contém dados úteis (tais como uma página de arquivo, ou uma página de pilha para um processo de execução) porém não mais em algum conjunto de trabalho 450 {Figura 4B) é colocada em um subconjunto particular no conjunto de página inativa priorizada 502 baseada no conjunto de preferência no qual através do re-balanceador de memória 424, e/ou baseado no padrão de uso do mesmo enquanto este estiver em memória. Conforme descrito acima, os depósitos de tempo podem ser usados para monitorar o uso de páginas, por exemplo, em unidades de dez segundos, juntamente com uma conta do número de períodos que a página foi acessada desde a sua criação e o último período que a página foi acessada para taxar a idade da mesma.
[0093] Periodicamente, tal como uma vez a cada segundo, o re-balanceador 424 passa por uma parte do conjunto de página inativa 502 e re-avalia em qual subconjunto uma página particular deve estar. Em geral, uma página que não está em uso por um longo período é movida dentro de um subconjunto de menor prioridade apropriado.
[0094] A tabela 1 mostra como uma implementação determina o subconjunto apropriado para uma página. Se um aplicativo precisar de memória e não houver páginas livres ou zero disponíveis, as páginas de conjunto de página inativa serão re-propostas a começar pelo subconjunto de menor índice. TABELA 1 FRIORIZACÃO DE SUBCONJUNTOS INATIVOS
[0095] Ademais, as páginas de conjunto de trabalho que não forem usadas por vinte minutos são expulsas da memória de conjunto de trabalho 450 dentro do conjunto de página inativa 502 para torná-las disponíveis para gerenciamento priorizado. Conforme representado na Figura 4B, permite-se que um gerenciador de conjunto de trabalho 452 gerencie as páginas que são recente mente usadas, como em sistemas de tempo compartilhado tradicionais, visto que o gerenciamento de conjunto de página inativa através do re-balanceador de memória 424 gerencia as páginas por períodos mais longos de tempo.
[0096] Conceitualmente, como indicado pela Tabela 1, nesta implementação exemplificativa, o sistema de gerencia-mento de subconjunto utiliza categorias baseadas no último tempo de uso e baseadas na frequência para gerenciamento de conjunto de página, referido como uma peneira de tempo e escada de re-utilização, respectivamente. O conceito de peneira de tempo (como concretizado nos subconjuntos 5020-5028) e escada de re-utilização (como concretizado nos subconjuntos 50210-502i4) é que as páginas que não foram recentemente usadas devem ser re-propostas a partir do conjunto de página inativa 502 antes de outras páginas, porém aquelas proteções extras devem ser as páginas produzidas que são usadas frequentemente, mesmo que não necessariamente muito recente. As páginas no subconjunto de página inativa 502 são desta maneira organizadas como uma série de subconjuntos, e aquelas páginas serão periodicamente movidas a partir de subconjuntos protegidos até subconjuntos menos protegidos, ou vice-versa, baseado na falta de uso ou uso durante o tempo das mesmas. Assim, ao assumir que posteriormente não há necessidade de uma página não-usada, a página não-usada irá mover-se a partir de um subconjunto "não usado em 5 minutos" até um subconjunto "não usado em 10 minutos", até um subconjunto "não usado em 30 minutos",e assim por diante, até este chegar no subconjunto "não usado em 3 dias" (ou que for menor). As páginas que foram usadas um tanto de forma frequente com relação a algum intervalo razoável, entretanto, irão pular a parte inicial da cascata, ou podem ser mantidas em algum subconjunto por um período de tempo maior.
[0097] O que as categorias de peneira de tempo e escada de reutilização realizam é separar as páginas que foram usadas somente por um breve período de tempo das páginas que foram usadas com mais frequência, e então priorizam estas páginas dentro de subconjun- tos de respectivas categorias das mesmas. A peneira de tempo opera em um gradiente recentemente menos usado, enquanto a escada de re-utilização opera em um gradiente baseado na frequência. Naturalmente, os gradientes não precisam ser limitados a nenhuma frequência ou duração, e de fato, podem variar baseados em condições reais de modo que as páginas sejam movidas entre os subconjuntos e removidas do conjunto de página inativa à medida em que apropriadas para o dado sistema.
[0098] Nota-se que as páginas que são lidas a partir do disco pela primeira vez têm de ser colocadas em subconjuntos do conjunto de página inativa 502. As classes de páginas incluem páginas pré-buscadas (subconjunto 50212), páginas em agrupamento com falhas comuns (subconjunto 5029) e páginas interpoladas dentro de pré-buscas através de agrupamento (subconjunto 5025). Estas classes de páginas são priorizadas nesta ordem, com páginas pré-buscadas colocadas no meio de páginas de escada de re-utilização, as páginas pré-buscadas interpoladas colocadas no meio de páginas de peneira de tempo e as páginas de falha comum colocadas no meio de páginas de peneira de tempo e escada de re-utilização.
[0099] Em suma, as páginas de maior utilidade desejadas em memória são trazidas para dentro de subconjuntos inativos para protegê-las da pressão normal de memória, que resulta em melhora significativa de desempenho com decisões apropriadas na identificação e priorização de cenários de chave. Por exemplo, em uma compreensi-vidade consistente de sistema MB 256 foi proporcionado em muitas operações comuns na camada Shell, os componentes e aplicativos, mesmo após as transições tais como partida, troca rápida de usuário e pressão de memória a partir de um aplicativo amplo. Um rápido recomeço a partir da inatividade, (por exemplo, inferior a dois segundos), sem atrasos significativos de l/O de discos, foi consistentemente atin- gido. Ademais, com estes mecanismos, uma política de auto-sintonização e um conjunto de regras que podem processar de forma contínua as informações de cenário podem ser implementados para determinar quais as páginas devem estar em memória.
[00100] Conforme compreendido a partir da descrição acima, as melhoras de eficiência da pré-busca de maneira tempestiva não podem proporcionar experiência quase instantânea ao usuário, devido ao tamanho do desvio de dados requeridos e um grande número de posições de disco que precisam ser acessadas. Em vez de, proporcionar uma experiência significantemente melhorada, a presente invenção reconhece que as páginas para cenários frequentes e favoritos do usuário precisam ser antecipadamente trazidas para dentro da memória. Desta maneira, uma vez que o gerenciador de programa foi identificado um conjunto de páginas que devem ser trazidas para dentro da memória, estas páginas devem ser pré-buscadas, ao utilizar os períodos de inatividade do disco. Entretanto, é um recurso altamente exaustivo que os enfileirar um grande número (por exemplo, centenas) de l/Os de paginação assíncrona especulativa; por exemplo, se um aplicativo de primeiro plano precisar de algo do disco naquele momento, o pedido do aplicativo será bloqueado na fila de disco, que resulta potencialmente em tempos muito lentos (por exemplo,segundos) de in-compreensibilidade. Somente a detecção de inatividade não é confiável para evitar tal situação, uma vez que o aplicativo de usuário possa sempre tirar a falha exatamente quando decide-se enfileirar as l/Os especulativas para o que mostra ser um disco inativo.
[00101] Conforme descrito acima, a presente invenção evita este problema ao proporcionar suporte para l/O priorizada, como se a pré-busca especulativa for distribuída para uma fila de disco de baixa prioridade, não irá causar imensos atrasos para pedidos de paginação a partir do aplicativo de primeiro plano que são enfileirados em uma prio- ridade maior.
[00102] Além disso, se as l/Os de alta prioridade forem distribuídas uma de cada vez, estas podem ser intercaladas com l/Os de pré-busca de baixa prioridade. Os padrões resultantes de buscas irão im-pactar de forma significativa a largura de banda do disco e prejudicar os tempos de resposta. Como resultado, para limitar de fato o overhe-ad de l/O de pré-busca especulativa, o suporte para l/O priorizada pode precisar ser combinado com detecção de inatividade rápida e de auto-sintonização que aprende a partir destas falhas e padrões de troca. Quando o suporte l/O priorizado for combinado com os mecanismos para identificar e priorizar a memória referenciada, o sistema torna-se capaz de proteger a operação de um processo a partir de interferência através de outros processos do sistema. Tradicionalmente isto foi experimentado ao trocar a prioridade da CPU de processo, porém esta priorização não foi transportada para filas de disco ou gerenciamento de memória, pelo menos não em sistemas operacionais de propósito geral.
[00103] Um sistema de restrições é geralmente representado na Figura 6, onde um quadro de restrições 602 restringe as atividades de segundo plano tal como scanners anti-vírus, indexadores de arquivo e programas de procedimento de identificação, para limitar a interferência nos aplicativos do usuário. O quadro de restrições 602 também pode proteger os aplicativos de mídia a partir de disco e interferência de memória, que é uma causa para problemas de fluxo de vídeo e áudio, bem como garantir a compreensividade interativa aos aplicativos de primeiro plano mesmo sob cargas pesadas de sistema.
[00104] A integração de aperfeiçoamentos de gerenciamento de memória com suporte de l/O priorizado proporciona uma base para um sistema altamente responsivo e prognosticável. Nota-se que o quadro de restrições 602 por si só não proporciona grandes garantias de re- curso finamente parceladas (por exemplo, abaixo de 100 ms) que um gerenciador de recurso sofisticado pode proporcionar, porém limita os efeitos negativos de interferência para tempos de resposta, tal que o sistema irá sempre mostrar-se responsivo.
[00105] Conforme descrito acima, a pré-busca é um mecanismo com o qual um conjunto de páginas pode ser lido de forma eficiente a partir do disco dentro da memória e colocado em um subconjunto inativo particular. A pré-busca funciona ao enfileirar as l/Os de paginação assíncrona para o conjunto de páginas que estão faltando na memória. Na presente invenção, a pré-busca de páginas de diretório e de outros metadados de arquivo, bem como páginas de arquivo de página, é sustentada. Com o mecanismo de pré-busca aperfeiçoado, a presente invenção pode trazer para dentro da memória de forma eficiente qualquer página identificada nos rastreamentos, que incluem uma página de arquivo, uma página (pilha, conjunto de núcleo) privada em arquivo de página, página de registro, ou metadados de sistema de arquivo tal como (tabela de arquivo mestre) MFT ou diretório.
[00106] Como pode ser visto a partir do precedente, os diversos mecanismos de gerenciamento de memória proativa proporcionam uma experiência melhor ao usuário para máquinas novas com amplas memórias, que incluem dispositivos móveis tais como mesas gráficas, bem como computadores de mesa e portáteis, ao garantir que os dados estarão antecipadamente quase sempre em memória. Os métodos e mecanismos são proativos, lidam com gerenciamento de memória global (tanto em memória como em disco) ao obter ricas informações, e gerenciar a memória em todos os níveis de uso. A eficiência de l/O é também proporcionada, juntamente com categorias de l/O, para tentar otimizar as transferências de l/O ao mesmo tempo em que minimiza a interferência. Um conjunto de página ativa, gerenciado de forma mais inteligente, facilita a proteção de páginas mais valiosas com relação às páginas menos valiosas, também fatorando no conceito de estimação de utilidade. O rastreamento determina um uso de memória melhor, juntamente com contextos, que incluem contextos definidos de usuário, definidos de aplicativo e definidos de sistema. Os métodos e sistemas de gerenciamento de memória abrangentes da presente invenção proporcionam desta maneira vantagens e benefícios significativos necessários em computação contemporânea.
[00107] Ao mesmo tempo em que a invenção é suscetível a diversas modificações e construções alternativas, certas modalidades ilustrativas da mesma são mostradas nos desenhos e descritas acima em detalhes. Deve-se entender, entretanto, que não há intenção de limitar a invenção às formas específicas mostradas, porém ao contrário, a intenção é cobrir todas as modificações, construções alternativas, e equivalentes que estão dentro do espírito e escopo da invenção.
REIVINDICAÇÕES

Claims (6)

1. Método implementado por computador compreendendo as etapas de: capturar informações ricas sobre uso de memória que incluem pelo menos um dentre dados de padrão, frequência, contexto, e agrupamento, e persistir as informações ricas dentro de um arquivo, caracterizado pelo fato de que ainda compreende as etapas de: receber um evento com relação a um contexto; e priorizar a memória em resposta ao evento, de modo que as páginas mais valiosas prováveis de serem usadas no contexto sejam maiores em valor com relação às páginas menos prováveis de serem usadas.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que capturar as informações ricas compreende amostragem real de uso de página.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que capturar as informações ricas compreende a etapa de rastrear uso real de página.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que priorizar a memória compreende a etapa de alterar um subconjunto para o qual uma página de memória é classificada.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que priorizar a memória compreende a etapa de carregar pelo menos uma página a partir do armazenamento secundário na memória.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que priorizar a memória compreende a etapa de substituir as páginas na memória por páginas do armazenamento secundário.
BRPI0304297A 2002-10-04 2003-09-30 método para gerenciamento proativo de memória BRPI0304297B1 (pt)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
BR0304297A BR0304297A (pt) 2004-08-31
BRPI0304297B1 true BRPI0304297B1 (pt) 2016-10-11

Family

ID=31996938

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0304297A BRPI0304297B1 (pt) 2002-10-04 2003-09-30 método para gerenciamento proativo de memória

Country Status (12)

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

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
DE60306209T2 (de) * 2003-02-12 2006-10-19 Research In Motion Ltd., Waterloo Verfahren, mobile vorrichtungen und rechnerlesbare media zur datenverwaltung
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
JP2006011803A (ja) * 2004-06-25 2006-01-12 Hitachi Ltd 情報処理システムおよびその制御方法
US8131674B2 (en) 2004-06-25 2012-03-06 Apple Inc. Methods and systems for managing data
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
US7512904B2 (en) * 2005-03-22 2009-03-31 Microsoft Corporation Operating system launch menu program listing
US7340686B2 (en) 2005-03-22 2008-03-04 Microsoft Corporation Operating system program launch menu search
US7496722B2 (en) * 2005-04-26 2009-02-24 Hewlett-Packard Development Company, L.P. Memory mapped page priorities
US9507739B2 (en) 2005-06-24 2016-11-29 Google Inc. Configurable memory circuit system and method
US8060774B2 (en) 2005-06-24 2011-11-15 Google Inc. Memory systems and memory modules
US8386722B1 (en) 2008-06-23 2013-02-26 Google Inc. Stacked DIMM memory interface
US8055833B2 (en) 2006-10-05 2011-11-08 Google Inc. System and method for increasing capacity, performance, and flexibility of flash storage
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
US8796830B1 (en) 2006-09-01 2014-08-05 Google Inc. Stackable low-profile lead frame package
US8041881B2 (en) 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
US8089795B2 (en) 2006-02-09 2012-01-03 Google Inc. Memory module with memory stack and interface with enhanced capabilities
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
US8081474B1 (en) 2007-12-18 2011-12-20 Google Inc. Embossed heat spreader
US8111566B1 (en) 2007-11-16 2012-02-07 Google, Inc. Optimal channel design for memory devices for providing a high-speed memory interface
US9542352B2 (en) 2006-02-09 2017-01-10 Google Inc. System and method for reducing command scheduling constraints of memory circuits
US8335894B1 (en) 2008-07-25 2012-12-18 Google Inc. Configurable memory system with interface circuit
US8090897B2 (en) 2006-07-31 2012-01-03 Google Inc. System and method for simulating an aspect 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
US8327104B2 (en) 2006-07-31 2012-12-04 Google Inc. Adjusting the timing of signals associated with a memory system
US8438328B2 (en) 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
US8130560B1 (en) 2006-11-13 2012-03-06 Google Inc. Multi-rank partial width memory modules
US8359187B2 (en) 2005-06-24 2013-01-22 Google Inc. Simulating a different number of memory circuit devices
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
US8077535B2 (en) 2006-07-31 2011-12-13 Google Inc. Memory refresh apparatus and method
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
US9171585B2 (en) 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
US7590796B2 (en) * 2006-07-31 2009-09-15 Metaram, Inc. System and method for power management in memory systems
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
US8171238B1 (en) 2007-07-05 2012-05-01 Silver Peak Systems, Inc. Identification of data stored in memory
US8370583B2 (en) * 2005-08-12 2013-02-05 Silver Peak Systems, Inc. Network memory architecture for providing data based on local accessibility
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
US8095774B1 (en) 2007-07-05 2012-01-10 Silver Peak Systems, Inc. Pre-fetching data into a memory
KR101303518B1 (ko) 2005-09-02 2013-09-03 구글 인코포레이티드 Dram 적층 방법 및 장치
US8811431B2 (en) 2008-11-20 2014-08-19 Silver Peak Systems, Inc. Systems and methods for compressing packet data
US8929402B1 (en) 2005-09-29 2015-01-06 Silver Peak Systems, Inc. Systems and methods for compressing packet data by predicting subsequent data
US8489562B1 (en) * 2007-11-30 2013-07-16 Silver Peak Systems, Inc. Deferred data storage
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 삼성전자주식회사 휴대용 단말기에서 메모리 용량을 고려한 프로그램 실행을위한 장치 및 방법
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
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
US7692660B2 (en) * 2006-06-28 2010-04-06 Microsoft Corporation Guided performance optimization for graphics pipeline state management
US8111260B2 (en) 2006-06-28 2012-02-07 Microsoft Corporation Fast reconfiguration of graphics pipeline state
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高速ハンドオフ方法
US7904619B2 (en) 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
WO2008063647A2 (en) * 2006-11-24 2008-05-29 Sandforce Inc. Delaying an operation that reduces a lifetime of memory
US7747813B2 (en) * 2006-11-24 2010-06-29 Sandforce, Inc. Multi-memory device system and method for managing a lifetime thereof
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
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
US8046454B2 (en) * 2007-08-22 2011-10-25 Samsung Electronics Co. Ltd. Identifying and recommending potential communication states based on patterns of use
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
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
US9747141B2 (en) 2008-03-25 2017-08-29 Qualcomm Incorporated Apparatus and methods for widget intercommunication in a wireless communication environment
US9110685B2 (en) 2008-03-25 2015-08-18 Qualcomm, Incorporated Apparatus and methods for managing widgets 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
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
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
US9717021B2 (en) 2008-07-03 2017-07-25 Silver Peak Systems, Inc. Virtual network overlay
US8743683B1 (en) 2008-07-03 2014-06-03 Silver Peak Systems, Inc. Quality of service using multiple flows
US10805840B2 (en) 2008-07-03 2020-10-13 Silver Peak Systems, Inc. Data transmission via a virtual wide area network overlay
US10164861B2 (en) 2015-12-28 2018-12-25 Silver Peak Systems, Inc. Dynamic monitoring and visualization for network health characteristics
US20100030963A1 (en) * 2008-08-04 2010-02-04 Sandisk Il Ltd. Managing storage of cached content
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
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
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 (주)인디링스 고체 상태 디스크 시스템에서 버퍼 캐시의 프로그래밍 방법및 장치
EP2411918B1 (en) * 2009-03-23 2018-07-11 Riverbed Technology, Inc. Virtualized data storage system architecture
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
EP2441007A1 (en) 2009-06-09 2012-04-18 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
US10180572B2 (en) 2010-02-28 2019-01-15 Microsoft Technology Licensing, Llc AR glasses with event and user action control of external applications
US9285589B2 (en) 2010-02-28 2016-03-15 Microsoft Technology Licensing, Llc AR glasses with event and sensor triggered control of AR eyepiece 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
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
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
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
US9134534B2 (en) 2010-02-28 2015-09-15 Microsoft Technology Licensing, Llc See-through near-eye display glasses including a modular image source
US9128281B2 (en) 2010-09-14 2015-09-08 Microsoft Technology Licensing, Llc Eyepiece with uniformly illuminated reflective display
US8467133B2 (en) 2010-02-28 2013-06-18 Osterhout Group, Inc. See-through display with an optical assembly including a wedge-shaped illumination system
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
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
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
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
US20120249797A1 (en) 2010-02-28 2012-10-04 Osterhout Group, Inc. Head-worn adaptive display
US8472120B2 (en) 2010-02-28 2013-06-25 Osterhout Group, Inc. See-through near-eye display glasses with a small scale image source
US20150309316A1 (en) 2011-04-06 2015-10-29 Microsoft Technology Licensing, Llc Ar glasses with predictive control of external device based on event input
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
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
EP2539759A1 (en) 2010-02-28 2013-01-02 Osterhout Group, Inc. Local advertising content on an interactive head-mounted eyepiece
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
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 半導体装置及びメモリ保護方法
JP5967073B2 (ja) * 2011-02-21 2016-08-10 富士通株式会社 プロセッサ管理方法
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
US8990171B2 (en) 2011-09-01 2015-03-24 Microsoft Corporation Optimization of a partially deduplicated file
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
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
EP2798499B1 (en) 2011-12-27 2020-11-18 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 엘지전자 주식회사 영상 표시 장치 및 영상 표시 장치의 메모리 관리 방법
US8990534B2 (en) 2012-05-31 2015-03-24 Apple Inc. Adaptive resource management of a data processing system
US9032168B2 (en) * 2012-05-31 2015-05-12 Htc Corporation Memory management methods and systems for mobile devices
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
EP3025230A4 (en) * 2013-07-23 2017-04-05 Intel Corporation Operating system switching method and apparatus
US20150052326A1 (en) * 2013-08-19 2015-02-19 International Business Machines Corporation User-controlled paging
KR101489870B1 (ko) 2013-08-19 2015-02-06 성균관대학교산학협력단 가상화 장치 및 그 메모리 관리 방법
US9241044B2 (en) 2013-08-28 2016-01-19 Hola Networks, Ltd. System and method for improving internet communication by using intermediate nodes
US9317350B2 (en) 2013-09-09 2016-04-19 International Business Machines Corporation Method and apparatus for faulty memory utilization
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
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 华为技术有限公司 一种存储器资源优化方法和装置
EP2913754B1 (en) * 2013-11-22 2016-11-09 Huawei Technologies Co., Ltd. Memory data migration computer and method
EP3087490A1 (en) * 2013-12-23 2016-11-02 Intel Corporation Instruction and logic for memory access in a clustered wide-execution machine
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
US9633233B2 (en) 2014-05-07 2017-04-25 Sandisk Technologies Llc Method and computing device for encrypting data stored in swap memory
US20150324132A1 (en) * 2014-05-07 2015-11-12 Sandisk Technologies Inc. Method and Computing Device for Fast Erase of Swap Memory
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
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
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
US9740631B2 (en) 2014-10-07 2017-08-22 Google Inc. Hardware-assisted memory compression management using page filter and system MMU
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 华中科技大学 一种非对称磁盘阵列高速缓存调度方法
CN106462360B (zh) 2014-12-23 2019-10-25 华为技术有限公司 一种资源调度方法以及相关装置
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 삼성전자주식회사 어플리케이션을 실행하기 위한 장치 및 방법
US9875058B2 (en) 2015-11-05 2018-01-23 International Business Machines Corporation Prioritizing pages to transfer for memory sharing
US9753670B2 (en) 2015-11-05 2017-09-05 International Business Machines Corporation Prioritizing memory pages to copy for memory migration
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
US11151970B2 (en) * 2017-01-19 2021-10-19 Inmusic Brands, Inc. Systems and methods for selecting musical sample sections on an electronic drum module
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
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
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
US10540287B2 (en) 2017-05-12 2020-01-21 Samsung Electronics Co., Ltd Spatial memory streaming confidence mechanism
US11023164B2 (en) 2017-06-19 2021-06-01 Micron Technology, Inc. Managed NAND data tagging
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
US11190374B2 (en) 2017-08-28 2021-11-30 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
EP3754520B1 (en) 2017-08-28 2022-02-02 Bright Data Ltd 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
JP6689471B2 (ja) 2017-12-18 2020-04-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 浪潮(北京)电子信息产业有限公司 磁盘休眠状态控制方法、装置、设备及可读存储介质
EP4236263A3 (en) 2019-02-25 2023-09-06 Bright Data Ltd. System and method for url fetching retry mechanism
CN109977168B (zh) * 2019-03-18 2021-11-05 武汉达梦数据库股份有限公司 基于数据页预加载的数据库数据同步方法及设备
WO2020202135A2 (en) 2019-04-02 2020-10-08 Luminati Networks Ltd. System and method for managing 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 青岛海尔科技有限公司 产品调整方法、装置和存储介质及电子装置
US11983532B2 (en) 2020-12-30 2024-05-14 International Business Machines Corporation Optimize bound information accesses in buffer protection
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
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
US5809280A (en) * 1995-10-13 1998-09-15 Compaq Computer Corporation Adaptive ahead FIFO with LRU replacement
US5717954A (en) * 1995-10-13 1998-02-10 Compaq Computer Corporation Locked exchange FIFO
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
US20050228964A1 (en) 2005-10-13
US8032723B2 (en) 2011-10-04
EP1406174B8 (en) 2012-02-29
AU2003246330A1 (en) 2004-04-22
RU2348067C2 (ru) 2009-02-27
CN1327369C (zh) 2007-07-18
US20050235119A1 (en) 2005-10-20
US20040068627A1 (en) 2004-04-08
US20100199063A1 (en) 2010-08-05
BR0304297A (pt) 2004-08-31
US6910106B2 (en) 2005-06-21
RU2008140263A (ru) 2010-04-20
AU2003243990A1 (en) 2004-04-22
CA2723077C (en) 2014-05-13
ES2371454T3 (es) 2012-01-02
AU2010201717B2 (en) 2011-10-27
MXPA03008766A (es) 2004-09-10
EP1406174B1 (en) 2011-09-28
KR20040031645A (ko) 2004-04-13
EP1406174A3 (en) 2007-09-05
RU2003129662A (ru) 2005-03-27
US20100199043A1 (en) 2010-08-05
US7185155B2 (en) 2007-02-27
ATE526631T1 (de) 2011-10-15
RU2482535C2 (ru) 2013-05-20
CA2442188A1 (en) 2004-04-04
EP1406174A2 (en) 2004-04-07
US8539186B2 (en) 2013-09-17
JP2004133934A (ja) 2004-04-30
US7698513B2 (en) 2010-04-13
CA2723077A1 (en) 2004-04-04
CA2442188C (en) 2011-06-28
CN1510579A (zh) 2004-07-07
JP4724362B2 (ja) 2011-07-13
AU2010201717A1 (en) 2010-05-20
KR100972723B1 (ko) 2010-07-27

Similar Documents

Publication Publication Date Title
BRPI0304297B1 (pt) método para gerenciamento proativo de memória
US9690496B2 (en) Using external memory devices to improve system performance
US9767140B2 (en) Deduplicating storage with enhanced frequent-block detection
US9058212B2 (en) Combining memory pages having identical content
RU2671049C2 (ru) Выгрузка в файловой системе
US20090037662A1 (en) Method for Selectively Enabling and Disabling Read Caching in a Storage Subsystem
US9152823B2 (en) Systems, methods, and computer readable media for computer data protection
WO2017155918A1 (en) Active data-aware storage manager
US8140825B2 (en) Systems and methods for selectively closing pages in a memory
BR122016001493B1 (pt) Métodos e mecanismos para gerenciamento proativo de memória
US20240111684A1 (en) Multi-level starvation widget
Lyons Jr A Study of Non-datapath Cache Replacement Algorithms
CN118394459A (en) Selective deletion of sensitive data
Stefanovici Towards a Storage Stack for the Data Center

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US)

B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 11/10/2016, OBSERVADAS AS CONDICOES LEGAIS.

B09W Correction of the decision to grant [chapter 9.1.4 patent gazette]

Free format text: PARECER DE DEFERIMENTO NOTIFICADO NA RPI NO 2377 DE 26/07/2016 RETIFICADO POR TER SIDO CONSTATADO QUE APRESENTAVA INCORRECOES

B21F Lapse acc. art. 78, item iv - on non-payment of the annual fees in time

Free format text: REFERENTE A 18A ANUIDADE.

B24J Lapse because of non-payment of annual fees (definitively: art 78 iv lpi, resolution 113/2013 art. 12)

Free format text: EM VIRTUDE DA EXTINCAO PUBLICADA NA RPI 2640 DE 10-08-2021 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDA A EXTINCAO DA PATENTE E SEUS CERTIFICADOS, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.