Является ли Working Set (Mem) размером оперативной памяти в ОЗУ?
Нет. Это подмножество виртуального адресного пространства процесса, которое является "резидентным" или "присутствующим" в терминах формата таблицы страниц Intel, что означает, что к нему можно получить доступ, не вызывая ошибки страницы.
Это несколько вводящее в заблуждение число по ряду причин, главным образом, что a) оно включает в себя некоторую оперативную память, которая используется совместно с другими процессами - в основном те, которые используют какой-то один и тот же код, например код из общих библиотек, и эти общие страницы учитывается в "рабочем наборе" всех процессов, в которых они находятся. Таким образом, если вы сложите все размеры "рабочего набора", вы получите число, большее, чем истинное использованное количество. b) Кроме того, некоторое ОЗУ, которое было недавно потеряно из рабочего набора процесса из-за замены страницы, вероятно, все еще будет находиться в списке страниц системы в режиме ожидания, и, если это так, при обращении к нему произойдет сбой страницы, но не сбой жесткой страницы. Так что это ОЗУ, содержащее информацию из процесса, которую процесс может использовать снова, но она не учитывается в рабочем наборе.
Счетчик Memory (частный рабочий набор) является подмножеством (рабочего набора). Это часть рабочего набора, которая является частной для процесса, то есть не разделяемой.
Paged Pool (VirtMem) - это точно размер памяти процесса в файле подкачки?
Нет. Пейджинговый пул - это особый тип кучи памяти пространства ядра. Столбец "Выгружаемый пул" в отображении процессов в диспетчере задач указывает на то, сколько выгружаемого пула было выделено для поддержки активности этого процесса.
Сумма всех счетчиков "Paged pool" для процессов не будет равна общему количеству выгружаемого пула в использовании, потому что ОС использует выгружаемый пул для многих вещей, которые не "заряжены" для определенных процессов.
Общая память процесса (использование адресного пространства) равна сумме Mem и VirtMem?
Я думаю, под "Mem" вы имеете в виду "Рабочий набор (mem)". Во всяком случае, нет, это не так. Это физическая память (ОЗУ), а VirtMem - виртуальная. Вы не можете складывать физическую и виртуальную память вместе, чтобы придумать что-нибудь разумное. Физическая память, используемая процессом, скорее является подмножеством его виртуального адресного пространства.
Windows перепутала эту проблему из-за запутанной, непоследовательной и меняющейся терминологии. Например, в приведенной выше крышке экрана первые четыре счетчика "Память" - это физические (ОЗУ), "Размер фиксации" и "выгружаемый пул" - как виртуальные, так и "невыгружаемый пул", который похож на выгружаемый пул. (куча пространства ядра, но она никогда не выгружается) - это как виртуальный, так и физический размер выделения.
И вопрос, который вы не задавали:
Почему управление памятью так сложно?
Потому что он работает намного лучше, чем простые системы в прошлом. Извини за это.