Запуск и мониторинг нового процесса



Если запустить приложение из VMMap, оно получит инструментарий для отслеживания отдельных операций выделения памяти и соответствующих вызовов в стеке. Введите путь к приложению и, если требуется, аргументы командной строки и папку для запуска, как показано на рис. 7-3, после чего щелкните OK. VMMap подгружает свою DLL в целевой процесс при его запуске и перехватывает его вызовы API виртуальной памяти. Кроме типа выделяемой памяти, размера и сведений о ее защите, VMMap собирает данные о стеке вызовов в момент выделения. VMMap по-разному группирует эти сведения.

В Windows с архитектурой x64 VMMap может “впрыскивать” DLL cо своим инструментарием и отслеживать программы для x86 и x64, при этом запускается 32- или 64-разрядная версия утилиты, соответственно. Однако в Windows x64 VMMap не может отслеживать программы .NET, собранные для «любого ЦП» («Any CPU»), это возможно только в 32-разрядных версиях Windows. Однако мониторинг возможен и в 64-разрядных версиях Windows – путем выбора на вкладке View a Running Process (Просмотр запущенного процесса) окна Select or Launch Process (Выбор или запуск процесса).

Окно VMMap

После выбора или запуска процесса VMMap анализирует его, показывает графическое представление виртуальной и физической памяти, а также табличные представления Summary (Общие) и Details (Подробно). В них типы памяти представлены различными цветами. Представление Summary также выделено отдельным цветом.

Первая гистограмма в окне VMMap (рис. 1) –Committed (Переданная). Ее разноцветные части показывают относительные пропорции различных типов памяти, преданной в адресное пространство процесса. Также она служит эталоном, с которым сравниваются две другие диаграммы. Общее число, показанное над правой частью диаграммы, показывает не всю распределенную память, а только «доступную» процессу память. Области, которые пока только зарезервированы, еще не доступны, а потому не отображаются на этой диаграмме. Другими словами, сюда включается физическая память (ОЗУ), память из файла подкачки и спроецированных в память файлов.

Вторая диаграмма – Private Bytes (Байты закрытой памяти). Здесь отображается память процесса, не разделяемая с другими процессами, выделенная в ОЗУ или файле подкачки. Сюда входит стек, кучи, неформатированная виртуальная память, страничные таблицы и области чтения-записи проекций образов и файлов. Надпись над правой частью диаграммы показывает общий размер собственной памяти процесса. Цветные области диаграммы показывают пропорции различных типов закрытой памяти. Отношение размера цветных областей к общей длине диаграммы показывает их долю в используемой виртуальной памяти.

Третья гистограмма показывает рабочий набор процесса. Рабочий набор - это виртуальная память процесса, загруженная в физическую оперативную память. Как и на предыдущей диаграмме, цветные области показывают доли различных типов памяти в ОЗУ, а их размер – относительную величину по сравнению с общей виртуальной памятью, выделенной процессу и загруженной в ОЗУ.

Заметьте, что эти диаграммы показывают только относительные пропорции различных типов памяти, но не являются картами памяти, отображающими ее размещение. Такую карту для 32-разрядных процессов предоставляет окно Address Space Fragmentation (Фрагментация адресного пространства). Под этими диаграммами расположена таблица Summary View (Сводка), в которой указаны разные типы памяти (см. раздел «Типы памяти» ниже), общий объем каждого типа, объем переданной процессу памяти и объем физического ОЗУ. Можно выбрать тип памяти в этой таблице, чтобы отфильтровать содержимое секции Details View (Подробные сведения). Таблицу можно отсортировать по значениям любого столбца, щелкнув его заголовок. Если щелкнуть тот же заголовок еще раз, данные будут отсортированы в обратном порядке. Порядок столбцов можно изменять, перетаскивая их. Можно также изменять ширину столбцов, растягивая границы между их заголовками.

Секция Details View (Подробные сведения), расположенная под таблицей Summary View, содержит информацию о каждой области памяти виртуального адресного пространства процесса, работающего в пользовательском режиме. Чтобы отображался только один тип, выберите этот тип в таблице Summary View. Чтобы вернуться к просмотру всех типов памяти, выберите в таблице Summary View строку Total (Всего). Сортировку, порядок и ширину столбцов в секции Details View можно изменять так же, как и в таблице Summary View.

Строки типов памяти в секции Details View, можно раскрывать, чтобы увидеть блоки, которыми выделялась память этого типа. Такая ситуация бывает, например, когда резервируется крупный блок памяти и передается процессу по частям. Это происходит и когда загрузчик образа или приложение создает проекцию файла, а затем создает несколько проецированных представлений этой проекции; например, чтобы установить разную защиту для разных областей проекции. Можно раскрывать и сворачивать отдельные группы подчиненных сопоставлений, щелкая на значках (+) и (–) в секции Details View. Также можно раскрыть или свернуть все группы сразу, выбрав в меню View s (Просмотр) команду Expand All (Раскрыть все) или Collapse All (Свернуть все). Верхняя строка такой группы показывает суммы компонентов группы. Когда выбирается другой порядок сортировки, блоки остаются в строках верхнего уровня и сортируются внутри группы.

Если вам не нравится шрифт, выбранный для VMMap по умолчанию, можете выбрать другой шрифт для Summary View, Details View и некоторых диалоговых окон.

Типы памяти

VMMap разделяет выделенную память на несколько типов.

Образ (Image) – такая память представляет исполняемые файлы, такие как EXE и DLL, загруженные в процесс загрузчиком образов. Заметьте, что этот тип не включает исполняемые файлы, загруженные как файлы данных, которые относятся к типу памяти Mapped File (Проецируемый файл). Области исполняемого кода обычно доступны только для чтения и выполнения, возможно их разделение. Области данных, такие как инициализированные данные, обычно доступны для чтения и записи или с копированием при записи. Когда изменяются страницы, доступные c копированием при записи, процесс получает дополнительную закрытую память, которая помечается как доступная для чтения и записи. Эта закрытая память находится в ОЗУ или файле подкачки, а не в файле образа. В столбце Details (Подробно) представления Details View показан путь к файлу или имя секции.

Cпроецированный файл (Mapped File) – может использоваться совместно и представляет файл на диске. Проецируемые файлы часто являются библиотеками DLL с ресурсами и обычно содержат данные приложений. В столбце Details (Подробно) показан путь к файлу.

Разделяемая (Shareable) – такая память может сообща использоваться процессами и находится в ОЗУ или файле подкачки (если он имеется). Эта память обычно содержит данные, совместно используемые процессами посредством общих секций библиотек DLL или объекты, находящиеся в файле подкачки или проецируемом файле (такие файлы называют также секциями в файле подкачки).

Куча (Heap) – закрытая память, распределяемая и управляемая диспетчером кучи пользовательского режима; обычно содержит данные приложений. Функции управления памяти приложений, использующие кучу,включают библиотечную функцию исполняющей среды C malloc, оператор C++ new, API-функции Windows Heap и устаревшие API-функции

GlobalAlloc и LocalAlloc.

Управляемая куча (Managed Heap) – представляет закрытую память, распределяемую и управляемую исполняющей средой .NET; обычно содержит данные приложений.

Стек (Stack) – память в стеке выделяется каждому потоку в процессе для хранения параметров функций, локальных переменных и записей о вызовах. Обычно при создании потока ему выделяется и резервируется фиксированный объем памяти стека, но процессу передается только сравнительно малая ее часть. По мере надобности память из данной выделенной области передается, но не освобождается, пока поток не завершится.

Закрытая память (Private Data) – эта память выделяется API-функцией VirtualAlloc и не обрабатывается диспетчером кучи или исполняющей средой .NET и не относится к категории памяти стека. Такая память обычно содержит данные приложений, а также блоки Process и Thread Environment. Закрытые данные не могут совместно использоваться разными процессами.

Таблица страниц (Page Table) – закрытая память режима ядра, связанная с таблицами страниц процесса. Обратите внимание на то, что эта память никогда не отображается в представлении VMMap Details (Подробно), в котором отображается только память пользовательского режима.

Свободная (Free) – свободные области памяти (нераспределенные области виртуального адресного пространства процесса). Чтобы включить свободные области памяти в представление Details (Подробно) при просмотре общей карты памяти процесса, выберите команду Options | Show Free Regions (Параметры | Показать свободные области).

Информация о памяти

В представлениях Details и Summary отображается следующая информация о типах памяти и операциях ее распределения. Чтобы уменьшить объем “мусора” в выходных данных, VMMap не отображает записи об операциях с нулевым объемом памяти.

Size (Размер) – общий размер распределенного типа или области. Сюда входят области, которые были зарезервированы, но не переданы процессам.

Committed (Переданная) – объем памяти, переданной процессам, т.е. расположенной в ОЗУ, файле подкачки или проецируемом файле.

Private (Закрытая) – объем памяти, принадлежащей единственному процессу.

Total WS (Рабочий набор, всего) – общий размер рабочего набора (физической памяти), связанного с этим типом памяти.

Private WS (Рабочий набор, закрытый) – размер неразделяемого рабочего набора.

Shareable WS (Рабочий набор, общий) – размер разделяемого рабочего набора.

Shared WS (Рабочий набор, совместно используемый) – размер рабочего набора, разделяемого с другими процессами в текущий момент.

Locked WS (Рабочий набор, заблокированный) – объем памяти, гарантированно остающейся в физической памяти и не вызывающей страничных ошибок при обращении.

Blocks (Блоки) – число областей памяти, выделенных по отдельности.

Largest (Наибольший) – размер наибольшего непрерывного блока памяти для данного типа (в представлении Summary).

Address (Адрес) – базовый адрес области памяти в виртуальном адресном пространстве процесса (в представлении Details).

Protection (Защита) – в представлении Details показывает типы операций, которые можно выполнять с памятью. В случае групп операций, включающих выделение блоков памяти, в столбце Protection отображается сводная информация о типах защиты выделенных блоков.

При попытке выполнения кода из области, не помеченной флагом Execute (если включен механизм DEP), либо записи в область, не имеющей флага Write или Copy-on-Write, либо при обращении к памяти, помеченной как noaccess или зарезервированной, но еще не выделенной, возникает ошибка нарушения доступа.

Details (Подробно) – в представлении Details содержит дополнительную информацию для области памяти, такие как путь к файлу, в котором хранятся страницы, идентификатор кучи (для памяти из кучи), идентификатор потока (для памяти стека) или поколение .NET AppDomain и Garbage Collection. https://poisk-ru.ru/s11129t4.html

Реализовать программу для изучения фрагментации виртуальной памяти:

1. Получить и напечатать общий и доступный объем виртуальной памяти (ВП) при помощи функции GlobalMemoryStatusEx() (Получает информацию о текущем использовании системой физической и виртуальной памяти). Пронаблюдать состояние памяти процесса при помощи VMMap.

2. Использовать всю доступную ВП, выделяя функцией VirtualAlloc() (Резервирует или фиксирует область страниц в виртуальном адресном пространстве вызывающего процесса) области размером по 100 МБ, пока это удается. Указатели на выделяемые области сохранять в массив (std:: vector, TList или любой другой).

3. Повторить пункт 1, сравнив доступный объем памяти со 100 МБ.

4. Освободить каждый второй из выделенных в пункте 2 блоков при помощи функции VirtualFree ().

5. Повторить пункт 1, обратив внимание на объем доступной ВП.

6. Попытаться выделить блок памяти размером 1/4 ВП, доступной согласно п. 5. Если пункт выполняется в составе пункта 10, использовать для выделения зарезервированную в пункте 9 область памяти.

7. Освободить оставшиеся выделенные в пункте 2 блоки.

8. Повторить пункт 1, сравнив результаты с полученными в нем ранее.

9. Зарезервировать область памяти того же размера, что и в пункте 6, при помощи функции VirtualAlloc () с флагом MEM_RESERVE.

10. Повторить пункты 1—6.

11. Определить особенности наблюдавшихся состояний памяти процесса, их различия между собой и объяснить результаты.

Указание. В отчет надлежит включить: вывод рассчитанных в программе значений, описание наблюдений и пояснения к ним (пункт 1 и его повторения).

2. Очистка оперативной памяти при помощи «Диспетчера задач» ОС Windows.

Указания к выполнению задания 2

У операционной системы Windows есть компонент «Диспетчер задач», который позволяет управлять работой ОС и мониторить общее состояние памяти. По его показателям можно определить, когда нагрузка на RAM достигла критической массы.

3. Очистка автозагрузки при помощи «Диспетчера задач» ОС Windows

Указания к выполнению задания 3

Если в автозагрузке слишком много ненужных приложений, то операционная система будет стартовать очень долго. Те программы, которые запустились вместе с ОС работают в фоновом режиме постоянно и нагружают оперативную память устройства. Потому нужно почистить автозагрузку. Сделать это можно при помощи «Диспетчера задач» ОС Windows.

4. П рограмма для очистки оперативной памяти компьютера KCleaner

Указания к выполнению задания 4

Это приложение для быстрой очистки оперативной памяти. Оно не затрагивает системные службы, и в этом его главный плюс. Программа работает быстро и четко в любых ситуациях.

Скачать приложение можно бесплатно с официального сайта производителя. Установка происходит по стандартному сценарию. Единственное – не нужно менять путь установки. Алгоритм действий очень прост.

5. П рограмма для очистки оперативной памяти компьютера Mz RAM Booster

Указания к выполнению задания 5

Данная утилита предназначена для работы с оперативной памятью. Она не только умеет чистить RAM, но и обладает богатым инструментарием по ее оптимизации. Интерфейс программы интуитивно понятен.

Скачать утилиту можно бесплатно с официального сайта разработчика. Процесс установки стандартен.

6. П рограмма для очистки оперативной памяти компьютера Wise Memory Optimizer

Указания к выполнению задания 6

Данная утилита представляет широкие возможности оптимизации оперативной памяти и ее очистки от остаточной информации. Она предназначена исключительно для работы с оперативной памятью и умеет производить ее полную оптимизацию. Скачать утилиту можно бесплатно на сайте разработчика. Кстати, она использует открытый исходный код. Установка утилиты очень проста.

7. Управление виртуальной памятью с помощью п рограммы Magic Memory Optimizer

ОС Windows использует не только оперативную память для своей работы. Чтобы разгрузить ресурсы оперативной памяти, на жестком диске создается специальный файл, в котором ОС также хранит текущие данные. Называется он SWAP – файлом, или файлом подкачки, а также виртуальной памятью компьютера. Оперативную память называют физической, т.к. она создана из конкретного материала, т.е. ее можно взять в руки и рассмотреть. Виртуальная память – ненастоящая, это область дискового пространства, которую ОС тоже считает памятью.

Слово «виртуальный» в данном случае подразумевает «созданный на компьютере» Она предназначена для высвобождения информации, которая хранится в оперативной памяти. Оперативная память не всегда справляется с поставленными задачами. Она отправляет менее важные файлы в виртуальную память. Но виртуальная память тоже имеет границы, поэтому, она тоже со временем забивается. Для высвобождения виртуальной памяти можно воспользоваться специальными программами или увеличением размера виртуальной памяти.

Отчет должен содержать:

1. Титульный лист

2. Оглавление

3.  Задание на выполнение практической работы

4. Теоретическую часть

5. Описание программных средств управления оперативной памятью и очистки остаточной информации.

6. Алгоритм действий по запуску и процессу работы с описанием и криншотами (нумерация рисунков сквозная).

7. Результаты выполнения практического занятия.

8. Заключения

9. Рекомендации.

10. Ссылки на информационные ресурсы


Дата добавления: 2019-11-16; просмотров: 171; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!