Системное ПО
Системное ПО
Системное ПО
Системное ПО
Системное ПО
Системное ПО
Системное ПО
Системное ПО
Системное ПО
290.00K

Системное ПО. Память Windows

1. Системное ПО

Память Windows

2. Системное ПО

Общая информация о памяти процесса
Часть адресного пространства процесса используется системой.
Поэтому приложение может использовать далеко не все адреса
своего виртуального адресного пространства.

3. Системное ПО

Общая информация о памяти процесса
Функция GetSystemInfo позволяет получить общую информацию о
памяти:
Как получить информацию:
1. Объявить структуру типа SYSTEM_INFO
2.
Вызвать функцию, передать ей указатель на структуру

4. Системное ПО

Структура SYSTEM_INFO
Общая информация о памяти процесса
dwPageSize – размер
страницы
lpMinimumApplicationAddress,
lpMaximumApplicationAddress –
диапазон виртуальных
адресов, которые может
использовать процесс
dwAllocationGranularity –
определяет
«дискретность» выделения
памяти

5. Системное ПО

Общая информация о памяти процесса
Размер страницы – 4 кб
Память выделяется
минимальным шагом в 64
кб
Возможные адреса
0x00010000-0x7ffeffff

6. Системное ПО

Общая информация о памяти процесса
Пример для x86-64
Доступно к использованию
почти 8 Тб виртуального
адресного пространства

7. Системное ПО

Пример выделения памяти.
Запрашиваются 3 участка по 10 байт
393216=6*65536
458752=7*65536
524288=8*65536
Выделение памяти

8. Системное ПО

Выделяем память только для чтения
Выделение памяти
Чтение данных – успешно
Запись - ошибка

9. Системное ПО

Другие функции для работы с виртуальной памятью:
VirtualFree – освобождает ранее выделенный участок
VirtualLock – делает страницы заданного участка
«невыгружаемыми», т.е. они всегда находятся в физической
памяти
VirtualProtect – изменяет параметры защиты региона памяти
VirtualQuery – получить информацию о регионе памяти
Другой способ выделить память – функция HeapAlloc,
которая позволяет выделять память «из кучи», т.е. не
постранично. В этом случае два региона памяти могут
располагаться в одной странице.
English     Русский Правила