 |
ся для обработки особых ситуаций, входят без изменения запре-
та. В процессе входа в обработчик - зада^у 80386 загружает
регистр флагов значением, запомненным в его TSS - задаче,
разрешая обработчику работать с разрешенными или запрещенными
прерываниями.
Таблица 3-2.
Характеристики шлюзов прерываний и особых ситуаций
ЙННННННННННННЛННННННННННННННННННННННЛННННННННННННННННННННННН»
є Тип шлюза є Обработчик є Прерывания є
МННННННННННННОННННННННННННННННННННННОННННННННННННННННННННННН№
є прерывание є процедура є запрещены є
є шлюз є процедура є разрешены є
є задача є задача є (флаг IF обработчика) є
ИННННННННННННКННННННННННННННННННННННКНННННННННННННННННННННННј
Обработчики - процедуры являются подходящим средством
для программ, которые должны работать в контексте (т.е. ис-
пользовать адресное пространство и значения регистров) зада-
чи, которая прервана или вызвала особую ситуацию. При
16-мгц-синхросигнале процедура входа в обработчик занимает
3,6 мкс. Подобно любой другой процедура прерывания или особой
ситуации имеет доступ ко всем ресурсам работающей задачи: к
ее данным и коду, ее регистрам и стеку. Так и должно быть для
большинства особых ситуаций, поскольку в задаче возникла осо-
бая ситуация и может потребоваться доступ к данным задачи,
чтобы эту особую ситуацию разрешить. Например, обработчику
страни^ных ошибок необходимы страничные таблицы работающей
задачи для того, чтобы найти дисковый адрес отсутствующей
страницы. В идеале прерывания должны обрабатываться задачами,
а не процедурами, так как прерывание , вообще говоря, не от-
носится к задаче, которую оно прерывает. Более того, обработ-
чик прерываний должен иметь свои собственные ресурсы (напри-
мер, свой собственный стек), а не внедрять в стек какой-то
задачи, которая работала в момент появления прерывания. С
другой стороны переключение задач требует значительно больше-
го времени чем вызов процедуры (17 мкс вместо 3,6), поскольку
процессор запоминает и восстанавливает регистры при переклю-
чении задач. Системы, которые чрезвычайно чувствительны ко
времени реакции на прерывания, могут обрабатывать прерывания
при помощи процедур.
3.6.2. Особые случаи и регистры отладки
Подобно большинству процесоров 80386 имеет команду конт-
рольной точки, которую можно использовать для вызова отладчи-
ка. Однако отладочная аппаратура 80386 имеет форму регистров
отладки, показанных на рис.3-11. Регистры отладки поддержива-
ют контрольные точки данных являются важным нововведением,
которое может сократить время отладки на многие часы, т.К.
Например, позволяет установить, когда происходит непредусмот-
ренная запись в структуры данных.
Регистры отладки также сокращают искажения в программах,
необходимые для записи команды точек останова в код, особенно
для программ, которые защищены от записи или разделены други-
ми задачами.
Отладчик 80386 реализует в виде обработчика особой ситу-
ации с номером 1. Процессор может непосредственно вызвать от-
ладчик после исполнения любой команды (путем установки флага
TF - флага ловушки пошагового исполнения), после переключения
определенной задачи или после появления условия точки оста-
нов, определенного осним из регистров отладки. Анализируя ре-
гистр статуса отладки, обработчик отладочной особой ситуации
может определить, какая из причин его вызвала.
Будучи вызван при переключении задач, отладчик может пе-
резагрузить регистры регистры отладки значениями, подходящими
для новой задачи.
80386 Может ожидать появления одновременно до четырех
условий контрольных точек, вызывая обработчик отладочной осо-
бой ситуации про появлении одного из условий. Каждое условие
контрольной точки определяется содержимым регистра отлдаки,
эти регистры могут быть загружены и запомнены при помощи при-
вилегированных форматов команды MOVE. Условие контрольной
точки содержит 32-битный линейный адрес, 2-битное поле длины
и поле доступа, последние два элемента указываются в полях
регистра управления отладкой DR7. Адрес условия контрольной
то^кой и длина формируют адресный диапазон, который контроли-
руется процессором при каждой ссылке на память. Поле доступа
определяет тип доступа, для которого процесор может вызвать
особую ситуацию 1. Могут быть указаны 3 типа доступа:
1) исполнение команды по указанному адресу;
2) запись данных в диапазон адресов;
3) чтение или запись данных в диапазоне адресов.
3.7. Ввод/вывод
Системы, базирующиеся на 80386, могут распределять уст-
ройства ввода/вывода в пространство памяти процессора или в
отдельное пространство ввода/вывода. Устройствам ввода/выво-
да, распределенным в пространство памяти, можно обращаться
для чтения или записи, используя такие команды обращения, как
MOVE, OR или аналогичные. Устройства, распределенные в памя-
ти, могут быть защищены с помощью стандартного механизма за-
щиты сегмента и страницы процессора 808386.
В дополнении к своему адресному пространству процессор
80386 имеет 64к-байтное адресное пространство ввода/вывода.
Устройства, распределенные в это пространство, управляются
командами ввода, вывода, ввода строки и вывода строки. Первые
две команды передаеют байт, слово, двойное слово в или из
цредит аедит EAX-регистра. Последние две команды передают
строку байтов, слов или двойных слов в память или из памяти.
Команды ввода-вывода 80386 чувствительны к уровню приви-
легий. В регистре флагов имеется поле, называемое уровнем
привилегий ввода/вывода (IOPL), которое определяет минималь-
ный уровень привилегий , на котором работающая задача может
исполнять команды ввода/вывода (IOPL загружается из TSS, так
что задачи могут иметь различные IOPL). Например, если IOPL
задачи равен 1, то задача не может выдавать команды ввода-вы-
вода, исключая случаи, когда она работает на уровне привиле-
гии 0 или 1. Механизм IOPL поддерживает операционные системы
с многоуровневой защитой, в которых, например, критичные и
стабильные процедуры ядра работают на уровне привилегии 0, а
более изменчивые процедуры ввода-вывода работают на уровне
привилегии 1, в этом случае операционная система должна толь-
ко установить IOPL равным 1, когда она создает задачу, пос-
кольку IOPL характерен для задачи, те задачи, которым можно
доверять, могут исполнять команды ввода-вывода на прикладном
уровне, позволяя тем самым непосредственно работать со специ-
альными устройствами, для которых не имеется драйвера опира-
ционной системы.
Для того, чтобы реализовать прямой доступ к памяти (DMA)
от устройств ввода/вывода, операционная система 80386 переда-
ет физический адрес контроллеру DMA и должна гарантировать,
что сегменты и/или страницы, ко которым происходит обращение
при DMA-передачах , не будут преремещаться во время этой опе-
раци. Один из способов пометить страницы "фиксированными на
время ввода-вывода" - это использование одного из трех битов
пользователя в страничной таблице.
4. Архитектурная совместимость
80386 совместим на уровне объектного кода с 80286 и с
8086. Хотя можно просто использовать 80386 как быстрый 80286
или как очень быстрый 8086, их совместимость обладает доста-
точно большой гибкостью. Процессор 80386 может выполнять
программы 80286 и 80386 параллельно, и, используя виртуальный
режим 86 процессора 80386, существующие программы 8086 могут
также исполняться параллельно. Таким образом при помощи 80386
становится возможным строить системы, которые могут парал-
лельно исполнять программы, написанные для различных поколе-
ний семейства микропроцессоров.
4.1. Совместимость с 80286
Архитектура 80286 является точным подмножеством архитек-
туры 80386. Так как процесор 80386 распознает все команды
80286, регистры, дескрипторы и т.Д., То операционная система
80286 и прикладные программы могут быть перенесены на анало-
гичное оборудование, построенное на основе 80386 без измене-
ния хотя бы одного бита.
Прямой перенос, упомянутый выше, является наиболее быст-
рым путем для того, чтобы запустить существующие программы,
написанные для 80286 на системе, построенной на 80386. С дру-
гой стороны операционные системы для 80386 могут разрабаты-
ваться так, чтобы они поддерживали существующие прикладные
программы для 80286, и, позволяя в то же время, новым прик-
ладным программам полностью использовать свойства архитектуры
80386 (например, 32-битные параметры и длинные сегменты). В
таких гибких разработках новые прикладные программы вызывают
операционную систему непосредственно, передавая 32-битные па-
раметры. Возовы старых прикладных программ, которые организо-
ваныв 16-битном формате 80286, перехватываются и преоразуются
в 32-битный формат, а затем передаются в операционную систе-
му.
4.2. Режимы реального и виртуального 8086
Процессор 80386 может выполнить объектные программы
80386 водном из 2 режимов: реальном режиме или виртуальном
режиме 86. 80386 Входит в реальный режим при сбросе. В реаль-
ном режиме процессор обеспечивает быстрое исполнение без за-
щиты так, как на 8086. Многие операционные системы будут пе-
реключаться из реального режима в режим защиты после инициа-
лизации, но также возможно работать все время в реальном ре-
жиме 8086. Принципиальное различие между реальным режимом
80386 и действительным режимом 8086 заключается в скорости:
программы 8086, которые критичны по скорости исполнения (нап-
ример, использующие рассчитанные временыые циклы), могут пот-
ребовать небольших изменений для того, чтобы они работали
правильно в значительно более быстром реальном режиме 80386.
Но основное множество программ 8086 будет работать без ка-
ких-либо трудностей, т.к. они работают в реальном режиме
80286.
Виртуальный режим 86 устанавливает исполнительную среду
8086 внутри защищенной многозадачной среды 80386. В то время,
как реальный режим управляет всем, что делает процессор, вир-
туальный режим 86 может применяться в избранных задачах
80386. Когда процессор работает в виртуальном режиме 86, он
ведет себя, как в 8086, но поле переключения к нормальной за-
даче, процессор работает как 80386 (который, на самом деле,
может интерпретировать программы как для 80286, так и 80386).
Таким образом виртуальный режим 86 позволяет операционной
системе поддерживать исполнение программ 8086, 80286 и 80386
одновременно.
В разделе 3 было описано, как сегмент состояния задачи
отражает состояние своего виртуального процессора. Флаг VM86
в регистре флагов, который загружается из TSS, определяет ра-
ботающий виртуальный процессор задачи как 8086 или 80386.
|