Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материал / ZIBBEN-I.doc
Скачиваний:
59
Добавлен:
30.04.2013
Размер:
1.04 Mб
Скачать

18.Сpедства защиты памяти в процессорах Intel x86.

Есть 2 уровня защиты:

1. Защита локального адресного пространства.

Активная задача м. обращаться к общему адресному простр-ву через глобальную таблицу и к своему локальному адресному пр-ву через LDT. На локальном уровне контролируется размер сегмента – генерируется прерыв-е по защите памяти.

2. Защита по уровню привелегий.

0 – ядро ОС – самый привелигиров

1,2 – IOPL

3 – прикл.

IOPL – команда м. вып-ть вв/выв в порты

Для контроля доступа исп-ся след. коды:

DPL – уровень привилегий дескриптора(нах-ся в байте доступа дескриптора)

CPL – текущий уровень привилегий. Уровень привилегий сегмента кода пр-мы, выполняемый в данный момент, Нах-ся в рег-ре cs.

CPL меняется при передачи упр-я кодовому сегменту с другим уровнем привилегий. Причем CPL м.б. больше DPL, если сегмент явл-ся конформным. Комформный сегмент вып-ся на уровне привилегированности, вызывающей процедуры.

RPL – уровень запрашиваемых привилегий. Это код из соответствующего сегментного р-ра.

Если RPL>CPL, то он замещает CPL. Когда более привилегиров. пр-ма принимает селектор из менее привилегиров., то RPLвызывает доступ к памяти с меньшим уровнем привилегированности.

EPL = max (RPL = CPL)

Если операнд нах-ся в стеке RPL и CPL совпадают

Правила защиты.

1. Правило текущей привилегии.

Адресуемый домен процесса меняется при изменении его CPL.

2. Правило сегмента стека.

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

3. Правило прямой передачи упр-ния.

Прямая передача упр-я разрешена, если:DPL

1. DPL вызываемого сегм. >= CPL

2. Когда вызыв-ся конформный сегмент и DPL < CPL. при этом вызов возможен всегда, но при вып-нии кода DPL заменяется на CPL.

4.Правило доступа к данным.

DPL >= CPL

5. Правило контроля потока.

Обращение процедуры с более высок. привилегиров-тью вып-ся через шлюз вызова, что обеспечивает защиту сегм-тов ком-д.

19.Механизм шлюзов. Передача управления через Call Gate и Task Gate.

В защищенном режиме есть 4 типа шлюзов:

1.Call Gate(шлюз вызова).

2.Interrupt Gate(шлюз прерыв-я)

3.Trap Gate(шлюз – исключения(шлюз – ловушки))

4.Task Gate(шлюз задачи)

Схема работы шлюза вызова.

Вызыв-я прогр-ма

Шлюз вызова – особый эл-т(тип) таблицы дескрипторов, содержит Вирт. адрес, указ-щий на друг. дескриптор сегмента, кот. нах-ся базовый адрес вызываемого сегмента в памяти. Шлюз гарантирует, что передача управления будет направлена в точку входа в пр-му. Шлюзы м.б. организованны и в глоб. дескрипторной табл.(GDT), и в локальной дескр. табл. (LDT). Шлюзы формируются ОП. DPL в дескрипторе шлюза опр-ет из каких уровней м. исп-ть данный шлюз, DPL дескрипт. сегм. опр-ет возможность вызова кода.

DPL шлюза >= EPL

DPL кодовый сегм. <= CPL(для ком. call)

= CPL(для ком. jmp)

При вызове кода с друг. уровнем привилегий возник. проблема передачи параметров м/д различными стеками (На кажд уровне есть свой сегмент стека)

Селекторы сегментовстека храняться в контексте задачи в сегменте TSS, если Вызыв-ся пр-ма с друг. уровнем привилегии, то из текущего стека в стек уровня вызываемого сегмента копируется столько 32-х разрядных слов, сколько указано в спец. поле счетчика слов дескриптора шлюза.

Обработка прер-ний в контексте другой задачи.

Task Gate приводит в действие мех-м переключения задачи. Для упр-я процессами ОС исп-ет инф-ю стр-ру, кот-я наз-ся дескриптором проц-ра.

Аппаратная поддержка этого мех-ма сост-ит в том, что проц-р обеспечивает работу с наиболее важной системно – независимой частью инф-ции. Такая инф-ция запис-ся в сегмент сохранения задачи (TSS) – Task State Segment.

TSS – хранит контекст задачи, необходимой для восст-я прерванной прог-мы.

Формат сегмента TSS.

Для описания доступа к возможности доступа задачи к портам в/в проц-р в защищ. режиме исп-ет карту битовых полей.

В р-ре флагов задается уровень IOPL, для вып-я команд ввода – вывода (in, out) код прогр-мы д. иметь уровень привилегий не ниже, чем IOPL.

Проц-р получает доступ к TSS.

Рег-р задачи TR содержит селектор дескриптора TSS в глобальноц дескр-ной таблице GDT.

Вызов задачи м.б. выполнен 2-мя способами:

1) непосредственный вызов (через ком. call)

2) косвенный через шлюз задачи.

1.

Вып-ся ком. call, селектор к-рый указ-ет на дескриптор сегмента типа TSS. В TSS текущей задачей сохраняется значение р-ров проц-ра. На текущий TSS указ-ся рег-р TR проц-ра. В TR загружается селектор нового TSS. Из нового TSS в рег-р LDTR заносится значение селектора таблици LDT. Восстанавливаются значения р-ров пр-ра из соответствующих полей нового TSS. Устанавливается бит Next Task. В поле селектора возврата заносится селектор сегм. TSS снимаемой задачи. Новое значение CS и IP продолжают новую задачу. Вызов возможен, если вызывающий код обладает не меньшим уровнем привилегий, чем вызываемая задача.

2.

Task Gate отлич-ся от шлюзов-ловушек и прерыв-ний тем, что в нем вместо селектора кода указ-ся селектор TSS. Обработка такого пре-ния осущ-ся под контролем отдельной внешней задачи. Т.к. меняется LDT, то меняется и вирт. адресн. пространство (ВАП). Уровень привилегий новой задачи задается полем RPL в сегментном р-ре CS, к-рый загружается из нового TSS.

Соседние файлы в папке Материал