Защита памяти
Защита памяти (
Альтернативное определение: защита памяти — избирательная способность предохранять выполняемую задачу от записи или чтения памяти предназначенной другой программе[источник не указан 697 дней].
Методы
Чаще всего реализуется в рамках виртуальной адресации памяти.
Сегментирование памяти
Сегментирование памяти означает разбиение компьютерной памяти на фрагменты переменной длины, называемые сегментами (см Сегментная адресация памяти).
В архитектуре
Страничная память
При страничной организации памяти, все адресное пространство делится на фрагменты фиксированного размера, называемые страницами. Их размер кратен степени 2, и обычно равен 4096, но возможно использование одновременно нескольких размеров страниц (4 кб, 2-4МБ в x86, от 4 до 256 кб в IA64[источник не указан 697 дней]). При помощи механизма виртуальной памяти, каждая страница виртуальной памяти может быть поставлена в соответствие любой странице физической памяти, либо помечена как защищённая. При помощи виртуальной памяти возможно использование линейного адресного пространства виртуальной памяти, которое на самом деле образовано фрагментированными участками адресного пространства физической памяти.
Многие архитектуры, использующие страничную организацию памяти, в том числе и наиболее популярная x86, реализуют защиту памяти на уровне страниц.
Таблица страниц используется для установления соответствия адресов в виртуальной памяти физическим адресам. Обычно эта таблица невидима для программы. Возможность установки в таблицах произвольных отображений позволяет легко выделить новую память, так как дополнительная страница, расположенная в нужном месте виртуального адресного пространства, может быть отображена на любую свободную страницу в оперативной памяти.
При таком отображении, приложение не имеет возможности обратиться к странице, отсутствующей в её таблице страниц. Если при обращении по произвольному адресу не было найдено подходящее отображение, происходит исключительная ситуация
Следует заметить, что
Механизм ключей защиты
Применялся в
.Адресация основанная на Capability
Capability-based addressing редко применяется в коммерческих компьютерах. В системах с такой защитой памяти вместо указателей используются защищённые объекты (называемые capabilities), которые могут быть созданы лишь привилегированными инструкциями, исполняемыми либо ядром ОС либо специальными процессами. Использование такой защиты позволяет ограничивать доступ процессов к чужой памяти без использования раздельных адресных пространств и переключений контекста (сброса TLB, изменения глобальных дескрипторов). Использовались в исследовательских проектах KeyKOS, EROS; виртуальных машинах Smalltalk и Java.
Защита памяти в различных ОС
Среди ОС, реализующих защиту памяти
- Microsoft Windowsначиная с Windows NT 3.1 и Windows 95.
- Большая часть Unix-likeсистем, включая
Некоторые старые ОС жёсткого реального времени не используют защиту памяти, даже на процессорах, где это возможно. Примером такой ОС является VxWorks версий до 5 включительно.
См. также
- Storage violation, for violation of memory protection
- Separation of protection and security
- Защищённый режим — механизмы защиты в x86
Примечания
- ↑ 1 2 Intel 64 and IA-32 Architectures Software Developer’s Manuals: Volume 3A: System Programming Guide, Part 1; PDF Архивная копия от 19 апреля 2009 на Wayback Machine
Ссылки
- Intel Developer Manuals — in-depth information on memory protection for Intel based architectures.