Скачиваний:
69
Добавлен:
10.05.2014
Размер:
37.38 Кб
Скачать

Обработка прерываний

Группа команд, выполняемых в ответ на запрос прерывания, называется подпрограммой обработки прерывания..

Прерывание - временное прекращение основного процесса вычислений для выполнения некоторых запланированных или незапланированных действий, вызываемых работой аппаратуры или программы.

Т.е. это процесс, временно переключающий микропроцессор на выполнение другой программы с последующим возвратом к прерванной программе.

Классификация прерываний

В зависимости от источника, прерывания делятся на

·      аппаратные - возникают как реакция микропроцессора на физический сигнал от некоторого устройства (системные часы, клавиатура), по времени возникновения эти прерывания асинхронны, т.е. происходят в случайные моменты времени;

·      программные - вызываются искусственно с помощью соответствующей команды из программы, предназначены для выполнения некоторых действий операционной системы, являются синхронными;

·      исключения - являются реакцией микропроцессора на нестандартную ситуацию, возникшую внутри микропроцессора во время выполнения некоторой команды программы (деление на ноль).

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

внутренние - возникают внутри микропроцессора во время вычислительного процесса (по существу - это исключительные ситуации и программные прерывания).

Принципы обработки прерываний Механизм обработки внутренних и внешних прерываний в основном зависит от того, какая аппаратная поддержка обработки прерываний обеспечивается конкретной аппаратной платформой.Cуть принятого на сегодня механизма - каждому возможному прерыванию процессора соответствует некоторый фиксированный адрес физической оперативной памяти. В тот момент, когда процессору разрешается прерваться по причине наличия внутренней или внешней заявки на прерывание, происходит аппаратная передача управления на ячейку физической оперативной памяти с соответствующим адресом - обычно адрес этой ячейки называется "вектором прерывания". Дело операционной системы - разместить в соответствующих ячейках оперативной памяти программный код, обеспечивающий начальную обработку прерывания и инициирующий полную обработку.

ОС UNIX придерживается общего подхода. В векторе прерывания, соответствующем внешнему прерыванию, содержатся команды, устанавливающие уровень выполнения процессора и осуществляющие переход на программу полной обработки прерывания в соответствующем драйвере устройства.

Прерывания и особые ситуации

Система UNIX позволяет внешним устройства ввода-вывода и системные часы, асинхронно прерывать работу центрального процессора. По получении сигнала прерывания ядро операционной системы сохраняет свой текущий контекст (застывший образ выполняемого процесса), устанавливает причину прерывания и обрабатывает прерывание. После того, как прерывание будет обработано ядром, прерванный контекст восстановится и работа продолжится так, как будто ничего не случилось. Устройствам обычно приписываются приоритеты в соответствии с очередностью обработки прерываний. В процессе обработки прерываний ядро учитывает их приоритеты и блокирует обслуживание прерывания с низким приоритетом на время обработки прерывания с более высоким приоритетом.

Особые ситуации связаны с возникновением незапланированных событий, вызванных процессом, таких как недопустимая адресация, задание привилегированных команд, деление на ноль и т.д. Они отличаются от прерываний, которые вызываются событиями, внешними по отношению к процессу. Особые ситуации возникают прямо "посредине" выполнения команды, и система, обработав особую ситуацию, пытается перезапустить команду; считается, что прерывания возникают между выполнением двух команд, при этом система после обработки прерывания продолжает выполнение процесса уже начиная со следующей команды. Для обработки прерываний и особых ситуаций в системе UNIX используется один и тот же механизм.

Уровни прерывания процессора

Ядро иногда обязано предупреждать возникновение прерываний во время критических действий, могущих в случае прерывания запортить информацию. Например, во время обработки списка с указателями возникновение прерывания от диска для ядра нежелательно, т.к. при обработке прерывания можно запортить указатели. Обычно имеется ряд привилегированных команд, устанавливающих уровень прерывания процессора в слове состояния процессора. Установка уровня прерывания на определенное значение отсекает прерывания этого и более низких уровней, разрешая обработку только прерываний с более высоким приоритетом. На Рисунке показана последовательность уровней прерывания. Если ядро игнорирует прерывания от диска, в этом случае игнорируются и все остальные прерывания, кроме прерываний от часов и машинных сбоев.

Рисунок 1.6. Стандартные уровни прерываний