Защита памяти по ключам (уровням привилегий)
используется в большинстве современных многопрограммных ЭВМ со страничной организацией памяти и динамическим её распределением между параллельно выполняемыми программами. В её основе лежит применение специальных кодов (уровней) для проверки соответствия используемых массивов ячеек памяти номеру выполняемой программы.
Каждой рабочей программе ОС придает специальный ключ — ключ программы. Все выделенные для данной рабочей программы страницы отмечаются одним и тем же ключом страницы или ключом защиты. В качестве ключа защиты обычно указывается двоичный код номера программы. В процессе обращения к ОП производится сравнение ключа выполняемой про граммы с ключами защиты соответствующих страниц памяти. Обращение разрешается только при совпадении сравниваемых кодов ключей. Защита памяти по ключам применяется не только при работе ОП с процессором, но и в ходе обмена информацией с ВЗУ через каналы ввода-вывода. Тогда вместо ключей программ используются ключи каналов. Разрядность кодов ключей определяется максимальным количеством параллельно выполняемых программ.
Структура БЗП по ключам приведена на рис. 4.22. Его основу составляет память ключей защиты ПКЗ адресного типа. Емкость ПКЗ строго соответствует количеству страниц. Разрядность ячеек ПКЗ равна разрядности кодов ключей (k) с добавлением одного или нескольких разрядов для задания режима защиты (j). Ввод кодов защиты в ПКЗ осуществляется под управлением ОС при каждом распределении поля ОП между параллельно выполняемыми программами и каналами ввода-вывода, а также при любом перераспределении поля ОП. Выборка информации
из ПКЗ производится по номерам страниц, представляемых старшими разрядами кода адреса ячейки ОП, по которому идет обращение к ОП.
Рис.4.22. Защита памяти по ключам
Кроме ПКЗ в состав блока защиты памяти входят: дешифратор номера страниц ДШС для расшифровки кодов номеров страниц; регистр ключей защиты РКЗ для фиксации выбираемых из ПКЗ кодов; регистр ключей программ РКП для приема и хранения кодов ключей программ, поступающих из регистра слова состояния программы (системного регистра) процессора, или кодов ключей каналов; узел сравнения ключей УСК для сравнения ключей защиты с ключами программ (или каналов).
Код ключа некоторой программы вводится в РКП операционной системой при каждой инициализации этой программы, т.е. при каждом переходе к выполнению её команд. При работе с каналом в РКП вводится ключ канала. В УСК, представляющем собой комбинационную схему, производится сравнение ключа защиты, выбранного из ПКЗ при данном обращении к ОП и зафиксированного в РКЗ, и кода ключа программы (ключа канала), поступающего от РКП. По результатам сравнения узел сравнения кодов формирует либо сигнал разрешения обращения к ОП, либо сигнал прерывания выполняемой программы.
Функционирование БЗП начинается с ввода в ДШС кода номера страницы ОП, к которой производится обращение. По номеру страницы из ПКЗ выбирается соответствующий ключ защиты, код которого помещается в РКЗ. В УСК код ключа защиты сравнивается с кодом ключа программы (канала) и формируются управляющие сигналы разрешения или прерывания.
Защита памяти по ключам (уровням привилегий) является наиболее универсальной и гибкой, особенно эффективной при страничной или сегментно-страничной организации виртуальной памяти и динамическом её распределении. Однако такой способ защиты требует для своей технической реализации заметных дополнительных аппаратных затрат, прежде всего необходима ПКЗ с очень небольшим временем выборки кода ключей. Память ключей защиты строится так, чтобы время выборки кода было практически на порядок меньше времени выборки из ОП.