Чи є робочий набір (Mem) точно розміром пам'яті процесу на оперативній пам'яті?
Ні. Це підмножина віртуального адресного простору процесу, що є "резидентним" або "присутнім" у термінах формату таблиці сторінок Intel, що означає, що до неї можна отримати доступ без помилки сторінки.
Це кілька вводить в оману число з цілого ряду причин, головним чином, що a) він включає в себе деяку оперативну пам'ять, яка спільно використовується з іншими процесами - в основному, ті, які використовують один і той же код, як, наприклад, код із загальних бібліотек, розраховується в "робочому наборі" всіх процесів, в яких вони проживають. Так що якщо ви складете всі розміри "робочого набору", ви отримаєте число, яке перевищує реальну кількість. b) Крім того, деякий обсяг оперативної пам'яті, нещодавно втрачений від робочого набору процесу через заміну сторінки, ймовірно, все ще перебуватиме в списку сторінок системи в режимі очікування. Так що це оперативна пам'ять, яка містить інформацію з процесу, який процес може знову використовувати - але він не враховується в робочому наборі.
Лічильник пам'яті (приватний робочий набір) є підмножиною (робочого набору). Це частина робочого набору, яка є приватною для процесу, тобто не є спільною.
Чи є Paged Pool (VirtMem) точно розміром пам'яті процесу на файлі підкачки?
Вивантажений пул - це особливий тип кучі пам'яті ядра-простору. У стовпці "Paged Pool" в процесах, що відображаються в диспетчері завдань, вказується, скільки виділеного пула було виділено для підтримки діяльності цього процесу.
Сума всіх лічильників "Paged pool" для процесів не дорівнюватиме загальному використовуваному пул пулу, оскільки ОС використовує вивантажений пул для багатьох речей, які не "заряджаються" окремим процесам.
Чи загальна пам'ять процесу (використання адресного простору) дорівнює сумі Mem і VirtMem?
Я думаю, за "Mem" ви маєте на увазі "Робочий набір (mem)". У всякому разі, ні, це не так. Це фізична пам'ять (RAM), а VirtMem - віртуальна. Ви не можете додати фізичні та віртуальні розміри пам'яті разом і придумати що-небудь розумне. Фізична пам'ять, що використовується процесом, є, скоріше, підмножиною його віртуального адресного простору.
Windows заплутала цю проблему через заплутану, непослідовну та мінливу термінологію. Наприклад, у наведеному вами екрані перші чотири лічильника "Пам'ять -" фізичні (ОЗП), "Розмір вчинення" та "вивантажений пул" є віртуальними, а "нездійсненим пулом", як, наприклад, пул , куча ядра-простору, але ніколи не виводиться на сторінку обидва віртуальний і фізичний розмір виділення.
І питання, якого ви не запитали:
Чому управління пам'яттю настільки складне?
Тому що він виконує набагато краще, ніж простіші системи в минулому. Вибач за те.