Similar presentations:
Защита памяти
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. Защита памяти по привилегиям
В случае реализации защиты попривилегиям обычно
реализуется уровневая
(кольцевая) модель при которой
более менее
привилегированные программы
не имеют доступа к ячейкам
памяти более
привилегированных программ.