Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
evm_k_dosroku.doc
Скачиваний:
8
Добавлен:
08.11.2019
Размер:
7.64 Mб
Скачать

Билет №10 Работа микропроцессоров Intel x86 в защищенном режиме. Общая схема формирования исполнительного адреса. Кольца защиты. Организация дескрипторных таблиц. Типы дескрипторов.

1) Концепция незащищенного режима:

O ffset – смещение, дает возможность создавать сегменты размером до 64кб, однако сам сегмент памяти, выделенный под задачу может иметь размер < 64кб. В таком случае при передаче задаче физического адреса сегмента (адреса его базы в оперативной памяти) задача может установить значение смещения (offset) больше размера сегмента в следствие чего повредить данные другой программы. Так появилась потребность создавать режим защищенного адреса.

Концепция защищенного адреса:

  1. Наличие механизмов защиты памяти.

  2. Разделение прав пользователей.

Появилась потребность ограничения доступа прикладных программ к физическому адресу сегмента. Доступ к данным по физическому адресу стал доступен лишь высокопривилегированным программам как ядро ОС.

Кольца защиты: В работе микропроцессора х86 существует 4 кольца защиты:

#0 – работа ядра ОС

#1 – системные сервисы

#2 – подсистема ввода-вывода

#3 – пользовательские программы

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

Т аблица Трансляции Адресов (ТТА):

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

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

2) Кольца защиты (поподробнее):

Кольца защиты — архитектура информационной безопасности и функциональной отказоустойчивости, реализующая аппаратное разделение системного и пользовательского уровней привилегий. Структуру привилегий можно изобразить в виде нескольких концентрических кругов. В этом случае системный режим (режим супервизора или нулевое кольцо, т.н. "кольцо 0"), обеспечивающий максимальный доступ к ресурсам, является внутренним кругом, тогда как режим пользователя с ограниченным доступом — внешним. Традиционно семейство микропроцессоров x86 обеспечивает четыре кольца защиты.

3) Дескрипторные таблицы — служебные структуры данных, содержащие дескрипторы сегментов.

Дескриптор (англ. Descriptor) — дословно описатель, описательный элемент.

Дескриптор сегмента — служебная структура в памяти, которая определяет сегмент. Длина дескриптора равна восьми байтам.

В архитектуре x86 есть три вида дескрипторных таблиц:

  • Глобальная дескрипторная таблица (англ. Global Descriptor Table, GDT);

  • Локальная дескрипторная таблица (англ. Local Descriptor Table, LDT);

  • Таблица векторов прерываний (англ. Interrupt Descriptor Table, IDT);

1. Таблица GDT (Global Descriptor Table) — глобальная дескрипторная табли­ца. Это основная общесистемная таблица, к которой допускается обращение со стороны программ, обладающих достаточными привилегиями. Располо­жение таблицы GDT в памяти произвольно; оно локализуется с помощью специального регистра gdtr  (48 бит). В таблице GDT могут содержаться следующие типы дескрипторов:

·      дескрипторы сегментов кодов программ;

·      дескрипторы сегментов данных программ;

·      дескрипторы стековых сегментов программ;

·      дескрипторы TSS (Task Segment Status) — специальные системные объек­ты, называемые сегментами состояния задач;

·      дескрипторы для таблиц LDT;

·      шлюзы вызова;

·      шлюзы задач.

2. Таблица LDT (Local Descriptor Table) — локальная дескрипторная таблица. Для любой задачи в системе может быть создана своя дескрипторная табли­ца подобно общесистемной GDT. Для связи между таблицами GDT и LDT в таблице GDT создается дескриптор, описывающий область памяти, в которой находится LDT. Рас­положение таблицы LDT в памяти также произвольно и локализуется с по­мощью специального регистра ldtr  (16 бит). В таблице LDT могут содержаться сле­дующие типы дескрипторов:

·      дескрипторы сегментов кодов программ;

·      дескрипторы сегментов данных программ;

·      дескрипторы стековых сегментов программ;

·      шлюзы вызова;

·      шлюзы задач.

3. Таблица IDT (Interrupt Descriptor Table) — дескрипторная таблица преры­ваний. Данная таблица также является общесистемной и содержит дескрип­торы специального типа, которые определяют местоположение программ обработчиков всех видов прерываний. В качестве аналогии можно привести таблицу векторов прерываний реального режима. Расположение таблицы IDT в памяти произвольно и локализуется с помощью специального регис­тра idtr  (48 бит). Элементы данной таблицы называются шлюзами. Отметим, что эти шлюзы бывают трех типов:

·      шлюзы задач;

·      шлюзы прерываний;

·      шлюзы ловушек.

Каждая из дескрипторных таблиц может содержать до 8192 (213) дескрипторов

Билет №11

Работа с подпрограммами в режиме защищенного адреса микропроцессоров Intel x86. Межкольцевые вызовы подпрограмм. Ограничение прав доступа. Управление задачами. Сегмент состояния задачи. Вложенные задачи.

Дескриптор содержит байт доступа, который определяет тип сегмента: сегмент кода, сегмент данных или сегмент LDT.

1)

Байт доступа:

Р – бит присутствия (1 если сегмент загружен в память)

А – бит обращения (1 если было обращение к дескриптору)

DPL – уровень привелегий сегмента (номер кольца)

R – разрешение чтения (1 если чтение разрешено. Выполнение/запись разрешены всегда)

W – разрешение записи (1 если запись разрешена. Чтение/Выполнение запрещены всегда)

ED – признак расширения вниз

Вызов подпрограмм:

При вызове подпрограммы в стек вызываемой процедуры записываются SS, SP – регистры вызывающей процедуры, затем передаваемые параметры, затем адрес возврата – CS и IP регистры.

При возврате:

1 Извлекается адрес возврата

2 Удаляются параметры из обоих стеков

3 Обратное переключение стеков

4 Сброс регистров DS и ES если они адресуют более привелегированный сегмент

Для предотвращения троянских вызовов создана шлюзовая система вызова процедур

Концепция:

1 Согласование прав доступа

2 Копирование аргументов межу стеками

Программа с большим номером кольца может вызвать программу из кольца с меньшим номером, но при этом уровень привелегий вызванной программы будет установлен равным уровню привелегий вызывающей программы. Программа с меньшим номером кольца не может вызывать программы с большим номером. Программы одного кольца могут вызывать друг друга.

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

Селектор TSS (task state segment) определяет дескриптор TSS в таблице GDT. Последний бит в байте доступа – бит B (busy) – бит занятости, определяет выполняется ли данная задача (1 если задача активная), и служит для предотвращения выполнения одной задачи одновременно 2мя процессорами при работе в многопроцессорном режиме. При вызове задачи бит занятости устанавливается равным 1, при выходе – 0. Вызов задачи с битом занятости равным 1 запрещен.

2) Дополнение.

1.Межкольцевые вызовы задач

Используется функция jmp <селектор шлюза TSS>

Одной из команд обычно используемых для передачи управле ния является команда JMP. Эта команда выполняет безусловный переход, т.е. обеспечивает передачу управления при любых обстоятельствах.

Селектор TSS - указывает на дескриптор TSS задачи, на которую произойдёт переключение, если передача управления будет происходить через этот шлюз.

2. Сегмент состояния задачи (TSS) является одной из нескольких структур данных, определяемых системной архитектурой 80386. Фактически, эти структуры данных являются "типами данных" для операционных систем. Сегмент TSS соответствует тому, что в некоторых операционных системах называется блоком управления задачей; в этом сегменте хранится состояние виртуального процесора задачи. Каждая задача 80386

представлена своим TSS, который делится на две части. Младшая

часть TSS определена системной архитектурой 80386 и содержит

значения регистров процессора. Старшая часть TSS может быть определена операционной системой для хранения данных, связанных с задачей, например, приоритета выполнения, дескрипторовфайлов и т.д. Дла создания своей задачи операционная система формирует TSS и инициализирует его величинами, необходимыми задаче для начала ее выполнения. В результате 80386 поддерживает младшую часть TSS, а за его старшую часть несет ответственность операционная система.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]