Partilhar via


Conjunto de trabalho

O conjunto de trabalho de um processo é o conjunto de páginas no espaço de endereço virtual do processo que estão atualmente residentes na memória física. O conjunto de trabalho contém apenas alocações de memória pagináveis; as alocações de memória não pagináveis, como as Address Windowing Extensions (AWE) ou alocações de páginas grandes, não estão incluídas no conjunto de trabalho.

Quando um processo faz referência à memória paginada que não está atualmente no seu conjunto de trabalho, ocorre uma falha de página . O manipulador de falhas de página do sistema tenta resolver a falha de página e, se for bem-sucedida, a página é adicionada ao conjunto de trabalho. (O acesso ao AWE ou a alocações de páginas grandes nunca causa uma falha de página, porque essas alocações não podem ser paginadas.)

Uma de falha de página rígida deve ser resolvida lendo o conteúdo da página do de armazenamento de backupda página, que é o arquivo de paginação do sistema ou um arquivo mapeado na memória criado pelo processo. Uma falha de página suave pode ser resolvida sem aceder ao armazenamento de suporte. Uma falha de página suave ocorre quando

  • A página está no conjunto de trabalho de algum outro processo, por isso já está residente na memória.
  • A página está em transição, porque foi removida dos conjuntos de trabalho de todos os processos que estavam utilizando a página e ainda não foi reaproveitada, ou já está residente como resultado de uma operação de pré-carregamento do gerenciador de memória.
  • Um processo faz referência a uma página virtual alocada pela primeira vez (às vezes chamada de falha demanda-zero).

As páginas podem ser removidas de um conjunto de trabalho de processo como resultado das seguintes ações:

  • O processo reduz ou esvazia o conjunto de trabalho chamando a função SetProcessWorkingSetSize, a função SetProcessWorkingSetSizeEx, ou a função EmptyWorkingSet.
  • O processo chama a função VirtualUnlock em um intervalo de memória que não está bloqueado.
  • O processo desmapeia uma vista mapeada de um arquivo usando a função UnmapViewOfFile.
  • O gerenciador de memória corta páginas do conjunto de trabalho para criar mais memória disponível.
  • O gerenciador de memória deve remover uma página do conjunto de trabalho para abrir espaço para uma nova página (por exemplo, porque o conjunto de trabalho está em seu tamanho máximo).

Se vários processos compartilharem uma página, remover a página do conjunto de trabalho de um processo não afetará outros processos. Depois que uma página é removida dos conjuntos de trabalho de todos os processos que a usavam, a página se torna uma página de transição . As páginas de transição permanecem armazenadas em cache na RAM até que a página seja referenciada novamente por algum processo ou reaproveitada (por exemplo, preenchida com zeros e dada a outro processo). Se uma página de transição tiver sido modificada desde a última vez que foi gravada em disco (ou seja, se a página estiver "suja"), a página deverá ser gravada em seu armazenamento de suporte antes de poder ser reaproveitada. O sistema pode começar a escrever páginas de transição sujas para seu armazenamento de backup assim que essas páginas estiverem disponíveis.

Cada processo tem um tamanho mínimo e máximo de conjunto de trabalho que afeta o comportamento de paginação da memória virtual do processo. Para obter o tamanho atual do conjunto de trabalho de um processo especificado, use a funçãoGetProcessMemoryInfo. Para obter ou alterar os tamanhos mínimo e máximo do conjunto de trabalho, use as funções GetProcessWorkingSetSizeEx e SetProcessWorkingSetSizeEx.

A interface de programação de aplicativo de status do processo (PSAPI) fornece uma série de funções que retornam informações detalhadas sobre o conjunto de trabalho de um processo. Para obter detalhes, consulte Informações do Conjunto de Trabalho.