This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

Філ Булл (Phil Bull)
philbull@gmail.com 2011
Майкл Гілл (Michael Hill)
mdhillca@gmail.com 2011, 2014
Мапа пам'яті процесу може спростити визначення деяких проблем із розподілом пам'яті.
Юрій Чорноіван
yurchor@ukr.net 2020

# Що таке мапа пам'яті?

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

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

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

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