O que é um conjunto de trabalho e para que é usado?
Um conjunto de trabalho é um subconjunto de páginas virtuais residentes na memória física.
Existem vários tipos de conjuntos de trabalho no Windows:
Os conjuntos de trabalho do processo contêm as páginas referenciadas pelos encadeamentos em um único processo.
O conjunto de trabalho do sistema contém o subconjunto residente do código do sistema paginável (isso inclui principalmente o kernel e os drivers carregados), entre o pool paginado e o cache do sistema.
Conjuntos de trabalho de sessão que contêm subconjuntos residentes de dados específicos da sessão no modo kernel alocados pelo subsistema Windows, pool paginado por sessão, visualizações mapeadas e outros drivers de sessão.
Em essência, um conjunto de trabalho é usado para decidir quanta memória física pode ser usada para evitar muita paginação. Quando ocorre uma falha de página , os limites do conjunto de trabalho e a quantidade de memória livre no sistema são examinados. Se necessário, o gerenciador de memória permite que um processo cresça até o seu conjunto de trabalho máximo. Se a memória estiver fraca, o Windows substituirá as páginas em um conjunto de trabalho quando ocorrer uma falha na página.
O Windows tentará manter a memória disponível gravando páginas modificadas no disco. Se a memória estiver fraca, o gerenciador de conjuntos de trabalho tentará aparar a maioria dos conjuntos de trabalho para aumentar a quantidade de memória RAM física disponível disponível para o sistema. Processos que possuem uma quantidade maior de páginas têm uma tendência maior a serem observados.
O conjunto de trabalho padrão para um processo consiste em um mínimo de 50 páginas e um máximo de 345 páginas. Os limites podem ser alterados, mas os padrões serão suficientes na maioria dos casos de uso. Também é necessário observar que o tamanho máximo do conjunto de trabalho não pode exceder o máximo do sistema calculado no momento da inicialização.
O Windows relata as quantidades totais, máximas e privadas de RAM física usada pelas páginas do conjunto de trabalho virtual para um processo. Privado indica memória que não é compartilhada entre os processos.
O que é a taxa de confirmação e para que é usada?
As páginas no espaço de endereço virtual de um processo são gratuitas, reservadas ou confirmadas. Os aplicativos podem reservar espaço de endereço e depois se comprometer com ele ; reservando-se não ocupa espaço na memória ou no arquivo da página, isso é feito principalmente para reduzir a memória adiando os compromissos da página.
Páginas confirmadas são aquelas que, quando acessadas, convertem para páginas válidas na memória física; eles são particulares e compartilháveis ou mapeados para a visualização de uma seção. Uma seção pode ser Memória compartilhada ou Arquivos mapeados ; portanto, se as páginas confirmadas forem mapeadas para uma parte de um arquivo mapeado, elas poderão precisar ser trazidas do disco quando acessadas.
O arquivo mapeado conhecido mais comum é o arquivo de paginação. Ele armazena páginas modificadas que ainda estão em uso por algum processo, mas tiveram que ser gravadas no disco. Ao fazer isso de forma mais agressiva, a memória pode ser esvaziada mais facilmente sem a necessidade de gravar E / S antes disso.
O gerenciador de memória controla a taxa de confirmação privada globalmente e por processo como a cota do arquivo de paginação. Esses valores são usados para determinar com que frequência gravar no arquivo de paginação. Observe que a liberação de memória é feita pelo mecanismo do conjunto de trabalho ...
Quando algo não está mais na memória, ele é carregado no arquivo de paginação.
Os relatórios do Windows confirmam carga como a quantidade total de memória que um processo usa para a qual não há armazenamento de backup; essencialmente resume as quantidades de RAM física que ainda está ausente no arquivo de paginação e subtrai outros arquivos mapeados.
Um armazenamento de backup é um armazenamento que possui um backup dos dados; por exemplo, se você mapear uma imagem na memória, ela estará na memória e no disco; portanto, não faz sentido calcular essa imagem como uso de memória, pois você sempre pode acessá-la a partir do disco, quando necessário, em condições de alta memória.
O que são pilhas de memória e para que são usadas?
Conhecido como o pool paginado e não paginado ...
Os threads do sistema do kernel não têm um espaço de endereço como os processos; portanto, eles devem alocar qualquer armazenamento dinâmico nos heaps de memória do sistema operacional, principalmente formado pelo pool paginado ou não paginado.
O pool paginado consiste em memória virtual que pode ser paginada dentro e fora do sistema. Os drivers de dispositivo que não precisam acessar a memória em um nível de despacho baixo (uma prioridade mais alta) podem usar livremente os pools paginados.
O pool não paginado consiste em memória virtual que é garantida a residir na memória física o tempo todo e, portanto, pode ser acessada a qualquer momento, sem incorrer em uma falha de página. Os drivers de dispositivo que devem acessar a memória em um nível de despacho mais baixo DEVEM usar o pool não paginado para garantir que os dados possam ser acessados, pois as chamadas de E / S não estão disponíveis nesse ponto; existe um código principalmente crítico nesse nível ...
Esses conjuntos têm um tamanho mínimo e máximo, sendo determinados como um pequeno processo da RAM disponível. Enquanto eles podem crescer, observe que eles não excederão um certo precedente da RAM disponível. Embora o pool não paginado seja bastante sólido, uma vez que é apenas para a memória mais crítica, o pool paginado será estendido para o arquivo de paginação.
Esse é um dos problemas mais supervisionados quando as pessoas desabilitam seus arquivos de paginação. Entre outros problemas de estabilidade e desempenho , vale a pena conferir se você desativou o arquivo de paginação.
- Fonte : extratos do livro Windows Internals reescritos em um texto compreensível.