December 12 2017 08:10:26
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
маскируемые запросы прерываний
ФОРМАТЫ ПРЕДСТАВЛЕНИЯ ДАННЫХ И ВЫПОЛНЕНИЕ ОПЕРАЦИЙ

На вход INTR поступают маскируемые запросы прерываний, обслуживание которых может быть запрещено (замаскировано) путем установки значения признака IF = 1 в регистре состояний EFLAGS. Обычно такой запрос поступает от внешнего устройства через специальный контроллер прерываний, который собирает запросы от различных внешних устройств и передает их для обработки процессору, указав для них также номер n, определяющий вид прерывания (INTR п). На вход NMI поступает запрос на немаскируемое прерывание, процедура обслуживания которого имеет фиксированный номер n = 2 (табл. 2.60). Значение признака IF в регистре EFLAGS не влияет на обслуживание процессором немаскируемого запроса прерывания NMI. При работе процессора в мультипроцессорной системе, когда функционирует контроллер локальных прерываний APIC, запросы аппаратных прерываний (маскируемые и немаскируемые) поступают по специальной APIC-шине.

Программные прерывания реализуются при поступлении команд: INT n, INT3, INTO, BOUND. Эти команды вызывают переход к выполнению подпрограмм обслуживания, вектора которых выбираются согласно табл. 2.60.

Для исключений зарезервированы первые 32 вектора в таблице прерываний, из которых в процессорах семейства Р6 используются только 17 (см. табл. 2.60). Каждый тип исключения имеет мнемоническое обозначение. Исключения делятся на ошибки (faults), ловушки (traps) и отказы (aborts). Ошибки выявляются и обслуживаются до выполнения команды, которая является причиной их возникновения. Примером ошибки может служить ситуация, возникающая при обращении очередной команды к странице или сегменту, отсутствующим в адресуемой оперативной памяти (обращение к сегменту или странице, для которых значение бита присутствия Р = 0). При ошибке в качестве адреса возврата к прерванной программе сохраняется адрес команды, выполнение которой вызвало данное исключение. Ловушка - это исключение, которое выявляется после выполнения команды. Примером ловушки может служить команда INTO, которая реализует исключение с номером п = 4 в случае, если в регистре EFLAGS значение признака переполнения OF = 1. При обслуживании ловушки в качестве адреса возврата сохраняется адрес команды, следующей за командой, вызвавшей данное исключение. Ошибки и ловушки предусматривают продолжение нормального выполнения программы после завершения их обслуживания.

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

Если одновременно произошло несколько событий, требующих обслуживания с помощью механизма прерываний, то процессор обрабатывает такие события последовательно, в соответствии с их приоритетами, которые указаны в табл. 2.61 (1 - высший приоритет, 8 - низший). Отметим, что в этом приоритетном списке указан также ряд входных управляющих сигналов. При поступлении этих сигналов одновременно с другими событиями, вызывающими переход на обслуживание прерываний или исключений, процессор реагирует в соответствии с их приоритетами, приведенными в табл. 2.61.

Обработка прерываний в реальном режиме. Для перехода к обслуживанию поступившего запроса прерывания или исключения процессор обращается к таблице векторов прерываний, которая должна располагаться в начальной области памяти, начиная с адреса 0...0h. Элементами таблицы являются вектора прерываний - указатели входа в подпрограммы обслуживания различных типов прерываний. Вектор прерывания в реальном режиме содер­жит четыре байта, а размер всей таблицы составляет 1024 байт, если процессор обеспечи­вает обслуживание всех 256 возможных видов прерывания (табл. 2.60). Формат вектора пре­рываний для реального режима показан на рис. 2.57.

При возникновении прерывания процессор производит следующие действия:

•   заносит текущее значение регистров CS и IP в стек;

•  заносит текущее значение регистра FLAGS в стек;

•  устанавливает значение признака IF = 0 в регистре EFLAGS (запрещение прерываний);

•  устанавливает значения признаков TF = RC = АС = 0 в регистре EFLAGS;

•  загружает в регистры CS, IP новое содержимое, заданное в выбранном векторе таблицы прерываний.


31 16 15 0

Селектор (CS) Смещение (IP)

Рис. 2.57. Формат вектора прерываний в реальном режиме

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.06 секунд 2,295,758 уникальных посетителей