Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 / Lectures / ГосЭк2.doc
Скачиваний:
37
Добавлен:
28.05.2015
Размер:
790.53 Кб
Скачать

4. Привилегии в пэвм (по архиву сайта: файл prvlg.Doc)

Защищенный режим является основным для ПЭВМ и используется для реализации многопрограммной (многозадачной) работы ПЭВМ. Основным ресурсом, защищаемом в этом режиме является память отдельных программ.

В защищенном режиме программа оперирует с адресами, относящимися к некоторому абстрактному адресному пространству, называемому виртуальным. Расположение адресов такого пространства в памяти ПЭВМ может изменяться в процессе работы программы. Размер виртуального адресного пространства программы в архитектуре IA-32 может достигать 64 Тбайт. (Это обеспечивается разбиением памяти на сегменты, размер которых может достигать 4 Гб, а самих сегментов может быть до 16K.)

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

Переключить процессор в защищенный режим можно установкой в “1” младшего бита управляющего регистра CR0. Переключиться в реальный режим можно сбросом этого бита в нуль или общим сбросом процессора сигналом RESET.

Защита программ в защищенном режиме основывается системе привилегий, выделении привилегированных команд и сегментации памяти. Она реализуется следующими механизмами:

  • возможностью выполнения привилегированных команд при определенных уровнях привилегий CPL (current privilege) и IOPL (input-output privilege – 13 и 14 разряды регистра флагов)

  • ограничение использования сегментов: только занесенных в LDT и GDT, типа доступа – чтение / запись.

  • проверка привилегий при доступе к сегментам.

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

Атрибуты привилегий, присваиваются задачам, дескрипторам сегментов и селекторам сегментов.

Привилегии задач определяют порядок выполнения команд и использование дескрипторов.

Уровень привилегии задачи (CPL) определяется состоянием двух младших разрядов регистра CS. Уровень привилегии может измениться только при передаче управления новому сегменту (команд).

Начальная привилегия задачи при передаче ей управления определяется селектором кодового сегмента в TSS (сегменте состояния задачи).

Задача с нулевым уровнем привилегии имеет доступ ко всем сегмента GDT и обеспечивает выполнение всех команд.

Привилегии дескриптора задаются разрядами DPL байта управления доступом, определяющими низший уровень привилегий задачи, при котором возможен доступ к сегменту. При DPL = 0 доступ к сегменту допускается только для задач с CPL = 0. При DPL = 3 к сегменту имеют доступ все задачи (если это сегмент, дескриптор которого размещен в GDT).

Привилегии селектора задаются полем RPL (requested privilege – запрашиваемая привилегия), расположенным в двух младших разрядах селектора. RPL используется как дополнительный ограничитель права доступа, поскольку при доступе к сегменту проверяется эффективная привилегия EPL = max(CLP,RPL), т.е. берется низший из двух уровней. Очевидно, что RPL = 0 не накладывает дополнительных ограничений на CPL.

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

При доступе к подчиненному сегменту кода, доступному только для чтения – это правило может быть нарушено (т.е. подчиненный кодовый сегмент может иметь более высокую привилегию).

При передаче управления проверяется селектор, загружаемый в CS. Тип нового дескриптора должен соответствовать команде перехода:

JMP или CALL могут вызывать подчиненный сегмент с DPL  CPL, либо неподчиненный сегмент с DPL = CPL;

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

возврат и переключение задач может передать управление только сегменту кода с более низкой или равной привилегией

При вводе-выводе проверяется возможность выполнения команд ввода/вывода и управление флагом прерываний IF. Эти действия разрешаются при CPL  IOPL (более высокой привилегии CPL).

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

Изменить значение привилегии IOPL можно только при CPL = 0.

Состояние программы (задачи) отображается управляющими регистрами (CR0 – CR4), регистром флагов и сегментом состояния задачи TSS, как показано на рис. 5.

Рис. 5. Отображение состояния программы (задачи) в управляющих регистрах

CR0 содержит информацию о состоянии процессора, а также биты управления кэшем и страничным механизмом (расширяющие прежний регистр слова состояния процессора MSW: разрешение защиты - PE, мониторинг сопроцессора - MP, эмуляция сопроцессора - EM, переключение задач – TS, запрет сквозной записи кэша – NW, включение страничной адресации - PG и др.); CR1 – не используется, CR2 – указывает на адрес последнего страничного сбоя, CR3 – содержит базовый адрес таблицы каталога страниц и два бита для управления кэшированием, CR4 – указывает архитектурные расширения процессора (показаны не все возможные флаги расширения).

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

Соседние файлы в папке Lectures