Cтраница 1
Программа обслуживания прерываний всегда начинается в ячейке 00018 и может иметь самый различный характер в зависимости от набора внешних устройств, входящих втистему, и принципов построения общей программы. Для этого требуется минимум три команды: запись HP в некоторой буферной ячейке, циклический сдвиг1, обычно влево для того, чтобы сбдержимое ДР ( ДРС) попало в HP ( CAl), и запись ( в другую буферную ячейку) этого содержимого. Таким образом, необходимый минимум информации о прерванной задаче оказывается обеспеченным - в ячейке 00008 имеется адрес продолжения задачи, в буферных ячейках запасены состояния двух других основных регистров машины в момент прерывания. [1]
Программа обслуживания прерываний, написанная пользователем, может применяться и в присутствии монитора, но тогда необходимо сохранять ячейки 10 и 12, а перед выходом восстанавливать их, чтобы не потерять путь в мо-ниторную программу обработки. [2]
Программы обслуживания прерываний по команде ЕМТ могут употребляться только в программах, работающих без операционной системы, потому что в программном обеспечении фирмы DEC эта команда существенно используется. Вместо нее пользователь может писать команду TRAP, которая отличается от команды ЕМТ только адресом вектора прерывания. Код операции равен 104400, причем снова младший байт может быть использован для передачи информации программе обработки. [3]
По завершении программы обслуживания прерывания управление программой передается обратно исполнительной программе, которая инициирует возвращение к прерванной программе. Как и в случае реакции на прерывание, это возвращение может осуществляться сочетанием программных и автоматических аппаратных действий. Однако следует отметить некоторые отличия. [4]
Предположим, что программа обслуживания прерываний сетевого таймера обрабатывается более 1 / 50 сив ней приоритет процессора не повышается. [5]
Применяется для того, чтобы программы обслуживания прерываний могли динамически изменять структуру системных приоритетов в процессе работы. Например, при выполнении какой-либо части подпрограммы обслуживания необходимо запретить запросы более низких уровней, а при выполнении другой части - разрешить их. Трудность реализации таких действий состоит в том, что пока выполняется подпрограмма и соответствующий разряд в регистре РОП не сброшен, контроллер не реагирует на запросы с более низким приоритетом. Для разрешения прерываний со всех уровней ( в том числе и с более низких) устанавливается режим спецмаскирования ( затенения), при котором запрещается только прерывание на данном уровне. Этот режим задается и отменяется командой OCW3 при SSM1, SM1 и SSM1, SM0 соответственно. [6]
Система прерывания процессора допускает переход на программы обслуживания прерываний от ПУ только после каждого выполнения очередной команды. [7]
Однобайтовая команда IRET ставится в конце каждой программы обслуживания прерывания и обеспечивает возврат из прерывания. [8]
Как только точная причина прерывания определена, управление передается программе обслуживания прерывания, связанной с той функцией, которая должна быть выполнена. Следует заметить, что во время этого и предыдущего шагов прерывания более высокого уровня не запрещаются и выполнение программы может быть забронировано. [9]
В соответствии с новыми значениями РСН и PSH производится запуск программы обслуживания прерывания. [10]
Действие это совершается совместно с маскированием прерывания на шаге 2 и передачей управления программе обслуживания прерываний. В системе, имеющей иерархию приоритетных уровней, ветвление ведет к передаче управления по адресу, связанному с действующим в данный момент уровнем прерывания. Во многих случаях адрес прерывания хранится в ячейке, которой передается управление. В результате прерывание ведет к выполнению команды перехода и запоминания состояния счетчика команд. [11]
Адрес возврата обычно хранится в некоторой фиксированной ячейке памяти или в ячейке, связанной с программой обслуживания прерывания. Новое содержимое счетчика команд может быть получено из фиксированной ячейки памяти. Если это единственные функции, выполняемые аппаратными средствами, программа прерывания должна запоминать всю информацию, которая требуется для возвращения управления прерванной программе. [12]
Основными программами, на которые передает управление программа часов, являются программа завершения обработки сообщений, программа обслуживания прерываний, программа обработки ошибок, программа обработки и программа возврата. Из программы обработки прерываний управление может быть передано на программу установки интервального таймера, которая обращается затем к программе опроса, и на обработку всех других прерываний. Несмотря на то что каждая из этих программ обозначена одним блоком, на деле за каждым из таких блоков скрывается целый ряд подблоков, таких, как, например, подблоки программы обработки, где возможны обращения для выполнения любой функции из числа тех, что указаны на блок-схеме программы. [13]
Получение разрешения от арбитра на передачу информации по ОШ может вызвать прерывание и переход процессора к программе обслуживания прерывания, вызванного данным устройством. [14]
Протокол режима прерывания показан на рис. 2.11. Каждое устройство, способное вызвать прерывание, называемое далее АУ, имеет право вызвать программу обслуживания прерывания, задаваемую обычно вектором. Протокол предусматривает выполнение следующих действий. [15]