Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по ВС.doc
Скачиваний:
227
Добавлен:
22.03.2016
Размер:
1.1 Mб
Скачать

5.3 Система прерываний и приостановок, состояние процессора

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

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

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

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

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

Характеристики системы прерываний

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

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

В персональных компьютерах, как правило, процесс прерывания происходит по окончании текущей команды, как показано на рисунке 5.6, и время реакции определяется длительностью этой команды. На рисунке з – время запоминания параметров текущей команды, пп – время выполнения прерывающей программы и в – длительность восстановления параметров текущей программы.

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

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

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

текущая

команда

запрос прерывания

ожз пп в

Рисунок 5.6 Временная диаграмма процесса прерываний

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

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

Приоритет прерываний

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

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

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

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