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

Содержание

Слайд 2

Необходимость защиты памяти При мультипрограммном режиме работы ЭВМ в ее памяти

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

При мультипрограммном режиме работы ЭВМ в ее памяти одновременно

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

Основные задачи и подходы защиты памяти Средства защиты при управлении памятью

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

Средства защиты при управлении памятью обычно выполняют:
проверку

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

Защита отдельных ячеек памяти Защита отдельных ячеек памяти организуется в ЭВМ,

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

Защита отдельных ячеек памяти организуется в ЭВМ, предназначенных для

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

Примеры реализации защиты отдельных ячеек памяти Система со страничной организацией ATLAS

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

Система со страничной организацией ATLAS (1962)

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

Методы граничных регистров Методы граничных регистров реализовывают защиту по принципу «все

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

Методы граничных регистров реализовывают защиту по принципу «все или

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

Fence/Fence Register Простейший вариант предполагает использование одного граничного регистра (fence/fence register),

Fence/Fence Register

Простейший вариант предполагает использование одного граничного регистра (fence/fence register), который

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

Fence/Fence Register (2) Обычно, адресное пространство компьютера начинается с нулевого адреса,

Fence/Fence Register (2)

Обычно, адресное пространство компьютера начинается с нулевого адреса, ОС

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

Динамическое изменение границы Первый вариант предполагает, что программа загружается в верхние

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

Первый вариант предполагает, что программа загружается в верхние адреса

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

Base/Bound Registers (1) Более сложный вариант (base/bound registers) предполагает использование для

Base/Bound Registers (1)

Более сложный вариант (base/bound registers) предполагает использование для каждого

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

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

Base/Bound Register (2)

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

значение верхней границы адресов.
Слайд 12

Base/Bound Registers (3)

Base/Bound Registers (3)

Слайд 13

Метод ключей защиты Операционная система каждому блоку памяти ставит в соответствие

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

Операционная система каждому блоку памяти ставит в соответствие некий

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

Иллюстрация метода ключей защиты Схема анализа сравнивает ключ защиты блока памяти

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

Схема анализа сравнивает ключ защиты блока памяти и

ключ программы, находящийся в регистре слова состояния программы, и вырабатывает сигнал «Обращение разрешено» или сигнал «Прерывание по защите памяти».

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

Слайд 15

Метод матрицы доступа Развитием метода ключей защиты следует считать реализацию в

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

Развитием метода ключей защиты следует считать реализацию в системе

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