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

22. Система привилегий и организация защиты микропроцессора Intel 80486.

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

Четырехуровневая иерарх. система привилегий предназ. для управления исп. привилег. инструкций и доступа к дескрипторам. Уровни привилегий нумер. от 0 до 3, нулевой уровень соотв. макс. возможностям доступа и отводится для ядра ОС. Уровень 3 имеет самые ограни­ченные права и предоставл. прикладным задачам. Сист. защиты изображают в виде концентрич. колец, соответств. уровням привилегий, а сами уровни привилегий иногда назыв. кольцами защиты. Серви­сы, предоставл. задачам, могут наход. в разных коль­цах защиты.

Передача управления между задачами контрол.вен­тилями (gate), проверяющими правила использования уровней привилегий. Через вентили задачи могут получить доступ только к разрешенным им сервисам других сегментов.

Уровни привилегий относятся к дескрипторам, селекторам и задачам. Кроме того, в регистре флагов имеется

поле привиле­гий ввода-вывода,

с помощью которого обеспечивается управле­ние доступом к инструкциям ввода-вывода и управление флагом прерываний.

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

Использование привилегий в защищенном режиме

Уровни привилегий обеспеч. защиту задач, изолир. друг от друга локал. таблицами дескрипторов. Про­граммы ОС, обработчики прерываний и др.сист. обеспеч. могут вкл. в вирт. ад­ресное пространство каждой задачи и защищаться системой привилегий. Каждая часть системы работает на своем уровне привилегий.

Привилегии задач действ. на вып. инструкций и использование дескрипторов. Текущий уро­вень привилегии задачи CPL опред. двумя младшими битами регистра CS. CPL задачи может изменяться только при передаче управления к новому сегменту через дескриптор вентиля. Задача начинает выполняться с уров­ня CPL, указанного селектором кодового сегмента внутри TSS, когда задача инициируется посредством операции переключения задач. Задача, выполняемая на нулевом уровне привилегий, име­ет доступ ко всем сегментам, описанным в GDT, и является са­мой привилегированной. Задача, выполняемая на уровне 3, имеет наиболее ограниченные права доступа. Текущий уровень приви­легии может изменяться только при передаче управления через вентили.

Привилегии дескриптора задаются полем DPL байта управления доступом. DPL определяет наи­меньший уровень привилегий, с которым возможен доступ к данному дескриптору. Самый защищенный дескриптор имеет DPL = 0, к нему имеют доступ только задачи с CPL = 0. Самый беззащитный дескриптор имеет DPL = 3, его могут использовать задачи с CPL = 0, 1, 2, 3. Это правило применимо ко всем деск­рипторам, за исключением дескриптора LDT.

Привилегии селектора задаются полем RPL (Requested Privilege Level) - двумя младшими битами селек­тора. С помощью RPL можно урезать эффективный уровень привилегий EPL (Effective Privilege Level), который определяет­ся как максимальное арифметическое из значений CPL и RPL. Селектор с RPL = 0 не вводит дополнительных ограничений.

Контроль доступа к сегментам данных производится при исполнении команд, загружающих селекторы в сегментные ре­гистры SS, DS, ES, FS и GS. Команды загрузки DS, ES, FS и GS должны ссылаться на дескрипторы сегментов данных или сег­ментов кодов, допускающих чтение. Для получения доступа эф­фективный уровень привилегий EPL должен быть равным или меньше (арифметически) уровня привилегий DPL дескриптора. Если эффективный уровень привилегий не разрешает доступ, ссылка идет на некорректный тип дескриптора (на дескриптор вентиля или на дескриптор только исполняемого кодового сег­мента) или на несуществующий дескриптор вырабатываются со­ответствующие исключения.

Команды загрузки SS должны ссылаться на дескриптор сегмента данных, допускающий запись. При этом DPL и RPL должны быть равны CPL.

Контроль типов привилегий при передаче управления про­изводится при загрузке селектора в регистр CS. Тип дескрипто­ра, на который ссылается данный селектор, должен соответство­вать выполняемой инструкции. Нарушение типа (напр., ссылка инструкции JMP на вентиль вызова) порождает искл.. При передаче упр. Дейст. следующие правила привилегий, нарушение которых также приводит к искл.:

- команды JMP или CALL могут ссылаться на сегмент с DPL, равным CPL;

- прерывания внутри задачи или вызовы, которые могут изменить ур.привилегий, могут перед. управл. ко­довому сегменту с ур. привилегий, равным или больше ур. прив. CPL, только через вентили с тем же или меньшим ур. привилегий, чем CPL;

- инструкции возврата, кот. не перекл. задачи, могут передать управление только кодовому сегменту с таким же или меньшим уровнем привилегий;

- переключение задач может выполняться с помощью вы­зова, перехода или прерывания, которые ссылаются на вентиль задачи или сегмент состояния задачи (TSS) с тем же или мень­шим уровнем привилегий.

Смена уровня привилегий, происход. при передаче управл., автомат. вызывает переопределение стека. Нач. знач. указателя стека SS:SP для ур. привиле­гий 0, 1, 2 содержится в TSS. При передаче управления по ко­мандам JMP или CALL в SS:SP загружается новое значение ука­зателя стека, а стар. знач. помещ. в новый стек. При возврате на прежний уровень привилегий его стек восстанавли­вается. Для вызовов подпро­грамм с передачей параметров через стек и сменой уровня при­вилегий из пред. стека в новый копируется фикс. число слов, заданное в вентиле. Команда межсегментного возврата RET с выравниванием указателя стека при возврате корректно восст. значение пред. указателя.

Привилегии и битовая карта разрешения ввода-вывода контролируют возможность выполнения операций ввода-вывода и управления флагом прерываний IF. Ур. привилегий ввода-вывода опред. полем IOPL (Input/Output Privilege Level) регистра флагов. Значение IOPL можно изм. только при CPL = 0.

При CPL < IOPL на операции ввода-вывода и управл. флагом IF никаких огранич. не накладывается.