"Человек - самое уязвимое место в системе безопасности.."

Защищенный режим работы процессора

Режим виртуальной адресации (ВА)

Возможности 80386 реализуются абсолютно, если он работает в таком режиме ВА. В таком случае, пространство исполнительных адресов увеличивается до 4 Гбайт, а область виртуальных адресов до 64 Тбайт. Режим ВА разрешает использовать команды, которые специально оптимизированные для реализации многозадачных ОС.

Схема адресации

В изменении исполнительного адреса работают два компонента: селектор 16-ти битовый, которые определяет адреса базы сегмента и 32-х битовый эффективный адрес. Созданный исполнительный адрес есть физическим адресом, если не используется механизм страничной адресации. В другом случае, он меняется на физический. В режиме ВА селектор реализуется, как индекс который указывает ОС на конкретный элемент специальной таблицы, где размещены 32-х битные адреса базы данного сегмента. Физический адрес создается сложением базового адреса с 32-х битовым смещением. Страничная адресация памяти есть дополнением для управления памяти, который используется только в режиме ВА. Такой механизм разрешает менять исполнительные адреса в физические.

	                                                             адрес
  48 битовый указатель                                      ----------¬
----------T----------¬                                      ¦         ¦ /|
¦ Сегмент ¦ Смещение ¦                                      ¦         ¦  |  4К байтов
L--T------+----T------                                      +---------+ |/
15 ¦      31   ¦     0                                      ¦         ¦ /|
   ¦           L-------------¬                              ¦         ¦  |  4К байтов
   ¦                         ¦                              ¦_________¦ |/
   ¦   ----------------¬     ¦          -----------¬        ¦         ¦ /|
   ¦   ¦ Права доступа ¦     ¦          ¦  80386   ¦        ¦         ¦  |  4К байтов
   ¦   +---------------+     ¦          ¦ механизм ¦ физи-  ¦_________¦ |/
   ¦   ¦   Граница     ¦     ¦          ¦ странич- ¦ ческий ¦_________¦ /|
   ¦   +---------------+     V          ¦   ной    ¦ адрес  ¦ Операнд ¦  |  Физическая
   L-->¦ Базовый адрес +---> + -------->¦ организа +------->¦ памяти  ¦  |  страница
       L----------------32     Линейный ¦   ции    ¦ Адрес  ¦_________¦  |  4К байтов
          Дескриптор            адрес   ¦  памяти  ¦_______-+_________¦ |/
           сегмента                     L-----------  при  /¦         ¦ /|
                                                    странич-¦         ¦  |  4К байтов
                                                      ной   ¦_________¦ |/
                                                   структуре¦         ¦ /|
                                                            ¦         ¦  |  4К байтов
                                                            ¦_________¦ |/
                                                            ¦         ¦ /|
                                                            ¦         ¦  |  4К байтов
                                                            L---------- |/

Рисунок 1 — Страничное устройство памяти и сегментация

Сегментация

Сегментация — это один из механизмов управления памятью. Он есть основой защиты памяти. Сегменты — самостоятельные участки памяти, которые имеют личные атрибуты. К примеру, в сегменте размещаются коды программ или таблицы ОС. Все данные о сегменте запоминаются в 8-ми байтовой структуре, которую называют дескриптор. Все дескрипторы размещаются в аппаратно реализуемых таблицах. Аббревиатуры, которые используют при описании дескрипторов:

  • PL — уровень привилегированности. 0 — наиболее привилегированный, 3 — наименее.
  • DPL — уровень привилегированности дескриптора — это младший уровень, функции которого заключены в обращению к дескриптору, и к связанному с ним сегменту.
  • RPL — запрашиваемый уровень привилегированности — уровень конкретного подключаемого селектора. RPL заложен в двух младших битах селектора.
  • CPL — Текущий уровень привилегированности, уровень который имеет текущую выполняемую задачу.
  • EPL — эффективный привилегированный уровень, наименьший уровень

Таблица дескрипторов

Такие таблицы определяют все сегменты, которые реализуются в системе на базе 80386. Существует три типа таблиц:

  • Таблица глобальных дескрипторов
  • Таблица локальных дескрипторов
  • Таблица дескрипторов прерываний

Каждая таблица размещается в своей части памяти имеет размер от 8 байт — 64 Кбайт. Каждая таблица может иметь до 8к 8-ми байтных дескрипторов. Старшие 13 бит селектора реализованы для индекса дескрипторной таблицы. Для обращения к таблицам существуют регистры, которые имеют 32-х битовый исполнительный адрес и 16 битовую границу таблицы.

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

Таблица локальных дескрипторов (LTD), содержит дескрипторные которые используются в данной задаче. ОС реализована таким образом, что каждая задача имеет свою LDT. LDT содержит только дескрипторы команд, стека, данных номера и вызова задачи. Сегмент не может быть доступен задаче, если его дескриптор отсуствует внутри текущей LDT или GTR.

Таблица дескрипторов прерываний (IDT),содержит дескрипторы, которые указывают расположение 256 подпрограмм обслуживания прерываний. IDT содержит только вектор прерываний, вектор задач и трассировок. Каждое прерываний которое используется системой, должно быть описано в IDT.

Дескрипторы

Дескриптор — это объект, на который указывает селектор сегмента. Дескриптор имеет размер 8 байт, и определяет атрибуты данной области реализуемых адресов. Все сегменты 80386 имеют 3 единых поля P, S, DPL.

31                                                                   0 Адрес байта
 ----------------------------------------------------------------------------
 |База сегмента 15...0                   | Граница сегмента 15...0          |    0
 |---------------------------------------|----------------------------------|
 |BASE 31...24 | G | D | 0 | 0 |  LIMIT  | P | DPL | S | TYPE   | A | BASE  |    +4
 |             |   |   |   |   | 19...16 |   |  |  |   |  |  |  |   |23...16|
 ---------------------------------------------------------------------------
       BASE     базовый адрес сегмента
       LIMIT    длина сегмента
       P        бит присутствия  1=присутствует   0=отсутствует
       DPL      привелегированный уровень дескриптора 0-3
       S        дескриптор сегмента  0-дескриптор системы
                                     1-дескриптор сегмента данных
                                       или сегмента инструкций
       TYPE     тип сегмента
       A        бит доступа
       G        бит единицы измерения  1=длина сегмента указывается в страницах
                                       0=длина сегмента указывается в байтах
       D        размерность операндов и эффективных адресов (присутствует
                только в дескрипторах кодовых сегментов
                  1=32-разрядный сегмент
                  0=16-разрядный сегмент
       0        бит должен иметь нулевое (0)значение для обеспечения в дальнейшем
                совместимости с процессором

Дескриптор команд и данных S=1. Дескрипторы сегментов данных и команд имеют два общих поля: A, G. A — бит нужен ОС для получения статистики по обращению к данному сегменту. G — бит указывает на величину, где пишется размер сегмента. E — бит указывает, какой из сегментов используется командный (S=1, E=1) или данных (S=1, E-1). Кодовый сегмент может быть только в стадии выполнения или чтения R=0/1. Стадия записи не возможна.

Дескрипторы шлюзов (S=0, TYPE=4-7, C, F), бывают:

  • шлюзы задач
  • шлюзы вызовов
  • шлюзы трассировок
  • шлюз прерываний

Смотрите также: