Memory_Basics_Ch4_2015.ppt
- Количество слайдов: 16
Основы управления памятью Защита памяти
Необходимость защиты памяти При мультипрограммном режиме работы ЭВМ в ее памяти одновременно могут находиться несколько независимых программ. Поэтому необходимы специальные меры по предотвращению или ограничению обращений одной программы к областям памяти, используемым другими программами.
Основные задачи и подходы защиты памяти Средства защиты при управлении памятью обычно выполняют: проверку адреса ячейки памяти на корректность; проверку разрешения доступа программы к адресуемой ячейке памяти; проверку прав доступа (разрешенных операций) программы по отношению к ячейке памяти. Основные классические подходы защиты: защита отдельных ячеек памяти; методы граничных регистров; метод ключей защиты; защита памяти по привилегиям.
Защита отдельных ячеек памяти организуется в ЭВМ, предназначенных для работы в системах управления, где необходимо обеспечить возможность отладки новых программ без нарушения функционирования находящихся в памяти рабочих программ, управляющих технологическим процессом. Это может быть достигнуто выделением в каждой ячейке памяти специального «разряда защиты» . Установка этого разряда в « 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 для каждого 2 KБ блока основной памяти был поставлен в соответствие 4 -битовый ключ защиты. Реализовывался принцип защиты «все или ничего» . Развитием предыдущего способа в IBM OS 360/67 является использование дополнительно к ключу защиты еще одного флага – Разряда Режима Обращения (РРО). Если проверке ключ защиты и ключ программы не совпадает, то при значении РРО равном « 0» разрешается выполнить операцию чтения памяти, а при значении « 1» доступ запрещается и выполняется прерывание.
Иллюстрация метода ключей защиты Схема анализа сравнивает ключ защиты блока памяти и ключ программы, находящийся в регистре слова состояния программы, и вырабатывает сигнал «Обращение разрешено» или сигнал «Прерывание по защите памяти» . При этом учитываются значения режима обращения к ОЗУ (запись или считывание), указываемого триггером режима обращения Тг. РО, и режима защиты, установленного в разряде режима обращения (РРО) ключа защиты памяти.
Метод матрицы доступа Развитием метода ключей защиты следует считать реализацию в системе SCC 6700 матрицы доступа. Каждый процесс имел такую матрицу, определяющую защиту доступа к его сегментам. Элемент aij этой матрицы определял тип доступа, разрешенный процессу i к j-ому сегменту:
Защита памяти по привилегиям В случае реализации защиты по привилегиям обычно реализуется уровневая (кольцевая) модель при которой более менее привилегированные программы не имеют доступа к ячейкам памяти более привилегированных программ.
Memory_Basics_Ch4_2015.ppt