7.4.1.2.3. Архитектура режима
реальных адресов и защищенного режима
Микропроцессор
80386 имеет два режима работы: режим реальных адресов, называемый реальным режимом, и защищенный режим. Реальный режим используется преимущественно с целью установки
процессора для работы в защищенном режиме,
а также с целью выполнения программ МП предыдущих поколений. Защищенный режим обеспечивает возможности разбиения на страницы,
управления памятью и механизма
привилегий МП 80386. Эти конструктивные свойства дают совместимость на уровне объектного кода с более
ранними МП фирмы Intel. Реальный режим, защищенный режим, среда
виртуального МП 8086 кратко рассматриваются в этом разделе, а подробнее в гл. 8.
Реальный режим. При подаче сигнала сброса или при включении
питания устанавливается
реальный режим, причем МП 80386 работает как очень быстрый МП 8086, но, по желанию
программиста, с 32-разрядным расширением. В реальном режиме МП 80386 имеет такую же базовую архитектуру,
что и МП 8086, но обеспечивает доступ к
32-разрядным регистрам. Механизм адресации, размеры памяти и обработка прерываний (с их
последовательными ограничениями) МП 8086 полностью совпадают с аналогичными функциями МП 80386 в реальном режиме.
Для формирования логического адреса в реальном режиме
используются два компонента.
Для определения линейного базового адреса сегмента используется 16-разрядный
селектор. Полученный базовый адрес используется как 32-разрядный физический
адрес. Различие двух режимов состоит в способе вычисления базового адреса.
Перемещаемость программ или данных заключается в том, что
они могут быть размещены в разные моменты времени в различных областях памяти,
не требуя от системы
или прикладных программ своей модификации. Перемещение сегмента производится в МП 80386 точно
так же, как и в МП 8086. В селекторе сегмента 16-разрядное значение сдвигается влево на четыре
бита (т.е. умножается на 16) для формирования 20-разрядного базового адреса
сегмента. Исполнительный адрес расширяется четырьмя старшими нулевыми битами
для получения 20-разрядного значения и добавляется к базовому адресу. Таким
образом формируется линейный адрес, который совпадает с физическим адресом,
поскольку в реальном режиме разбиение на страницы не используется.
Прерывания и исключения нарушают нормальный порядок
работы системы или
программы. В реальном режиме они обрабатываются точно так же, как и в МП 8086. Список прерываний,
воспринимаемых МП 80386, приведен в гл. 3. В реальном режиме таблица дескрипторов прерываний (IDT) МП
80386 представляет собой
таблицу векторов реальных прерываний МП 8086 и занимает пространство от нулевого реального адреса до
реального адреса 1024 (4 байт на вектор прерывания с 256 возможными входами).
Единственным способом выхода из реального режима является
явное переключение
в защищенный режим. В защищенный режим МП 80386 входит при установке бита включения защиты
(РЕ) в нулевом регистре управления (CRO) с помощью команды пересылки (MOV
to CRO). Для совместимости с МП 80286
с целью установки
бита РЕ может быть также использована команда загрузки слова состояния машины LMSW.
Процессор повторно входит в реальный режим в том случае,
если программа командой пересылки
сбрасывает бит РЕ регистра CRO.
Защищенный режим. Полные возможности МП 80386 раскрываются в защищенном режиме. Программы могут
исполнять переключение между процессами с целью входа в задачи, предназначенные для режима
виртуального МП 8086. Каждая такая задача проявляет себя в семантике МП 8086 (т. е. в
отношениях между символами и приписываемыми им значениями независимо от
интерпретирующего их оборудования). Это позволяет выполнять на МП 80386 программное обеспечение для МП
8086 - прикладную
программу или целую операционную систему. В то же время задачи для виртуального МП 8086
изолированы и защищены как друг от друга, так и от главной операционной системы МП 80386.
Подобно реальному режиму, в защищенном режиме
используется 16-разрядный селектор для указания в определенной операционной системной таблице
индекса, который содержит 32-разрядный базовый адрес сегмента. Физический адрес
формируется путем
добавления базового адреса, полученного из этой таблицы, к относительному адресу.
Программы, написанные для МП 80286, выполняются на МП 80386 без модификации. Этот
МП поддерживает также дескрипторы, используемые в МП 80286, поскольку
зарезервированное фирмой Intel младшее слово дескриптора равно нулю.