
Ответы на билеты по гос экзаменам Факультет К кафедра 29 / Операционные системы / Операционные системы / Обработка прерываний(6)
.docОбработка прерываний
Группа
команд, выполняемых в ответ на запрос
прерывания, называется подпрограммой
обработки прерывания..
Прерывание - временное прекращение основного процесса вычислений для выполнения некоторых запланированных или незапланированных действий, вызываемых работой аппаратуры или программы.
Т.е. это процесс, временно переключающий микропроцессор на выполнение другой программы с последующим возвратом к прерванной программе.
Классификация прерываний
В зависимости от источника, прерывания делятся на
· аппаратные - возникают как реакция микропроцессора на физический сигнал от некоторого устройства (системные часы, клавиатура), по времени возникновения эти прерывания асинхронны, т.е. происходят в случайные моменты времени;
· программные - вызываются искусственно с помощью соответствующей команды из программы, предназначены для выполнения некоторых действий операционной системы, являются синхронными;
· исключения - являются реакцией микропроцессора на нестандартную ситуацию, возникшую внутри микропроцессора во время выполнения некоторой команды программы (деление на ноль).
Общая классификация прерываний внешние - вызываются внешними по отношению к микропроцессору событиями (по существу - это группа аппаратных прерываний) Вложенных прерываний нет. Возникают по сигналу какого-нибудь внешнего устройства. Внешние прерывания подразделяются на немаскируемые (инициируют источники, требующие безотлагательного вмешательства со стороны микропроцессора) и маскируемые генерируются контроллером прерываний по заявке определенных периферийных устройств. Именно маскируемые прерывания часто называют аппаратными прерываниями
внутренние - возникают внутри микропроцессора во время вычислительного процесса (по существу - это исключительные ситуации и программные прерывания).
Принципы обработки прерываний Механизм обработки внутренних и внешних прерываний в основном зависит от того, какая аппаратная поддержка обработки прерываний обеспечивается конкретной аппаратной платформой.Cуть принятого на сегодня механизма - каждому возможному прерыванию процессора соответствует некоторый фиксированный адрес физической оперативной памяти. В тот момент, когда процессору разрешается прерваться по причине наличия внутренней или внешней заявки на прерывание, происходит аппаратная передача управления на ячейку физической оперативной памяти с соответствующим адресом - обычно адрес этой ячейки называется "вектором прерывания". Дело операционной системы - разместить в соответствующих ячейках оперативной памяти программный код, обеспечивающий начальную обработку прерывания и инициирующий полную обработку.
ОС UNIX придерживается общего подхода. В векторе прерывания, соответствующем внешнему прерыванию, содержатся команды, устанавливающие уровень выполнения процессора и осуществляющие переход на программу полной обработки прерывания в соответствующем драйвере устройства.
Прерывания и особые ситуации
Система UNIX позволяет внешним устройства ввода-вывода и системные часы, асинхронно прерывать работу центрального процессора. По получении сигнала прерывания ядро операционной системы сохраняет свой текущий контекст (застывший образ выполняемого процесса), устанавливает причину прерывания и обрабатывает прерывание. После того, как прерывание будет обработано ядром, прерванный контекст восстановится и работа продолжится так, как будто ничего не случилось. Устройствам обычно приписываются приоритеты в соответствии с очередностью обработки прерываний. В процессе обработки прерываний ядро учитывает их приоритеты и блокирует обслуживание прерывания с низким приоритетом на время обработки прерывания с более высоким приоритетом.
Особые ситуации связаны с возникновением незапланированных событий, вызванных процессом, таких как недопустимая адресация, задание привилегированных команд, деление на ноль и т.д. Они отличаются от прерываний, которые вызываются событиями, внешними по отношению к процессу. Особые ситуации возникают прямо "посредине" выполнения команды, и система, обработав особую ситуацию, пытается перезапустить команду; считается, что прерывания возникают между выполнением двух команд, при этом система после обработки прерывания продолжает выполнение процесса уже начиная со следующей команды. Для обработки прерываний и особых ситуаций в системе UNIX используется один и тот же механизм.
Уровни прерывания процессора
Ядро иногда обязано
предупреждать возникновение прерываний
во время критических действий, могущих
в случае прерывания запортить информацию.
Например, во время обработки списка с
указателями возникновение прерывания
от диска для ядра нежелательно, т.к. при
обработке прерывания можно запортить
указатели. Обычно имеется ряд
привилегированных команд, устанавливающих
уровень прерывания процессора в слове
состояния процессора. Установка уровня
прерывания на определенное значение
отсекает прерывания этого и более низких
уровней, разрешая обработку только
прерываний с более высоким приоритетом.
На Рисунке показана последовательность
уровней прерывания. Если ядро игнорирует
прерывания от диска, в этом случае
игнорируются и все остальные прерывания,
кроме прерываний от часов и машинных
сбоев.
Рисунок 1.6. Стандартные уровни прерываний