Is Working Set (Mem) exactly a size of process memory on RAM?
Não. É o subconjunto do espaço de endereço virtual do processo que é "residente" ou "presente" nos termos do formato da tabela de páginas Intel, o que significa que pode ser acessado sem incorrer em uma falha de página.
É um número um pouco enganador por uma variedade de razões, principalmente que a) inclui alguma RAM que é compartilhada com outros processos - principalmente aqueles que estão usando algum do mesmo código, como o código de bibliotecas comuns, e estes as páginas compartilhadas são contadas no "conjunto de trabalho" de todos os processos nos quais são residentes. Portanto, se você somar todos os tamanhos de "conjunto de trabalho", obterá um número maior do que a quantidade real usada. b) Além disso, alguma RAM que foi perdida recentemente do conjunto de trabalho do processo devido à substituição da página provavelmente ainda estará na lista da página de espera do sistema e, se for, acessá-la incorrerá em uma falha de página, mas não em uma falha de página rígida. Então essa é a RAM que contém informações do processo que o processo pode usar novamente - mas não é contado no conjunto de trabalho.
O contador Memória (conjunto de trabalho particular) é um subconjunto do (conjunto de trabalho). É a parte do conjunto de trabalho que é privada para o processo, ou seja, não compartilhável.
Is Paged Pool (VirtMem) exactly a size of process memory on swap file?
Não. O pool paginado é um tipo específico de heap de memória do espaço do kernel. A coluna "Conjunto Paginado" nos processos exibidos no Gerenciador de Tarefas é uma indicação de quanto pool paginável foi alocado para oferecer suporte à atividade do processo.
O total de todos os contadores "Paginados" para processos não será igual ao total de blocos paginados em uso, porque o sistema operacional usa o pool paginado para muitas coisas que não são "cobradas" para processos específicos.
Is total process memory (address space usage) equal to sum of Mem and VirtMem?
Eu acho que por "Mem" você quer dizer "Conjunto de trabalho (mem)". De qualquer forma, não, não é. Isso é memória física (RAM), enquanto VirtMem é virtual. Você não pode adicionar tamanhos de memória física e virtual e criar algo sensato. A memória física usada por um processo é, em vez disso, um subconjunto de seu espaço de endereço virtual.
O Windows confundiu esse problema por meio de terminologia confusa, inconsistente e em constante mudança. No limite de tela que você forneceu, por exemplo, os primeiros quatro "Memory -", contadores são físicos (RAM), "Commit size" e "paged pool" são virtuais, e "pool não paginado", como pool paginado. , um heap do kernel, mas nunca é paginado) é ambos o tamanho virtual e físico da alocação.
E uma pergunta que você não fez:
Why is memory management so complicated?
Porque ele funciona muito melhor dessa maneira do que os sistemas mais simples no passado. Me desculpe por isso.