Назад

Лекция №10

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

 

Вопросы

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

2.     Ключевые моменты защищенного режима.

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

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

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

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

 

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

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

 

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

 

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

 

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

 

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

·       объем адресуемой памяти - 1 Мб (=2**20, у них 20-разрядная шина адреса)

·       поддерживается выполнение всего одной программы Þ нет потребности в организации защиты программ от взаимного вли­яния

·       поддерживается сегментированная модель памяти

·       сегмент имеет длину не более 64 Кбайт

·       адрес сегмента располагается в одном из сегментных регистров

·       отсутствуют аппа­ратные средства контроля доступа к сегменту Þ любая программа может обратиться к любому адресу в памяти.

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

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

 

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

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

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

 

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

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

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

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

·       расположение сегмента в памяти;

·       размер сегмента;

·       уровень привилегий — определяет права данного сегмента относительно других сегментов;

·       тип доступа — определяет назначение сегмента;

·       и другие.

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

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

 

!

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

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

 

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

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

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

·       четыре регистра управления;

·       четыре регистра системных адресов;

·       восемь регистров отладки.

!

 

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

 

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

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

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

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

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

 

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

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

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

·       ре (Protect Enable), бит 0 — разрешение защищенного режима работы.

·       Со­стояние этого флага показывает, в каком из двух режимов — реальном (ре=0) или защищенном (ре=1) - работает микропроцессор в данный момент времени.

·       mp (Math Present), бит 1 — наличие сопроцессора. Всегда 1.

·       ts (Task Switched), бит 3 — переключение задач. Процессор автоматически устанавливает этот бит при переключении на выполнение другой задачи;

·       am (Alignment Mask), бит 18 — маска выравнивания. Этот бит разрешает (am =1) или запрещает (am = 0) контроль выравнивания;

·       cd (Cache Disable), бит 30 — запрещение кэш-памяти. С помощью этого бита можно запретить (cd = 1) или разрешить (cd = 0) использование внутренней кэш-памяти (кэш-памяти первого уровня);

·       pg (PaGing), бит 31 — разрешение (pg = 1) или запрещение (pg = 0) стра­ничного преобразования.

 

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

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

 

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

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

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

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

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

·       на глобальное — общее для всех задач;

·       локальное — отдельное для каждой задачи.

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

·       регистр таблицы глобальных дескрипторов gdtr (Global Descriptor Table Register) имеет размер 48 бит и содержит

1)     базо­вый адрес глобальной дескрипторной таблицы GDT (32-битовый)

2)     и предел - размер (в байтах) таблицы GDT (16-бит);

·       регистр таблицы локальных дескрипторов ldtr (Local Descriptor Table Register) имеет размер 16 бит и содержит указатель на локальную таблицу сегментов текущей задачи.

·       регистр таблицы дескрипторов прерываний idtr (Interrupt Descriptor Table Register) имеет размер 48 бит и содержит

1) базо­вый адрес дескрипторной таблицы прерываний IDT (32-битовый)

2) предел - размер (в байтах) таблицы GDT (16-бит);

·       регистр задачи tr (Task Register) (16-битовый) указывает на дескриптор в таблице GDT, позволяющий получить доступ к дескриптору текущей задачи - этот дес­криптор описывает текущий сегмент состояния задачи (TSS Task Segment Status). Этот сегмент создается для каждой задачи в системе. Основное назначение сегментов TSS — сохранять текущее состояние задачи в момент переключения на другую задачу.

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

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

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

Регистр dг6 называется регистром состояния отладки. Биты этого регистра ус­танавливаются в соответствии с причинами, которые вызвали возникновение последнего исключения 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 должен определить причину, по которой про­изошло исключение, и выполнить необходимые действия.

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

·      место регистрации контрольной точки — только в текущей задаче или в любой задаче. Соответствующие биты занимают младшие восемь бит регис­тра dг7 (по два бита на каждую контрольную точку (фактически, точку прерывания), задаваемую регистрами dr0, dr1, dr2, dr3). Первый бит из каждой пары — это так называемое локальное разрешение, его установка говорит о том, что точка прерывания действует, если она находится в пределах адрес­ного пространства текущей задачи. Второй бит в каждой паре определяет глобальное разрешение, которое говорит о том, что данная контрольная точ­ка действует в пределах адресных пространств всех задач, находящихся в системе;

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

Назад