double arrow

Основные функции управления памятью


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

Каждый процесс, работающий в среде 32-х разрядной Windows, имеет в своем распоряжении виртуальное адресное пространство, которое позволяет ему адресовать до 4 Гб памяти. Для процессов, работающих в среде 64-х битной Windows, виртуальное адресное пространство достигает 8 Тб. Все потоки процесса имеют доступ к его виртуальному адресному пространству.

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

Таблица 20 -Функции управления памятью

Функция Описание
CopyMemory Копирует блок памяти из одного участка в другой. В качестве входных параметров задаются: указатель на начальный адрес копируемого участка памяти, указатель на начальный адрес участка памяти, куда будет проведено копирование и размер копируемого блока в байтах. Все входные параметры имеют размер 32 бита. Функция работает под управлением ОС семейства Windows, начиная с версии Windows 2000 Professional
  FillMemory   Заполняет участок памяти указанным значением. В качестве входных параметров задаются: указатель на начальный адрес заполняемого участка памяти, размер участка памяти и значение, которым будет заполняться, указанный участок памяти.
GetSystemFileCacheSize Возвращает текущее значение ограничения на размер рабочего набора системного кэша. Входных параметров эта функция не имеет, а в качестве выходных параметров выдает: указатели на минимальное и максимальное значение размера системного кэша, т.е. объема памяти, которое диспетчер виртуальной памяти пытается сохранить резидентной (минимальный размер) и указатель на флаг, который определяет, какое из ограничений используется в текущий момент времени.
GlobalMemoryStatus   Позволяет получить информацию о текущем использовании операционной системой как физической, так и виртуальной памяти. В качестве выходного параметра эта функция выдает указатель на структуру данных MEMORYSTATUS, содержащую поля, отражающие текущее значение: процента использования физической памяти, общий объем физической памяти (в байтах), объем доступной физической памяти (в байтах), размер виртуальной памяти (в байтах, это значение для большинства 32-х разрядных процессов, запущенных на процессоре с архитектурой х86 равно примерно 2 Гб), объем доступной виртуальной памяти и т.п. Если приложение, использующее данную функцию, работает под управлением 64-х разрядной ОС, то возможно переполнение значений определяемых параметров. Происходит это потому, что поля структуры данных MEMORYSTATUS, используемой функцией GlobalMemoryStatus, являются 32-х разрядными. Поэтому, если существует опасность возникновения такой ошибки, следует использовать функцию GlobalMemoryStatusEx и, соответственно, структуру данных MEMORYSTATUSEX, поля которой аналогичны полям структуры данных MEMORYSTATUS, за исключением размера - в структуре данных MEMORYSTATUSEX поля являются 64-х разрядными.









Сейчас читают про: