Наверх Системное программирование
Предыдущий раздел Оглавление Следующий раздел

ЛАБОРАТОРНАЯ РАБОТА № 3

Архитектура памяти Windows

Цель работы: Получение практических навыков по использованию Win32 API для исследования памяти Windows

Методические указания к выполнению лабораторной работы

Типы памяти: физическая память, виртуальная память, память файла подкачки.

Совместно используемая физическая память

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

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

Адресное пространство процесса

Каждый процесс Win32 получает виртуальное адресное пространство, называемое также адресным пространством, или пространством процесса. Таким образом, код процесса может ссылаться на адреса с &Н00000000 по &HFFFFFFFF (или с 0 по 232 – 1 = 4 294 967 295 в десятичной системе счисления).

Распределение виртуальной памяти

Каждая страница виртуального адресного пространства может находиться в одном из трех состояний:

  • Reserved (зарезервирована) – страница зарезервирована для использования;
  • Committed (передана) – для данной виртуальной страницы выделена физическая память в файле подкачки или в файле, отображаемом в память;
  • Free (свободна) – данная страница не зарезервирована и не передана, и поэтому в данный момент она недоступна для процесса.

Кучи памяти в 32-разрядной Windows

При создании процесса Windows назначает ему кучу по умолчанию, то есть изначально резервирует область виртуальной памяти объемом 1 Мб. Тем не менее, при необходимости система будет регулировать размер кучи, которая используется самой Windows для различных целей.

Задание для выполнения лабораторной работы

  1. выдает информацию, получаемую при использовании API GlobalMemoryStatus (при выводе информации использовать диаграммы);
  2. составляет карту виртуальной памяти для любого процесса.

Видео выполнения работы

Ход выполнения лабораторной работы

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

  1. Создать форму с элементами для вывода информации о занятой памяти;
  2. Получить информацию о занятой и свободной памяти с помощью функции GlobalMemoryStatus, которая помещает информацию в структуру;
  3. После вызова функции GlobalMemoryStatus, взять необходимые данные из структуры и поместим их в соответствующие элементы на форме;
  4. Создать новую форму с таблицей, в которую будет выводиться информация обо всех процессах;
  5. Сделать снимок памяти с помощью функции CreateToolhelp32Snapshot, первый параметр TH32CS_SNAPPROCESS, который указывает, что нам нужен снимок именно процессов;
  6. С помощью функций Process32First и Process32Next заносится информация о процессе в структуру, а из структуры, соответственно, в таблицу;
  7. Получить дескриптор процесса с помощью функции OpenProcess по его ID;
  8. Используя функцию GetProcessMemoryInfo, получить информацию об используемой памяти выбранного процесса, которую также занести в таблицу;
  9. В конце работы закрыть все открытые дескрипторы.

Вывод информации о виртуальных адресах

  1. Функция GetSystemInfo определяет минимальный адрес памяти доступного адресного пространства;
  2. Функция VirtualQueryEx, используя дескриптор процесса и минимальный адрес памяти доступного адресного пространства, возвращает информацию о диапазоне страниц виртуального адресного пространства указанного процесса, полученную информацию занести в таблицу.
Предыдущий раздел Оглавление Следующий раздел