Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Атрибуты защиты страниц памяти






Для повышения устойчивости работы операционной системы и пользовательских процессов каждой странице памяти присваиваются атрибуты защиты, определяющие, какие операции могут проводиться с этой памятью. Все операционные системы Windows поддерживают следующие атрибуты:

· PAGE_NOACCESS: попытки записи, чтения или выполнения кода с этой страницы вызовут нарушение доступа;

· PAGE_READONLY: разрешено чтение; попытки записи или выполнения кода с этой страницы вызовут нарушение доступа;

· PAGE_READWRITE: разрешено чтение и запись, попытка выполнения кода с этой страницы вызовет нарушение доступа.

Следующие атрибуты защиты доступны начиная с ОС Windows 2000:

· PAGE_EXECUTE: разрешено выполнение кода, попытки записи или чтения вызовут нарушение доступа;

· PAGE_EXECUTE_READ: разрешено выполнение кода и чтение, попытки записи вызовут нарушение доступа;

· PAGE_EXECUTE_READWRITE: разрешено выполнение любых операций;

· PAGE_WRITECOPY: разрешено чтение и запись данных со страницы, попытки выполнения кода с этой страницы вызовут нарушение доступа. При записи на страницу для процесса будет создана индивидуальная копия страницы.

· PAGE_EXECUTE_WRITECOPY: разрешены все операции, при записи создается индивидуальная копия.

32-х битные процессоры Intel до последнего времени не поддерживали режим защиты PAGE_EXECUTE, поэтому, хотя такой режим и был предусмотрен в Windows, реальное использование его было невозможно, разрешение выполнения было эквивалентно разрешению чтения. С появлением аппаратной поддержки этого бита, появилась возможность и его использования на практике. Windows поддерживает этот режим начиная с Windows XP Service Pack 2 и Windows Server 2003 Service Pack 1.

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

Кроме рассмотренных атрибутов имеются также специальные флаги, которые могут быть добавлены к атрибутам защиты. Флаги PAGE_NOCACHE и PAGE_WRITECOMBINE как правило, используются при разработке драйверов. Флаг PAGE_GUARD позволяет процессу получать уведомления (через механизм исключений) в момент, когда происходит попытка записи на страницу.

Windows 2000 использует предварительное резервирование и флаг PAGE_GUARD для эффективной работы со стеком. Максимальный размер стека потока указывается в исполнимом файле. Однако реальный размер стека может быть меньше, чем максимальный. Для экономии физической памяти Windows поступает следующим образом:

· при создании стека для него резервируется регион, соответствующий максимальному размеру;

· исходно, физическая память выделяется только для первых двух страниц стека, причем для второй устанавливается флаг PAGE_GUARD;

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

Таким образом, для стека выделяется только то количество оперативной памяти, которое реально необходимо.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.