Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Финогенов-основы_языка_ассемблера.doc
Скачиваний:
26
Добавлен:
17.09.2019
Размер:
3.35 Mб
Скачать

4.4. Основы защищенного режима

Микропроцессоры Pentium, так же, как и его предшественники (на­чиная с 80268), могут работать в двух режимах: реального адреса и вирту­ального защищенного адреса. Обычно эти режимы называют просто ре­альным и защищенным. В реальном режиме 32-разрядные микропроцессо­ры функционируют фактически так же, как МП 86 с повышенным быстродействием и расширенным набором команд. Многие весьма при­влекательные возможности микропроцессоров принципиально не реали­зуются в реальном режиме, который введен лишь для обеспечения совме­стимости с предыдущими моделями процессоров. Характерной особенно­стью реального режима является ограничение объема адресуемой оперативной памяти величиной 1 Мбайт.

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

176

Глава -t

  • увеличение адресуемого пространства до 4 Гбайт;

  • возможность работать в виртуальном адресном пространстве, превы­ шающем максимально возможный объем физической памяти и со­ ставляющем огромную величину 64 Тбайт;

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

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

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

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

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

Физический адрес = сегментный адрес * 16 4- смещение

И сегментный адрес, и смещение не могут быть больше FFFFh, отку­да следуют два важнейших ограничения реального режима: объем адрес­ного пространства состаатяет всего 1 Мбайт, а сегменты не могут иметь размер, превышающий 64 Кбайт.

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

Расширенные возможности современных микропроцессоров

177

В сегментные регистры в защищенном режиме записываются не сег­ментные адреса, а так называемые селекторы, биты 3...15 которых рас­сматриваются, как номера (индексы) ячеек специальной таблицы, со­держащей дескрипторы сегментов программы. Таблица дескрипторов обыч­но создается операционной системой защищенного режиме (например, системой Windows) и, как правило, недоступна программе. Каждый дес­криптор таблицы дескрипторов имеет размер 8 байт, и в нем хранятся все характеристики, необходимые процессору для обслуживания этого сег­мента. Среди этих характеристик необходимо выделить в первую очередь две: адрес сегмента и его длину (рис. 4.4).

Таблица дескрипторов сегментов

Первый пустой дескриптор

Адрес = О Длина = 1 Мбайт

Адрес = 1 Мбайт Длина = 100 Кбайт

.Адрес =8,5 Мбайт Длина = 256 байт

Рис. 4.4. Дескрипторы сегментов и их селекторы.

Под адрес сегмента в дескрипторе выделяется 32 бит, и, таким обра-ром, сегмент может начинаться в любой точке адресного пространства Зъемом 232 = 4 Гбайт. Это адресное пространство носит название линей-[ного. В простейшем случае, когда выключено страничное преобразование, котором речь будет идти позже, линейные адреса отвечают физическим. Таким образом, процессор может работать с оперативной памятью объе­мом до 4 Гбайт.

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

Линейный адрес = базовый адрес сегмента + смещение

В 32-разрядных процессорах смещение имеет размер 32 бит, поэтому максимальная длина сегмента составляет 2м = 4 Гбайт.

На рис. 4.4 приведен гипотетический пример программы, состоящей из трех сегментов, первый из которых имеет длину 1 Мбайт и расположен в начале адресного пространства, второй, размером 100 Кбайт, вплотную примыкает к первом)', а третий, имеющий размер всего 256 байт, распо­ложен в середине девятого по счету мегабайта.

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

178