Физическая память не бесконечна, и по мере ее заполнения нам нужно выбирать, какие страницы мы будем из нее убирать, для этого существуют стратегии замещения.
1.Страница, которая была загружена в память первой, должна быть первой из памяти удаленна.
2. Древовидная структура: первым пришел - последним ушел.
Данный метод является только теоретическим
3. Вероятностная стратегия: по датчику случайных чисел выбирается та страница, которая будет замещена.
4. Интервально-частотная стратегия (практическая): за квант времени подсчитывается число обращений к странице и замещается та страница, к которой меньше всего обращений (или вообще нет).
5. Приоритетно-частотная (практическая): каждой странице ставится в соответствие некоторая числовая характеристика – приоритет страницы. При каждом обращении эта характеристика увеличивается на единицу. По истечении кванта времени характеристики страниц понижаются. Эта стратегия самая лучшая и называется стратегией «карабкающейся страницы».
Для всех стратегий нужна определенная числовая характеристика, она находится в Адресе физической страницы из Таблицы страниц.
Строка описания страницы содержит:
1. № страницы.
2. числовую характеристику.
3. признак наличия страницы в физической памяти.
4.систему защиты памяти «от дураков» и вирусов.
Защита памяти
Существуют два подхода к защите памяти:
- аппаратный;
- программный;
В данном пособии программные методы защиты памяти не рассматриваются.
Аппаратные методы защиты памяти:
Защита по граничным адресам
Защита по ключам
Рассмотрим подробнее аппаратные методы защиты памяти.
Защита памяти по граничным адресам
При этом подходе предполагается, что программа не может выйти за границы отведенного диапазона адресов. При попытке выйти за границы происходит ошибка – сигнал на выходе, “признак”.
Данному подходу соответствует следующая аппаратная реализация:
Подобная схема использовалась в Intel, начиная с процессоров Intel 80286. Еще ранее это схема была придумана и использовалась компанией DEC в своих машинах.
Защита памяти по ключам
При этом методе защиты памяти выделяются несколько вариантов доступа к памяти:
- на выполнение;
- по чтению;
- по записи;
При доступе на выполнение программа может быть выполнена, но не может быть прочитана и/или модифицирована. Например, пользовательская программа может запустить какую-нибудь системную программу, но не может прочитать код этой системной программы. Таким образом, системная страница защищается по чтению и записи, однако туда можно передать управление.
Т.о. если к какой-то программе возможен доступ только на выполнение, то она защищена от модификации.
Программы (или пользователи) делятся по приоритетам и существуют защиты по приоритетам.
Обычно пользователю присваивается UIC (user identify code) – код идентификации пользователя, который представляет собой слово, состоящее из двух полей: группы пользователей и имени пользователя. Каждое поле может содержать 256 различных значений (т.к. имеет длину байт), т.е. соответственно может быть 256 различных групп пользователей и 256 различных пользователей в каждой группе.
Существуют различные системы кодирования защиты. Рассмотрим пример наиболее простой трехуровневой системы.
В такой системе действуют следующие ограничения:
1. При полном совпадении группы и имени (UIC) пользователь получает полный доступ, т.е. доступ на выполнение, чтение и модификацию (записи) памяти;
2. При несовпадении имени пользователя, но совпадении группы разрешается доступ по чтению и выполнению;
3. Пользователь из старшей группы имеет полный доступ;
Для каждого типа доступа программа имеет ключевое слово. Под признак разрешения отводится один бит.