Основы управления памятью
Необходимость защиты памяти
Основные задачи и подходы защиты памяти
Защита отдельных ячеек памяти
Примеры реализации защиты отдельных ячеек памяти
Методы граничных регистров
Fence/Fence Register
Fence/Fence Register (2)
Динамическое изменение границы
Base/Bound Registers (1)
Base/Bound Register (2)
Base/Bound Registers (3)
Метод ключей защиты
Иллюстрация метода ключей защиты
Метод матрицы доступа
Защита памяти по привилегиям
718.50K
Категория: ИнформатикаИнформатика

Защита памяти

1. Основы управления памятью

Защита памяти

2. Необходимость защиты памяти

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

3. Основные задачи и подходы защиты памяти

Средства защиты при управлении памятью обычно
выполняют:
проверку адреса ячейки памяти на корректность;
проверку разрешения доступа программы к адресуемой ячейке
памяти;
проверку прав доступа (разрешенных операций) программы по
отношению к ячейке памяти.
Основные классические подходы защиты:
защита отдельных ячеек памяти;
методы граничных регистров;
метод ключей защиты;
защита памяти по привилегиям.

4. Защита отдельных ячеек памяти

Защита отдельных ячеек памяти организуется в ЭВМ,
предназначенных для работы в системах управления, где необходимо
обеспечить возможность отладки новых программ без нарушения
функционирования находящихся в памяти рабочих программ,
управляющих технологическим процессом. Это может быть достигнуто
выделением в каждой ячейке памяти специального «разряда
защиты». Установка этого разряда в «1» запрещает производить
запись в данную ячейку, что обеспечивает сохранение рабочих
программ. Недостаток такого подхода – большая избыточность в
кодировании информации из-за излишне мелкого уровня
защищаемого объекта (ячейка).
В системах с мультипрограммной обработкой целесообразно
организовывать защиту на уровне блоков памяти, выделяемых
программам, а не отдельных ячеек.

5. Примеры реализации защиты отдельных ячеек памяти

Система со страничной организацией ATLAS (1962)
предоставляла для каждого блока памяти однобитовый
флаг-замок. Любая попытка получения доступа к
«запертому» блоку приводила к прерыванию.
В страничной системе XDS 940 (1969) для каждой страницы
виртуальной памяти был назначен однобитовый флаг rol.
Если rol == 1, то блок используется только для чтения,
иначе разрешен любой тип доступа.

6. Методы граничных регистров

Методы граничных регистров реализовывают защиту по
принципу «все или ничего» и заключаются в
использовании одного или двух граничных регистров
fence/fence register (однозадачная операционная система);
base/bound registers (многозадачная операционная система).

7. Fence/Fence Register

Простейший вариант предполагает использование одного граничного
регистра (fence/fence register), который разделяет память программы и
память для ОС.
При доступе программы по некоторому адресу происходит проверка
этого адреса с содержимым граничного регистра.
Данный метод предоставляет операционной системе защиту от
пользовательских приложений, но не обеспечивает защиту
приложений друг от друга и наиболее подходит для однозадачных ОС.

8. Fence/Fence Register (2)

Обычно, адресное пространство
компьютера начинается с
нулевого адреса, ОС загружается в
младшие адреса, а приложение,
начиная со значения в граничном
регистре + 1.
При использовании в ОС
абсолютной адресации
Настройка во время компиляции
если значение граничного регистра
изменяется, то программа должна
быть перекомпилирована;
настройка во время загрузки
если значение граничного регистра
изменяется, то программа должна
быть перезагружена.

9. Динамическое изменение границы

Первый вариант предполагает, что
программа загружается в верхние
адреса памяти в обратном порядке
в направлении границы, таким
образом граница может
изменяться во время работы
компьютера без перенастройки
адресов приложения. Этот способ
был реализован в ранних версиях
PDP-11 (1970).
Другой вариант требует
использования специального
базового регистра, в котором будет
храниться текущее смещение
границы. Эта схема называется
«динамическое перемещение» и
она была реализована в
суперкомпьютере CDC 6600 (1965).

10. Base/Bound Registers (1)

Более сложный вариант (base/bound registers) предполагает
использование для каждого процесса верхнюю и нижнюю границы
области памяти, куда программа имеет право доступа.
Значения граничных регистров устанавливаются ОС при загрузке
программы в память.
При каждом обращении к памяти проверяется, находится ли
используемый адрес в установленных границах. При выходе за
границы обращение к памяти не производится, а формируется запрос
прерывания, передающий управление ОС.
Метод граничных регистров, обладая несомненной простотой
реализации, имеет и определенные недостатки. Основным из них
является то, что этот метод поддерживает работу лишь с
непрерывными областями памяти.
Пример реализации – IBM 7090.

11. Base/Bound Register (2)

Base Register – значение нижней границы адресов.
Bound Register – значение верхней границы адресов.

12. Base/Bound Registers (3)

13. Метод ключей защиты

Операционная система каждому блоку памяти ставит в соответствие
некий код, называемый ключом защиты памяти, а каждой программе
присваивает код ключа программы.
Доступ программы к данному блоку памяти для чтения и записи
разрешен, если ключи совпадают (то есть блок памяти относится к
данной программе) или один из них имеет код «0» (код «0»
присваивается операционной системе и блокам общей памяти).
Пример реализации – в IBM OS 360 для каждого 2KБ блока основной
памяти был поставлен в соответствие 4-битовый ключ защиты.
Реализовывался принцип защиты «все или ничего».
Развитием предыдущего способа в IBM OS 360/67 является
использование дополнительно к ключу защиты еще одного флага –
Разряда Режима Обращения (РРО). Если при проверке ключ защиты и
ключ программы не совпадает, то при значении РРО равном «0»
разрешается выполнить операцию чтения памяти, а при значении «1»
доступ запрещается и выполняется прерывание.

14. Иллюстрация метода ключей защиты

Схема анализа
сравнивает ключ
защиты блока памяти
и ключ программы,
находящийся в
регистре слова
состояния программы,
и вырабатывает
сигнал «Обращение
разрешено» или
сигнал «Прерывание
по защите памяти».
При этом учитываются значения режима обращения к ОЗУ (запись
или считывание), указываемого триггером режима обращения ТгРО,
и режима защиты, установленного в разряде режима обращения
(РРО) ключа защиты памяти.

15. Метод матрицы доступа

Развитием метода ключей защиты следует считать реализацию в
системе SCC6700 матрицы доступа.
Каждый процесс имел такую матрицу, определяющую защиту доступа
к его сегментам.
Элемент aij этой матрицы определял тип доступа, разрешенный
процессу i к j-ому сегменту:

16. Защита памяти по привилегиям

В случае реализации защиты по
привилегиям обычно
реализуется уровневая
(кольцевая) модель при которой
более менее
привилегированные программы
не имеют доступа к ячейкам
памяти более
привилегированных программ.
English     Русский Правила