Понятие прерывания.
Прерывание – это важная процедура, которая позволяет изменить нормальную последовательность команд, выполняемых процессором.
Процессор должен реагировать на события, которые происходят вне его. Эту реакцию можно реализовать двумя способами:
- Процессор должен постоянно просматривать все уст-ва, которые могут потребовать его внимания. Такой способ неэффективен, т.к. большая часть времени процессора может уйти на сканирование.
- Использование прерываний. Сущность прерывания заключается в следующем:
Устройство, которое требует внимания процессора, сообщает об этом с помощью специального сигнала (запрос на прерывание). По этому сигналу управление CPU передается ОС. ОС запоминает состояние прерванного процесса и хранит эту информацию в спец. регистре микропроцессора. Такой регистр называется СТЕК. Затем ОС анализирует, от какого устройства произошло прерывание и затем передает управление программе, которая управляет устройством, выдавшим запрос на прерывание.
Такая программа называется «обработчик прерывания».
Прерывание может быть вызвано не только каким-нибудь устройством, но и выполняющимся процессом.
В начале прерывания использовались в основном для управления процессором устройствами ввода-вывода. Затем прерывания стали использовать для организации внутренней работы ЭВМ. В соответствии с этим существуют следующие типы прерываний:
1. Аппаратные прерывания – прерывания от устройств компьютера.
2. Программные прерывания – прерывания, которые вырабатывают процессы, находящиеся на стадии выполнения.
3.Логические прерывания – Эти прерывания вырабатывает сам процессор, когда встречается с каким-либо необходимым условием:
а) деление на 0
б) переполнение регистров микропроцессора
в) пошаговое выполнение программ
г) режим контрольных точек.
Каждое прерывание имеет два параметра:
- Номер прерывания
- Вектор прерывания.
Вектор прерывания – это адрес ячейки памяти, где хранится программа – обработчик прерывания.
Прерывания обозначаются - IRQ.
Cистема прерывания программ (СПП)
1. Понятие о состоянии программы. Вектор (слово) состояния
Вектор состояния, или слово состояния программы (ССП), в любой момент времени должен содержать информацию, достаточную для продолжения выполнения программы с точки, соответствующей моменту формирования данного вектора состояния. При этом предполагается, что остальная информация, характеризующая состояние программы, например, содержимое всех или части программно-адресуемых регистров, может при необходимости быть сохранена программным путем в оперативной памяти ЭВМ. ССП формируется в соответствующих регистрах центрального процессора (ЦП), изменяясь после выполнения каждой команды. Разные ЭВМ имеют разные наборы информационных элементов, образующих ССП. Например, в реальном режиме работы микропроцессора 80х86 ССП, сохраняемое в стеке, содержит следующие составляющие:
1. значение регистра сегмента команд CS (в ячейках памяти этого сегмента содержатся команды выполняемой программы);
2. значение регистра указателя команд IP;
3. значение регистра флагов FLAGS.
2. Принципы организации СПП
При функционировании ЭВМ в ней самой и связанной с ней внешней среде могут возникать события, требующие немедленной реакции на них со стороны ЭВМ. Эта реакция состоит в том, что ЭВМ прерывает обработку текущей программы, которая является прерываемой, и переходит к выполнению другой программы, называемой прерывающей и специально предназначенной для обработки данного события. Рассматриваемый процесс называется прерыванием программ. Моменты возникновения некоторой части событий, требующих прерывания программ, заранее неизвестны и поэтому не могут быть учтены при программировании.
Любое событие, требующее прерывания, сопровождается сигналом, оповещающим ЭВМ. Эти сигналы называются запросами прерывания и генерируются несколькими выполняющимися параллельно во времени процессами, например:
- процессом выполнения текущей программы в ЦП и внутренней памяти ЭВМ;
- процессом аппаратного контроля правильности работы ЭВМ, каналов и периферийных устройств (ПУ);
- процессом функционирования каналов и ПУ;
- процессом функционирования таймера;
- процессом функционирования ЭВМ, сопряженной с данной ЭВМ, и т.д.
Прерывания от устройства аппаратного контроля возникают при обнаружении этим устройством неисправности в ЭВМ, канале или ПУ. Прерывания ввода-вывода происходят при завершении работы канала или ПУ. Прерывания от таймера происходят при переполнении таймера. Возможность прерывания программ - важное свойство ЭВМ, позволяющее существенно повысить эффективность использования ее ресурсов, а также использовать ЭВМ для управления в системах реального времени. Для реализации прерывания в ЭВМ должны существовать соответствующие программные и аппаратные средства, называемые системой прерывания программ (СПП), или контроллером прерываний. Основные функции СПП состоят в запоминании ССП и переходе к прерывающей программе, при этом для запоминания ССП используется фиксированная зона оперативной памяти (например, в ЭВМ типа IBM/360 и IBM/370 и соответственно в ЕС ЭВМ) или же стековая память (например, в ЭВМ типа IBM PC с МП типа 80х86).
При наличии нескольких источников запросов прерывания должен быть установлен определенный порядок (дисциплина) в обслуживании поступающих запросов. Другими словами, должны быть установлены приоритетные соотношения, определяющие, какой из нескольких поступивших запросов должен быть обработан в первую очередь и имеет ли он право прервать текущую программу. Приоритетный выбор запроса входит в процедуру перехода к прерывающей программе.
Важную роль играет регистр масок прерываний, разряды которого могут программно и аппаратно устанавливаться в "1" или "0". Этим достигается программно-управляемый приоритет прерываний. Установленный в "1" триггер регистра масок запрещает соответствующее прерывание, а в положении "0" разрешает его. Некоторые причины прерывания в каких-то конкретных типах ЭВМ не могут быть программно замаскированы.
3. Векторное прерывание
В современных ЭВМ обычно реализуется так называемое векторное прерывание, при котором источник прерывания выставляет запрос прерывания и одновременно выставляет на шины интерфейса с центральным процессором код адреса своего вектора прерывания в памяти ЭВМ, т.е. для разных причин сразу же включаются аппаратно соответствующие им прерывающие программы, называемые обработчиками прерываний. В некоторых ЭВМ источник прерывания вместо кода адреса своего вектора выставляет номер своего прерывания, по которому СПП формирует адрес внутренней памяти с новым ССП.
4. Обработчик прерывания
Перечислим основные действия, который должен выполнить обработчик прерываний:
1. Сохранять при необходимости содержимое всех или части программно-доступных регистров (эту процедуру иногда называют переключением контекста);
2. Заблокировать все прерывания, возникновение которых в процессе выполнения обработчика может привести к конфликту (часто это выполняется аппаратурой ЭВМ без участия программы);
3. Разрешить все прерывания, которые имеют право возникать во время обработки данного прерывания;
4. Определить источник прерывания;
5. Выполнить запланированную обработку прерывания;
6. Восстановить ССП;
7. Разрешить все прерывания, которые были запрещены при обработке данного прерывания.
8. Возобновлять выполнение прерванного процесса; вместо этого обработчик прерывания может заканчивать свою работу переводом ЭВМ в состояние ожидания (например, при машинных сбоях) или передачей управления ОС.
5. Основные типы прерываний в ЭВМ типа IBM PC с МП 80х86
Прерывания в этой ЭВМ могут быть разбиты на следующие группы:
1. Немаскируемое аппаратное прерывание, возникающее в результате серьезного аппаратного сбоя в работе МП и внутренней памяти.
2. Внешние аппаратные прерывания, возникающие при возникновении сигналов прерывания от таймера, клавиатуры и различных ПУ;
3. Внутренние события, называемые исключениями и возникающие в том случае, если процессор не может выполнить очередную команду, например, вследствие равенства делителя нулю при выполнении операции деления, недопустимом коде команды и т.д.; к этой же группе относится прерывание, называемое исключением отладки и возникающее в том случае, если по заданию программиста в команде при трансляции был установлен признак так называемой ловушки;
4. Программные прерывания, возникающие при выполнении процессором команды int с числовым аргументом.