logo
Методичка

4.1 Обзор режимов работы

Под IA-32 подразумевается семейство процессоров фирмы Intel, родоначальником которого является процессор Intel386. В это семейство входит и процессор Pentium 4. Несмотря на то, что с момента выпуска процессора Intel386 быстродействие процессоров и их внутренняя структура существенно изменились, для программиста эти отличия не имеют особого значения, поскольку все они скрыты "за ширмой" стандарта IA-32. Таким образом, с точки зрения программиста, архитектура процессоров IA-32 по существу не изменилась с момента выпуска процессора Intel386, если не считать введения набора высокопроизводительных команд для поддержки мультимедийных приложений.

Процессоры семейства IA-32 могут работать в одном из трех основных режимов:

Кроме того, существует еще один виртуальный режим работы (Virtual-8086 mode), или режим эмуляции процессора 8086, который является разновидностью защищенного режима.

В семействе процессоров IA-32 выбор метода обращения к памяти определяется режимом работы процессора.

Реальный режим адресации. В этом режиме полностью повторяется работа процессора Intel 8086 и добавляется несколько новых возможностей, например команды перехода в другие режимы работы. Реальный режим адресации использовался в операционных системах Windows 95/98 в случае, когда приложению MS DOS нужно было предоставить полный контроль над аппаратным обеспечением компьютера. Им часто пользовались при запуске старых компьютерных игр в системах Windows 95/98. При выполнении начальной загрузки по сигналу сброса (Reset) все процессоры фирмы Intel семейства IA-32 автоматически переходят в реальный режим адресации. После этого операционная система компьютера может переключить процессор в требуемый режим работы.

В реальном режиме процессор может обращаться только к первому мегабайту памяти, адреса которого находятся в диапазоне от 00000 до FFFFF в шестнадцатеричном выражении. При этом процессор работает в однозадачном режиме (т.е. в заданный момент времени он может выполнять только одну программу). Однако при этом он может в любой момент прервать ее выполнение и переключиться на процедуру обработки запроса (его называют прерыванием), поступившего от одного из периферийных устройств. Любой программе, которую выполняет в этот момент процессор, разрешен доступ без ограничения к любым областям памяти, находящимся в пределах первого мегабайта: к ОЗУ – по чтению и записи, а к ПЗУ, понятно, только по чтению. Реальный режим работы процессора используется в операционной системе MS DOS, а также в системах Windows 95 и 98 при загрузке в режиме эмуляции MS DOS.

Защищенный режим. Это основной режим работы процессоров IA-32, в котором для программиста доступны все команды, режимы адресации и возможности процессора. При этом каждой программе выделяется изолированная область памяти, состоящая из одного или нескольких сегментов. В процессе работы процессор отслеживает все обращения программы к памяти и пресекает все попытки обращения за пределы выделенных программе сегментов, либо нарушение прав доступа к сегменту, примером чего является попытка записи данных в сегмент кода, право доступа к которому определено как readonly. Именно это и определяет защищённость программ как друг от друга, так и защищённость данных и кода от самой программы (неправильных её действий).

В защищенном режиме процессор может одновременно выполнять несколько программ. При этом каждому процессу (т.е. выполняющейся программе) может быть назначено до 232 = 4 Гбайт оперативной памяти. Чтобы предотвратить взаимное влияние выполняющихся программ друг на друга им выделяются изолированные участки памяти (т.е. код и данные программ находятся во взаимно несмежных сегментах). В защищенном режиме работают такие операционные системы, как MS Windows и Linux.

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

Виртуальный режим. При работе ЦПУ в защищенном режиме он может непосредственно выполнять программы, написанные для реального режима адресации процессора i8086. Таким образом, становится возможным запуск программ, написанных для системы MS DOS в безопасном многозадачном окружении. Другими словами, даже если программа в процессе выполнения в результате ошибки или сбоя "зависнет", это никак не повлияет на другие выполняющиеся в данный момент программы. Именно поэтому данный режим работы часто называют режимом эмуляции виртуального процессора 8086, хотя на самом деле этот режим относится к защищенному режиму работы процессора.

В виртуальном режиме адресации для каждой задачи создается собственная виртуальная машина, которой выделяется изолированная область памяти размером 1 Мбайт, и полностью эмулируется работа процессора 80x86 в реальном режиме адресации. Например, в операционных системах Windows 2000 и ХР виртуальная машина процессора 8086 создается каждый раз при запуске пользователем окна командного интерпретатора (сеанса MS DOS). При этом одновременно можно запустить довольно много таких окон, причем выполняющиеся в них программы не будут влиять друг на друга. Однако не стоит обольщаться, часть программ, написанных для системы MS DOS и реального режима адресации, напрямую взаимодействуют с аппаратным обеспечением компьютера. Поэтому они не будут работать в среде ОС Windows 2000 и ХР.

Режим управления системой. Данный режим работы процессора часто обозначают аббревиатурой SSM (System Management mode). Он позволяет предоставить операционной системе компьютера механизм для выполнения таких функций, как перевод компьютера в режим энергосбережения и восстановления работоспособности системы после сбоя. Эти функции обычно используются производителями компьютера и материнских плат для установки нужных режимов работы их оборудования.

Наиболее полная информация о режимах работы процессора содержится в трехтомной фирменной документации, озаглавленной IA-32 Intel Architecture Software Developer's Manual. Её можно загрузить с Web-сервера фирмы Intel по адресу: http://developer.intel.com.