История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

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

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

2017-06-19 663
Описание 5 основных интерфейсов API функций управления памятью в Windows. 0.00 из 5.00 0 оценок
Заказать работу

Вверх
Содержание
Поиск

Для управления памятью, прикладным программам предоставляются различные интерфейсы: (первые 3 применимы в наст.время):

· VirtualMemoryAPI – набор ф-ий, позволяющих приложению работать с вирт. адресным пространством: назначать физические страницы блоку адресов и освобождать их, устанавливать атрибуты защиты.

· MemoryMappedFileAPI – наборф-ий, позволяющих работать с файлами, отображаемыми в память; новый механизм, предоставляемый Win32API для работы с файлами и взаимодействия процессов;

· HeapMemoryAPI – набор ф-ий, позволяющих работать с динамически распределяемыми областями памяти (кучами).

· Local, GlobalMemoryAPI – набор ф-ий для работы с памятью, совместимых с х16 Windows (уже не используются).

· CRTMemoryAPI – ф-ии стандартной библиотеки языка С периода исполнения (runtime).

Интерфейс Virtual Memory.

VirtualMemoryAPI – набор ф-ий, позволяющих приложению работать с вирт. адресным пространством: назначать физические страницы блоку адресов и освобождать их, устанавливать атрибуты защиты.

Блок адресов адресного пространства процесса может нах-ся в одном из состояний:

-выделен (commited) – блоку адресов назначена физическая память, либо часть файла подкачки

-зарезервирован (reserved) – блок адресов помечен как занятый, но физическая память не распределена

-свободен (free) – блок адресов не выделен и не зарезервирован

При выделении память обнуляется.

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

VirtualAlloc () – выделяет память. Его параметры определяют: размер выделяемой памяти (не более 1 Гб), где в адресном пр-ве расположить выделенный фрагмент, надо ли закреплять физическую память, вид устанавливаемой защиты. Резервирует память фрагментами 64 кб, а закрепляет ее фрагментами объемом 1 страницу (4 кб).

VirtualProtect() –позволяет изменять атрибуты защиты в адресном пространстве текущего процесса.

VirtualProtectEx() –позволяет изменять атрибуты защиты в адресном пространстве произвольного процесса.

VirualQuery() – заполняет поля структуры информацией о заданном блоке памяти.

GlobalMemoryStatus() – определяет размер и свободный объем физической памяти, страничного файла и текущего адресного пространства.

GetSystemInfo() – возвращает размер системной физической страницы.

Страницы можно блокировать в памяти (запрет на их вытеснение в файл подкачки) VirtualLock(), VirtualUnlock().

По завершении процесса ОС отменяет блокировку, освобождает использованную им память.

VirtualFree() – отменяет закрепление набора страниц, оставляя их адреса зарезервированными или освобождает память занимаемую этими страницами(даже заблокированные страницы).

Интерфейс Memory mapped file.

MemoryMappedFileAPI – набор ф-ий позволяющих работать с файлами, отображаемыми в память; новый механизм, предоставляемый Win32APIдля работы с файлами и взаимодействия процессов.

1. Исп-ся для запуска.exeи.dll.

VMMприменяется для:

-создания адресного простр-ва (размером 4 Гб)

-резервирование региона

-из ехефайластраницызагружаются в регион

-отображение в регион необходимыхdll.

2. Для работы с файлами.

-создается объект ядра «файл». CreateFile()

-создается объект ядра «проецируемый файл» CreateFileMapping(). Возвращает Handle.

-проецирование файла в вирт.память MapViewOfFile().

-убрать проецирование в память: UnmapViewFile().

Уничтожение объектов «файл», «проецируемый файл» - CloseHandle().

3. Для одновременного использования одной области данных несколькими процессами.

2 процесса могут использовать совместно, объект «проецируемый файл». При помощи MapViewOfFile() каждый процесс проецирует этот объект на свое адресное пространство и использует эту часть адресного пространства как разделяемую область данных.

Интерфейс Heap Memory.

HeapMemoryAPI – набор ф-ий, позволяющих работать с динамически распределяемыми областями памяти (кучами).

Куча – блок памяти, из которого прога при необходимости выделяет себе более мелкие фрагменты.

Причины группировки выделенных блоков:

-позволяет отделить и защитить группу связанных блоков.

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

-объекты памяти, работающие совместно могут быть сгруппированы => подкачка страниц сводится к минимуму.

GetProcessHeap() – получить дескриптор стандартной кучи (по умолчанию) памяти.

HeapCreate() – создает кучу. В параметрах указывается начальный размер кучи и максимальный размер кучи (если он =0, то размер кучи ограничивается объемом доступной памяти).

HeapAlloc() – выделение блоков памяти из кучи.

HeapReAlloc() – повторное выделение…(изменение размера блока, после его выделения).

HeapFree() – освобождение блоков памяти.

HeapSize() –узнать точный размер любого блока.

HeapDestroy() – уничтожение «кучи».

 


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

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

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

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.