Що таке «Використання пам'яті» і «Розмір віртуальної пам'яті» в taskmgr?


2

Я читаю: Що означають стовпчики пам'яті диспетчера завдань? . Але я все ще не розумію, що вони говорять.

  • Є Робочий набір (Mem) точно розмір пам'яті процесу на оперативній пам'яті?
  • Є Базовий пакет (VirtMem) точно розмір пам'яті процесу на файлі підкачки?
  • Чи загальна пам'ять процесу (використання адресного простору) дорівнює сумі Mem і VirtMem?

Деякі відомості доступні у Вікіпедії Диспетчер завдань Windows стор.

Task Manager


Здається, що Диспетчер завдань є правильними інструментами для отримання відомостей про кількість сторінок оперативної пам'яті, якими володіє процес (наприклад, вилучення сторінок ядра та драйверів) та кількість сторінок, які замінюються на диск. Але я не розумію, який стовпець може показувати ці значення.


Деякі пов'язані superuser.com/questions/79618/…
gavenkoa

Деякі пов'язані superuser.com/questions/27863/…
gavenkoa

Деякі пов'язані superuser.com/questions/293957/…
gavenkoa

Деякі пов'язані stackoverflow.com/questions/1984186/… (Що таке приватні байти, віртуальні байти, робочий набір?)
gavenkoa

Відповіді:


3

Незрозуміло, що ви просите. Ви запитуєте про "повну пам'ять процесу", як якщо б це було чітко визначений термін. Це дійсно не так. Типи вимірювань пам'яті, які здаються природними для людей, які не мають глибокого розуміння управління пам'яттю, в основному не існують на сучасних системах.

Більш корисним способом зробити це, щоб ви сказали нам, що це ви намагаєтеся з'ясувати. Ми можемо розповісти, як це зробити. Люди схильні говорити такі речі, як "мені потрібно знати, скільки пам'яті використовує процес", але це в основному безглуздо. Це як запитати, скільки місця використовує людина. Ну, вони розділяють ванні кімнати, чи варто це рахувати? І у них є щось, що зберігається в гаражі, але тільки тому, що ніхто не використовує його, і вони можуть викинути цю річ, якщо комусь потрібен простір, чи варто це рахувати?

Насправді не можна замінити вивчення певного рівня деталізації, як сучасні операційні системи управляють пам'яттю, різницю між фізичною і віртуальною пам'яттю, чистими і брудними сторінками тощо. Таким чином, ви можете зрозуміти числа, які система насправді може надати вам.


"Розмір пам'яті процесу на оперативній пам'яті" не є чітко визначеною концепцією. Наприклад, якщо програма читає файл розміром 1 Гб, і цей файл все ще знаходиться в оперативній пам'яті, чи вважається це розміром цього процесу? Що робити, якщо інший процес також отримує доступ до цього файлу? (Чи вважаєте ви, що ОС навіть стежить за тим, який процес читає, яка сторінка файлу?) ОЗУ взагалі не належить до процесу, все це належить ОС.
David Schwartz

В ПОРЯДКУ. Погодьтеся. Розмір оперативної пам'яті на оперативній пам'яті не є чітко визначеною концепцією. Я не можу запитати точніше, як не знаю пов'язаної термінології ... Я читаю книги про управління пам'яттю і концепціях ОС.
gavenkoa

Вибачте, що не дайте вам швидкої відповіді, але якщо це допоможе, читання про управління пам'яттю і отримання глибшого розуміння буде окупатися знову і знову. Я обіцяю.
David Schwartz

2

Чи є робочий набір (Mem) точно розміром пам'яті процесу на оперативній пам'яті?

Ні. Це підмножина віртуального адресного простору процесу, що є "резидентним" або "присутнім" у термінах формату таблиці сторінок Intel, що означає, що до неї можна отримати доступ без помилки сторінки.

Це кілька вводить в оману число з цілого ряду причин, головним чином, що a) він включає в себе деяку оперативну пам'ять, яка спільно використовується з іншими процесами - в основному, ті, які використовують один і той же код, як, наприклад, код із загальних бібліотек, розраховується в "робочому наборі" всіх процесів, в яких вони проживають. Так що якщо ви складете всі розміри "робочого набору", ви отримаєте число, яке перевищує реальну кількість. b) Крім того, деякий обсяг оперативної пам'яті, нещодавно втрачений від робочого набору процесу через заміну сторінки, ймовірно, все ще перебуватиме в списку сторінок системи в режимі очікування. Так що це оперативна пам'ять, яка містить інформацію з процесу, який процес може знову використовувати - але він не враховується в робочому наборі.

Лічильник пам'яті (приватний робочий набір) є підмножиною (робочого набору). Це частина робочого набору, яка є приватною для процесу, тобто не є спільною.

Чи є Paged Pool (VirtMem) точно розміром пам'яті процесу на файлі підкачки?

Вивантажений пул - це особливий тип кучі пам'яті ядра-простору. У стовпці "Paged Pool" в процесах, що відображаються в диспетчері завдань, вказується, скільки виділеного пула було виділено для підтримки діяльності цього процесу.

Сума всіх лічильників "Paged pool" для процесів не дорівнюватиме загальному використовуваному пул пулу, оскільки ОС використовує вивантажений пул для багатьох речей, які не "заряджаються" окремим процесам.

Чи загальна пам'ять процесу (використання адресного простору) дорівнює сумі Mem і VirtMem?

Я думаю, за "Mem" ви маєте на увазі "Робочий набір (mem)". У всякому разі, ні, це не так. Це фізична пам'ять (RAM), а VirtMem - віртуальна. Ви не можете додати фізичні та віртуальні розміри пам'яті разом і придумати що-небудь розумне. Фізична пам'ять, що використовується процесом, є, скоріше, підмножиною його віртуального адресного простору.

Windows заплутала цю проблему через заплутану, непослідовну та мінливу термінологію. Наприклад, у наведеному вами екрані перші чотири лічильника "Пам'ять -" фізичні (ОЗП), "Розмір вчинення" та "вивантажений пул" є віртуальними, а "нездійсненим пулом", як, наприклад, пул , куча ядра-простору, але ніколи не виводиться на сторінку обидва віртуальний і фізичний розмір виділення.

І питання, якого ви не запитали:

Чому управління пам'яттю настільки складне?

Тому що він виконує набагато краще, ніж простіші системи в минулому. Вибач за те.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.