Защита.

Глава 7. Защита на уровне страниц.

      При использовании защиты на уровне страниц, каждое обращение к памяти проверяется до того, как оно произойдёт и при выявлении нарушений, генерируется исключение страничного нарушения. Эта проверка происходит параллельно трансляции адреса и не приводит к потере производительности.
      Процессор выполняет две проверки защиты на уровне страниц:
  •  
  • Ограничение адресного пространства (системный и пользовательский режимы).
  •  
  • Тип страницы (только чтение или чтение/запись).

          Защитная информация для страниц хранится в двух флагах каждого элемента каталога или таблицы страниц:
  •  
  • флаг чтения/записи (бит 1 элемента),
  •  
  • флаг система/пользователь (user/supervisor) (бит 2 элемента).

    Ограничение адресного пространства.

          Защитный механизм страниц, позволяющий ограничить доступ к страницам, основан на двух уровнях привилегий:
  •  
  • Режим системы (supervisor mode - флаг U/S равен 0) - Наиболее привилегированный. Для ядра операционной системы и защищённых страниц кода (например, драйверы) и данных (например, таблицы страниц).
  •  
  • Режим пользователя (user mode - флаг U/S равен 1) - Не привилегированный. Для прикладного кода и данных.

          Если процессор находится на нулевом уровне привилегий, то он работает в режиме системы, если на любом другом уровне (1, 2 или 3) - то в режиме пользователя.
          В режиме системы процессору доступны все страницы, в режиме пользователя - только пользовательские.
          Если операционная система использует плоскую модель памяти, в которой сегменты могут перекрываться, то защита на уровне сегментов не всегда действует, т.к. сегмент прикладной программы может быть отображён на системный сегмент и единственной защитой по привилегиям остаётся защита на уровне страниц.

    Тип страницы.

          Есть два типа страниц:
  •  
  • С доступом только для чтения (флаг R/W равен 0).
  •  
  • С доступом по чтению и записи (флаг R/W равен 1).

          Когда процессор находится в режиме системы и флаг WP в CR0 сброшен (это его состояние после инициализации), все страницы являются доступными для чтения и записи (защита от записи игнорируется). Когда процессор находится в режиме пользователя, он может записывать только в пользовательские страницы с доступом по чтению и записи. Системные страницы для процессора в таком режиме не доступны и при попытке обращения к ним, процессор генерирует исключение страничного нарушения.
          Процессоры семейства P6, Pentium и Intel486 позволяют защитить пользовательские страницы от записи процессором, находящимся с режиме системы. Это делается установкой в 1 флага WP в регистре CR0.

          Атрибуты защиты для страниц в таблице страниц, могут отличаться от атрибутов, установленных в самой таблице страниц. Совместное действие этих атрибутов, при сброшенном флаге WP, показано в таблице 4-2.

    Совместная защита на уровне сегментов и страниц.

          При разрешённом страничном преобразовании, процессор сначала проверяет защиту на уровне сегментов, а потом - на уровне страниц. Если обнаруживается ошибка, процессор не производит обращения к памяти и генерирует исключение.
          Защита на уровне страниц не перекрывает защиту на уровне сегментов. Например, сегмент кода по определению на записываемый; установка страниц, на которые он отображён, как страницы с доступом по чтению и записи всё равно не делает возможным запись в сегмент кода.


    Таблица 4-2. Совместная защита каталога и таблиц страниц.
    Элемент каталога страниц Элемент таблицы страниц Совместный эффект
    Приви-
    легия
    Тип доступа Приви-
    легия
    Тип доступа Приви-
    легия
    Тип доступа
    User Только чтение User Только чтение User Только чтение
    User Только чтение User Чтение и запись User Только чтение
    User Чтение и запись User Только чтение User Только чтение
    User Чтение и запись User Чтение и запись User Чтение и запись
     
    User Только чтение System Только чтение System Чтение и запись*
    User Только чтение System Чтение и запись System Чтение и запись*
    User Чтение и запись System Только чтение System Чтение и запись*
    User Чтение и запись System Чтение и запись System Чтение и запись*
     
    System Только чтение User Только чтение System Чтение и запись*
    System Только чтение User Чтение и запись System Чтение и запись*
    System Чтение и запись User Только чтение System Чтение и запись*
    System Чтение и запись User Чтение и запись System Чтение и запись*
     
    System Только чтение System Только чтение System Чтение и запись*
    System Только чтение System Чтение и запись System Чтение и запись*
    System Чтение и запись System Только чтение System Чтение и запись*
    System Чтение и запись System Чтение и запись System Чтение и запись

    Примечание:
    * Если флаг WP в CR0 установлен, тип доступа определяется флагом R/W элемента каталога или таблиц страниц.

    Оглавление Вопросы? Замечания? Пишите: sasm@narod.ru

      Copyright © Александр Семенко.
    TopList

    Hosted by uCoz