Cтраница 3
Сколько времени уходит на определение причины прерывания. [31]
Для системы с программным распознаванием причин прерывания учет приоритета в обслуживании различных запросов обеспечивается соответствующим построением прерывающей программы: анализ запросов прерывания начинается с тех, которым приписан более высокий приоритет. Изменение приоритета запросов в процессе работы системы осуществляется обычными программными методами. [32]
Блок управляющей программы, анализирующий причину прерывания и организующий обращение к соответствующему блоку реакции на данное прерывание, располагается, начиная с фиксированной ячейки, на которую передается управление. Можно сказать, что операционная система начинается с этой фиксированной ячейки. [33]
Более подробная информация, определяющая причину прерывания и служащая для восстановления состояния процессора, может содержаться в областях регистрации и сохранения. [34]
Значение кода прерывания помогает определить причину прерывания. При прерываниях ввода-вывода биты 16 - 20 заполняются нулями, биты 21 - 23 определяют номер канала, а биты 24 - 31 -номер устройства в этом канале. [35]
При прямом аппаратном распознавании каждой причине прерывания соответствует своя подпрограмма прерывания, переход к которой производится полностью аппаратно. Такое решение увеличивает аппаратные средства системы, занимает много места в оперативной памяти, но зато является быстрым и удобным для программиста. [36]
С замаскированным запросом в зависимости от причины прерывания поступают двояким образом: или он игнорируется, или запоминается с тем, чтобы осуществить затребованные действия, когда запрет будет снят. Например, если прерывание вызвано окончанием операции в периферийном устройстве, то его следует, как правило, запомнить, так как иначе ЭВМ останется неосведомленной о том, что периферийное устройство освободилось. Прерывание, вызванное переполнением разрядной сетки при выполнении арифметической операции, следует в случае его маскирования игнорировать, так как запоминание этого запроса может привести к искажению результата этой программы. [37]
![]() |
Вектор состояния процессора в малых ЭВМ ( СМ-1420, СМ-1300 и др. [38] |
С замаскированным запросом в зависимости от причины прерывания поступают двояким образом: или он игнорируется, или запоминается, с тем чтобы осуществить затребованные действия, когда запрет будет снят. Прерывание, вызванное переполнением разрядной сетки при арифметической операции, следует при его маскировании игнорировать, так как запоминание этого запроса может привести к тому, что он окажет действие на часть программы или другую программу, к которым это переполнение не относится. [39]
![]() |
Вектор состояния процессора в малых ЭВМ ( СМ-4 240. [40] |
С замаскированным запросом в зависимости от причины прерывания поступают двояким образом: или он игнорируется, или запоминается, с тем чтобы осуществить затребованные действия, когда запрет будет снят. Например, если прерывание вызвано окончанием операции в периферийном устройстве, то его следует, как правило, запомнить, так как иначе ЭВМ останется неосведомленной о том, что периферийное устройство освободилось. Прерывание, вызванное переполнением разрядной сетки при арифметической операции, следует при его маскировании игнорировать, так как запоминание этого запроса может привести к тому, что он окажет действие на часть программы или другую программу, к которым это переполнение не относится. [41]
![]() |
Структура области сохранения. [42] |
После заполнения области сохранения СУПЕРВИЗОР уточняет причину прерывания и в соответствии с найденной причиной подключает одну или несколько программ обработки прерываний этого типа. [43]
В этом случае интерпретатор сообщает пользователю причину прерывания и номер строки программы, которая вызвала прекращение работы ЭВМ. [44]
Код прерывания определяет, что является причиной прерывания: ввод-вывод, ошибка в программе, обращение к Супервизору, внешний сигнал, сигнал от схем контроля машины. Код прерывания от схем контроля машины равен нулю. [45]