Основы управления памятью Защита памяти. Необходимость защиты памяти


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

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

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

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

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

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

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

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

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

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

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

Base/Bound Registers (3)

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

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

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

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

memory_basics_ch4_2015.ppt
- Количество слайдов: 16