PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

Память. Верхний уровень

Общие принципы защиты памяти

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

Можно назвать следующие цели защиты:

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

Защита в ЭВМ может быть построена на следующих принципах:

  1. Расщепление адресных пространств при трансляции адресов.
  2. Проверки разрешено/запрещено при работе с памятью при записи или чтении операндов.
  3. Защита отдельных ячеек памяти, каждая из которых имеет специальный разряд защиты. Этот разряд проверяется при обращении к памяти.
  4. Метод граничных регистров. Защищаемая область непрерывна и связана с двумя регистрами: начало и конец защищаемой области и признак защиты (чтение, запись). При обращении адрес сравнивается со значениями регистров. Требуется по 2 регистра на каждую защищаемую область.
  5. Кольца защиты (см. рисунок ниже). Задачи, выполняемые на ЭВМ, разделяют по уровню привилегий. Минимально используют два уровня привилегий: супервизор, пользователь. Такое разделение используется в процессоре PowerPC 603.
  6. Метод ключей защиты. Память разбивается на блоки фиксированной длинны (страницы). Каждому блоку ставится в соответствие некий код, называемый ключ защиты памяти. Каждой программе в свою очередь присваивается код защиты программы. Условием доступа программы к блоку памяти служит совпадение ключа и кода защиты или равенство их нулю. Нулевой код защиты имеет операционная система. Память разбита на страницы. Составляется таблица страниц, которая содержит адрес страницы, ключ защиты и признак защиты. При обращении к памяти производится проверка прав доступа. Использован в IBM 360/370.
  7. Задание точек входов в подпрограммы.

Кольца защиты

В процессорах Pentium, Itanium механизм защиты распознает четыре уровня привилегированности, нумеруемые от 0 до 3. Чем больше номер, тем ниже уровень привилегированности. При удовлетворении всех прочих проверок защиты исключение общей защиты генерируется при попытке программы доступа к сегменту с большим уровнем привилегированности (т.е. с меньшим числом, задающим уровень), чем имеет данный сегмент.

В ЭВМ VAX-11 в системе есть 4 уровня привилегий (кольца защиты):

  • 00kernelрежим ядра
  • 01executerрежим управления
  • 10supervisorконтроль
  • 11userпользователь