Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
59
Добавлен:
28.01.2014
Размер:
38.91 Кб
Скачать

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

Прерывание программы — это процесс переключения процессо­ра с одной программы на другую по внешнему сигналу с сохране­нием информации для последующего возобновления прерванной программы. При возникновении события, приводящего к преры­ванию, формируется сигнал, называемый запросом прерывания. Существует несколько источников запросов прерывания: это схе­мы контроля процессора, система питания, память, периферий­ные устройства и т.д. При наличии нескольких источников запро­сов прерывания устанавливается определенный порядок их об­служивания путем назначения приоритетов. Запросы прерываний направляются на различные разряды специального регистра (ре­гистра запросов прерываний), опрос которого производится в строго определенной последовательности при завершении очеред­ной команды. Номер разряда этого регистра не только определяет приоритет запроса прерываний, но и позволяет найти соответ­ствующую данному запросу программу обслуживания прерыва­ния. Поступивший запрос может прервать только менее приори­тетную программу.

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

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

Работой компьютера управляют команды программы, но кон­кретные выполняемые действия зависят от его текущего состо­яния. При работе машины в специальном регистре процессора по­стоянно находится слово состояния программы, которое и характе­ризует его состояние. Это слово содержит информацию, необхо­димую для возобновления программы при прерываниях: указания о разрешенных прерываниях, адрес текущей выполняемой коман­ды, различные признаки, ключи защиты и маски.

Характеристики системы прерываний. Систему прерываний ха­рактеризуют: общим числом входов от источников (числом зап­росов прерываний); числом уровней прерывания, по которым сгруппированы источники, вызывающие одну и ту же прерываю­щую программу; глубиной прерывания, т. е. максимальным чис­лом программ, которые могут быть последовательно прерваны друг другом; системой приоритетов и организацией переходов к следу­ющей программе.

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

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

Для уменьшения времени на переключение программ состоя­ние прерванной программы запоминают в специальной стековой памяти. Очевидно, что это время зависит от количества запоми­наемой информации.

Затраты времени на запоминание параметров текущей програм­мы (для освобождения ресурсов процессора) т3 и восстановление состояния процессора после выполнения прерывающей програм­мы тв определяют длительность переключения программ при пре­рывании. Эта длительность обычно составляет несколько машин­ных тактов.

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

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

Приоритет прерываний. Во многих компьютерах, особенно пред­назначенных для управления производственными процессами, число различных источников прерывания может достигать несколь­ких сотен, а их обслуживание вызывает сложности.

Для упрощения обработки прерываний эти источники подраз­деляют на отдельные уровни. Всем запросам, обрабатываемым одной программой обработки прерываний, присвоен один уро­вень. Запросы (сигналы) поступают на определенные разряды ре­гистра, устанавливая их в «1». Выходы нескольких разрядов этого регистра объединены схемой ИЛИ, сигнал с которой вызывает нужную программу обработки.

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

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

117

Соседние файлы в папке Ответы