- •Поколения эвм
- •6 Поколение
- •Системы счисления
- •Коды чисел
- •Выполнение операций в двоичной системе счисления
- •Работа с таблицей ascii кодов.
- •Логические операции
- •Т риггеры
- •Архитектуры процессоров (систематика Флинна)
- •Регистры процессора
- •Типы адресации переменных
- •Характеристики процессора
- •Прерывания
- •Классификация команд процессором
- •Архитектура процессора по набору команд
- •Классификация команд по адресности
- •Задание на логику. Классификация дисплеев
- •Маски мониторов
Прерывания
Прерывание - это прекращение выполнения текущей команды или текущей последовательности команд для обработки некоторого события специальной программой - обработчиком прерывания, с последующим возвратом к выполнению прерванной программы. Событие может быть вызвано особой ситуацией, сложившейся при выполнении программы, или сигналом от внешнего устройства. Прерывание используется для быстрой реакции процессора на особые ситуации, возникающие при выполнении программы и взаимодействии с внешними устройствами.
Механизм прерывания обеспечивается соответствующими аппаратно-программными средствами компьютера.
Любая особая ситуация, вызывающая прерывание, сопровождается сигналом, называемым запросом прерывания (ЗП). Запросы прерываний от внешних устройств поступают в процессор по специальным линиям, а запросы, возникающие в процессе выполнения программы, поступают непосредственно изнутри микропроцессора. Механизмы обработки прерываний обоих типов схожи.
После появления сигнала запроса прерывания ЭВМ переходит к выполнению обработчика прерывания, который выполняет те действия, которые необходимы в связи с возникшей особой ситуацией. По окончании работы обработчика управление передается прерванной программе.
Время реакции - это время между появлением сигнала запроса прерывания и началом выполнения прерывающей программы (обработчика прерывания) в том случае, если данное прерывание разрешено к обслуживанию. Время реакции зависит от момента, когда процессор определяет факт наличия запроса прерывания. Опрос запросов прерываний может проводиться либо по окончании выполнения очередного этапа команды (например, считывание команды, считывание первого операнда и т.д.), либо после завершения каждой команды программы.
Глубина прерывания - максимальное число программ, которые могут прерывать друг друга. Глубина прерывания обычно совпадает с числом уровней приоритетов, распознаваемых системой прерываний. Работа системы прерываний при различной глубине прерываний (n) представлена на рис. 3.33 (предполагается, что с увеличением номера запроса прерывания увеличивается его приоритет).
Прерывания делятся на аппаратные и программные, кроме того в некоторых классификациях принято отдельно выделять события, сигнализирующие об ошибках в той или иной инструкции - исключения.
Аппаратные прерывания используются для организации взаимодействия с внешними устройствами, их запросы поступают на специальные входы микропроцессора. Данные прерывания бывают маскируемые, которые могут быть замаскированы программными средствами компьютера (флаг IF регистра EFlags процессора) и немаскируемые, запрос от которых таким образом замаскирован быть не может.
Программные прерывания могут быть вызваны следующими ситуациями:
1. особый случай, возникший при выполнении команды и препятствующий нормальному продолжению программы (переполнение, нарушение защиты памяти, отсутствие нужной страницы в ОП и т.п.);
2. наличие в программе специальной команды прерывания INT n, используемой программистом при обращениях к специальным функциям операционной системы.
Исключения процессора, в зависимости от способа генерации и возможности рестарта вызвавшей исключение команды, подразделяются на нарушения, ловушки и аварии.
Нарушение (отказ) - это исключение, которое обнаруживается либо перед исполнением, либо во время исполнения команды. При этом процессор переходит в состояние, позволяющее осуществить рестарт команды. В качестве адреса возврата в стек обработчика заносится адрес вызвавшей исключение команды.
Ловушка возникает на границе команд сразу же после команды, вызвавшей это исключение. Значения регистров CS и EIP, заносимые в стек обработчика, указывают на очередную команду.
В некоторых случаях для ловушек и нарушений невозможен рестарт команды, например, если один из операндов расположен ниже текущего указателя стека, т.е. по адресу памяти меньшему, чем вершина стека.
Авария не позволяет осуществить рестарт программы, и зачастую нельзя точно локализовать команду, вызвавшую это исключение. Исключения типа «авария» генерируются при обнаружении серьезных ошибок, таких как неразрешенные или несовместимые значения в системных таблицах или аппаратные сбои.Типичным случаем аварии является исключение «двойная ошибка». Двойная ошибка происходит, когда процессор пытается обработать исключение, а его обработчик генерирует еще одно исключение.
Кроме приведенного выше деления прерываний на аппаратные, программные и исключения, они еще могут быть классифицированы по причинам их возникновения.
Аппаратное прерывание (hardwareinterrupt) — прерывание, вызванное ошибкой в работе технических средств;
Прерывание от внешнего устройства (peripheralinterrupt) — прерывание, вызываемое сигналом внешнего устройства: терминала, устройства ввода-вывода, накопителя;
Прерывание от пользователя (userbreak) — прерывание работы программы, вызванное нажатием пользователем соответствующей управляющей клавиши;
Внутреннее прерывание (internalinterrupt) — прерывание, обусловленное внутренними по отношению к текущему процессу сигналами. К таким прерываниям относятся программные прерывания, прерывания по обращению к супервизору, прерывания ввода/вывода, а также прерывания, связанные с машинными сбоями;
Прерывание ввода/вывода (input/outputinterrupt) — прерывание, которое происходит по завершении каждой операции ввода/вывода и обрабатывается супервизором ввода/вывода;
Программное прерывание (softwareinterrupt) — прерывание, вызванное машинной командой преимущественно в связи с ошибками в программе (например, деление на нуль, переполнение, нарушение защиты);
Логическое прерывание (logicalinterrupt) — прерывание в работе процессора, возникающее при различных нестандартных ситуациях в работе основного микропроцессора (например, переполнение регистров);
Системное прерывание (ловушка, trap) — реакция системы на особую (нештатную) ситуацию;
Страничное прерывание (pageinterrupt) — программное прерывание, возникающее при обращении к странице виртуальной памяти, отсутствующей в оперативной (реальной) памяти.
