Similar presentations:
Системное ПО. Память Windows
1. Системное ПО
Память Windows2. Системное ПО
Общая информация о памяти процессаЧасть адресного пространства процесса используется системой.
Поэтому приложение может использовать далеко не все адреса
своего виртуального адресного пространства.
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,
которая позволяет выделять память «из кучи», т.е. не
постранично. В этом случае два региона памяти могут
располагаться в одной странице.