Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
11_Прерывания__и_причины_их...doc
Скачиваний:
4
Добавлен:
21.09.2019
Размер:
112.64 Кб
Скачать

Прерывания и причины их возникновения. Обработка прерываний

  1. Понятие прерывания

Обслуживание процесса может быть прервано на какое-то время для достижения определенной цели. Например, временное прекращение выполнения задания в связи с истечением кванта времени или с ожиданием процесса необходимого ему ресурса для осуществления операции ввода-вывода и др. Сколько бы примеров мы не привели, всех их будет объединять одно – возможность приостанавливать и возобновлять процессы дает возможность эффективно регулировать нагрузку машины. Какова роль в этом собственно операционной системы и какие действия она предпринимает при возникновении прерывания выполняющегося процесса? Эти вопросы раскрывает концепция обработки прерываний, основные положения которой изложены ниже.

Для чего нужны прерывания?

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

Таким образом, прерывание (iterrupt)– это событие, при котором меняется нормальная последовательность команд, выполняемых процессором.

Какие примеры прерываний можно было бы привести? Например, прерывание возникает, когда Вы нажимаете клавишу на клавиатуре. Другое прерывание вырабатывает таймер, встроенный в IBM/PC. Таймер прерывает работу микропроцессора 8088 восемнадцать раз в секунду. Операционная система ведет отсчет времени дня просто подсчитывая эти прерывания таймера; время дня можно вычислить по количеству прерываний таймера после последней полуночи. Еще один вид прерываний формирует контроллер гибких дисков, сообщая процессору, что очередная дисковая операция наконец завершилась. Поскольку эти операции значительно медленнее чем работа самого микропроцессора, выгода состоит в том, что процессор может не ждать завершения дисковой операции и продолжать вычисления до тех пор, пока контроллер выработает прерывание, указывающее что операция завершена.

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

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

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

Чтобы привести небольшой пример того, к чему может привести запрет прерываний, рассмотрим две программы, названные BEEP и WARBLE. Обе программы: BEEP и WARSLE, генерируют звуки с помощью динамика IBM/PC Каждая из программ генерирует чистый непрерывный звук в одной тональности, но программа WARBLE не запрещает прерывания. Поэтому она прерывается таймером восемнадцать раз в секунду и хотя прерывания обслуживаются очень быстро, звук получается вибрирующим. Программа BEEP запрещает прерывания и дает непрерывный звук. Запустите обе программы и Вы почувствуете результат запрета прерываний.