Введение в архитектуру компьютеров

Основные определения и характеристики


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

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

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

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

*                   неясно, когда это событие произойдет;

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

Повторение периодической проверки выполнения требуемого условия называют "сканированием входов". Если сканирование производится, например, через 25 команд, то объем памяти для программы увеличивается на 4 %, а реакция на событие может произойти с большой задержкой (максимум через 25 команд).
При большом количестве проверяемых условий это сильно затрудняет работу программиста.

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

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



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

Рис 6.1. Временная диаграмма прерывания

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

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

Так как всевозможные запросы на прерывание вырабатываются независимо и асинхронно, то возможны такие ситуации:

*                   приход запросов последовательный;

*                   одновременный приход нескольких запросов;

*                   приход запроса во время выполнения прерывающей программы.

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

СПП, как правило, выполняют следующие основные функции:

                        ·    организуют вход в прерывающую программу;

                        ·    осуществляют приоритетный выбор между запросами прерывания;

                        ·    обеспечивают возврат к прерванной программе и программное изменение приоритетов программ.


Содержание раздела