Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Топ:
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Интересное:
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
2017-09-28 | 482 |
5.00
из
|
Заказать работу |
|
|
Линейный адрес процесса в Windows состоит из 32 бит и изменяется в пределах от 0хоооооооо до 0xffffffff. Это теоретически позволяет процессу обращаться к 4 Гбайт логической памяти. В операционных системах семейства Windows NT процессу доступны два младших гигабайта этой памяти с диапазоном адресов от 0хоооооооо до 0x7fffffff, а ее старшие два гигабайта с диапазоном адресов от 0xsooooooo до 0xffffffff используются системой. В операционной системе Windows 98 из 2 Гбайт памяти доступной процессу, операционная система использует еще 64 Кбайт памяти с диапазоном адресов от 0хоооооооо до 0x0000ffff для проверки присваивания значений через указатели, значения которых инициализированы в null, и для поддержки совместимости со старыми операционными системами MS-DOS и Windows 3.1.
В операционных Windows виртуальный адрес процесса отличается от линейного адреса этого же процесса только интерпретацией бит линейного адреса. Поэтому, можно сказать, что каждому процессу в Windows также доступно два гигабайта виртуальной памяти. Это не значит, что процесс может использовать всю эту память одновременно. Количество виртуальной памяти, доступной процессу, зависит от емкости физической памяти и дисков. Чтобы ограничить процесс в использовании виртуальной памяти, некоторые страницы в таблице страниц могут быть помечены как недоступные.
После этих замечаний перейдем к описанию состояния виртуальной памяти процесса. С точки зрения процесса, страницы его виртуальной памяти могут находиться в одном из трех состояний:
□ свободны для использования (free);
□ распределены процессу для использования (committed);
□ зарезервированы, но не используются процессом (reserved).
Резервирование, распределение и освобождение виртуальной памяти
|
Для резервирования или распределения области виртуальной памяти процесс должен вызвать функцию virtuaiAiioc, которая имеет следующий прототип:
LPVOID VirtuaiAiioc(
LPVOID IpAddress, // область для распределения или резервирования
SIZE_T dwSize, // размер области
DWORD flAllocationType, // тип распределения
DWORD flProtect // тип защиты доступа
);
В случае успешного завершения эта функция возвращает адрес виртуальной памяти, распределенной или зарезервированной процессом, а в случае неудачи — null. При этом отметим такую деталь, если распределение виртуальной памяти функцией virtuaiAiioc завершается успешно, то выделенная память автоматически инициализируется нулями.
Инициализация и копирование блоков виртуальной памяти
Чтобы заполнить блок памяти определенным значением, используется функция FiliMemory, которая имеет следующий прототип:
VOID FiliMemory (
PVOID Destination, // адрес блока памяти
SIZE_T Length, // длина блока
BYTE Fill // символ-заполнитель
);
Эта функция заполняет блок памяти, длина в байтах и базовый адрес которого задаются соответственно параметрами Length и Destination, символом, заданным в параметре Fill.
Если блок памяти необходимо заполнить нулями, то для этого можно использовать функцию zeroMemory, которая имеет следующий прототип:
VOID ZeroMemory (
PVOID Destination, // адрес блока памяти
SIZE_T Length, // длина блока
);
Параметры этой функции имеют то же назначение, что и параметры функции FiliMemory, исключая символ-заполнитель. Для копирования блока виртуальной памяти используется функция CopyMemory, которая имеет следующий прототип:
VOID CopyMemory (
PVOID Destination, // адрес области назначения
CONST VOID *Source, // адрес исходной области
SIZE_T Length // длина блока памяти
Эта функция копирует блок памяти, длина в байтах и базовый адрес которого задаются соответственно параметрами Length и source в область памяти по адресу Destination. Отметим, что результат выполнения функции CopyMemory непредсказуем, если исходный и результирующий блоки памяти перекрываются.
Для копирования перекрывающихся блоков памяти используется функция MoveMemory, которая имеет следующий прототип:
VOID MoveMemory (
PVOID Destination, // адрес области назначения
CONST VOID *Source, // адрес исходной области
SIZE_T Length // длина блока памяти
);
Параметры этой функции полностью совпадают с параметрами функции CopyMemory.
|
|
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!