<< Вернуться у выбору материала

Лекция № 10
Защищенный режим работы микропроцессора

Введите ваш запрос для начала поиска.

Вопросы

  1. Основные характеристики реального режима.
  2. Ключевые моменты защищенного режима.
  3. Системные регистры микропроцессора

Впервые защищенный режим появился в микропроцессоре i80286 фирмы Intel. Именно этот режим позволяет полностью использовать все возможности, предоставляемые микропроцессором.

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

Мы подробно рассмотрим архитектуру микропроцессора в защищенном режиме и основные правила программирования этого режима.

Вспомним основные характеристики реального режима.

Любой современный микропроцессор, находясь в реальном режиме, очень мало отличается от старого доброго i8086. Это лишь его более быстрый аналог с увеличенным (до 32 бит) размером всех регистров, кроме сегментных. Чтобы получить доступ ко всем остальным архитектурным и функциональным новшествам микропроцессора, необходимо перейти в защищенный режим.

В реальном режиме работы микропроцессора

Формирование физического адреса происходит по правилам реального режима:

для определения физического адреса команды содержимое сегментного регистра CS умножается на 16 за счет добавления справа (к младшим битам) четырех нулей, после чего к полученному значению прибавляется содержимое указателя команд (регистр IP). Получается двадцатибитовое значение (20-разрядная шина адреса).

Теперь рассмотрим ключевые моменты защищенного режима.

В защищенном режиме изменились принцы работы микропроцессора с памятью.

Память по-прежнему является сегментированной, но изменяются функции и номенклатура программно-аппаратных компонентов, участвующих в сегментации.

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

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

Любой сегмент памяти в защищенном режиме описывается дескриптором сегмента.

Дескриптор сегмента имеет размер 8 байт и содержит следующие атрибуты:

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

Все дескрипторы собираются вместе в одну из 3 дескрипторных таблиц. В какую именно таблицу должен быть помещен дескриптор, определяется его назначением. Адрес, по которому размещаются эти дескрипторные таблицы, может быть любым; он хранится в специально предназначенном для этого адреса системном регистре.

Формирование физического адреса происходит по правилам защищенного режима, поэтому программы, созданные для реального режима функционировать в защищенном не могут.

Адреса задаются 32-битовыми значениями. Возможна страничная трансляция адресов.

Системные регистры микропроцессора

Эти регистры обеспечивают работу защищенного режима. Их также можно рассматривать как часть архитектуры микропроцессора, которая намеренно оставлена видимой для того, чтобы квалифицированный системный программист мог выполнить самые низкоуровневые операции.

Системные регистры можно разделить на три группы:

Большинство из системных регистров программно доступны.

Регистры управления

В группу регистров управления входят 4 регистра: сгО, сг1, сг2, сгЗ.

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

Регистры управления доступны только программам с уровнем привилегий 0.

Хотя микропроцессор имеет четыре регистра управления, доступными являются только три из них; исключается сг1, функции которого пока не определены (он зарезервирован для будущего использования).

Регистр сг0 содержит системные флаги, управляющие режимами работы микропроцессора и отражающие его состояние глобально, независимо от конкретных выполняющихся задач.

Регистр сг0 используется при страничной модели организации памяти.

Назначение системных флагов:

Регистр сг2 используется при страничной организации оперативной памяти для регистрации ситуации, когда текущая команда обратилась по адресу, содержащемуся в странице памяти, отсутствующей в данный момент времени в памяти.

В такой ситуации в микропроцессоре возникает исключительная ситуация 14, и линейный 32-битный адрес команды, вызвавшей это исключение, записывается в регистр сг2. Имея эту информацию, обработчик исключения 14 определяет нужную страницу, осуществляет ее подкачку в память и возобновляет нормальную работу программы.

Регистр сгЗ также используется при страничной организации памяти. Это так называемый регистр каталога страниц первого уровня. Он содержит 20-битный физический базовый адрес каталога страниц текущей задачи.

Этот каталог содержит 1024 32-битных дескриптора, каждый из которых содержит адрес таблицы страниц второго уровня. В свою очередь, каждая из таблиц страниц второго уровня содержит 1024 32-битных дескриптора, адресующих страничные кадры в памяти. Размер страничного кадра — 4 Кбайт.

Регистры системных адресов (регистры управления памятью)

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

При работе в защищенном режиме микропроцессора адресное пространство делится:

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

Регистры отладки

Эти регистры предназначены для аппаратной отладки. Средства аппаратной отладки впервые появились в микропроцессоре i486. Аппаратно микропроцессор содержит 8 регистров отладки, но реально из них используются только 6.

Регистры dr0, dr1, dr2, dr3 имеют разрядность 32 бит и предназначены для задания линейных адресов четырех точек прерывания. Используемый при этом механизм следующий: любой формируемый текущей программой адрес сравнивается с адресами в регистрах dr0.. .dr3, и при совпадении генерируется исключение отладки 1.

Регистр dr6 называется регистром состояния отладки. Биты этого регистра устанавливаются в соответствии с причинами, которые вызвали возникновение последнего исключения 1. Перечислим эти биты и их назначение:

b0 — если этот бит=1, то последнее исключение (прерывание) возникло в результате достижения контрольной точки, определенной в регистре dr0;

b1 — аналогично b0, но для контрольной точки в регистре dr1;

b2 — аналогично b0, но для контрольной точки в регистре dr2;

b3 — аналогично b0, но для контрольной точки в регистре dr3;

bd (бит 13) служит для защиты регистров отладки;

bs (бит 14) = 1, если исключение 1 было вызвано состоянием флага tf = 1 в регистре eflags;

bt (бит 15) = 1, если исключение 1 было вызвано переключением на задачу с установленным битом ловушки в TSS t = 1.

Все остальные биты в этом регистре заполняются нулями. Обработчик исключения 1 по содержимому dr6 должен определить причину, по которой произошло исключение, и выполнить необходимые действия.

Регистр dr7 называется регистром управления отладкой. В нем для каждого из четырех регистров контрольных точек отладки имеются поля, с помощью которых можно уточнить следующие условия, при которых следует сгенерировать прерывание:

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

Рейтинг@Mail.ru