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

27. Защищенный режим в пэвм

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

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

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

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

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

  • возможности использования программой только тех сегментов памяти, которые занесены в локальную и глобальную таблицы дескрипторов (LDTиGDT) при соответствующем типе (чтение / запись) доступа к этим сегментам;

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

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

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

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

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

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

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

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

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

Привилегии селекторазадаются полемRPL(requestedprivilege– запрашиваемая привилегия), расположенным в двух младших разрядах селектора.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.

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

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

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