Типы прерываний программы и организация их обработки. Часть 2.

Ряд внутренних прерываний, характерных для старших моделей семейства, имеет тот же вектор прерывания (4), который соответствует единственному прерыванию (по тайм-ауту) младших моделей. В старших моделях для идентификации этих внутренних прерываний используется регистр ошибок процессора, доступный программе (в частности, программе-обработчику прерывания по вектору 4). Формат регистра приведен на рис. 1.4.

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

Формат регистра ошибок процессора

Взаимный приоритет внутренних прерываний следующий:

  • ошибка паритета памяти,
  • ошибка диспетчера памяти,
  • переполнение стека,
  • нарушение питания,
  • ошибка ППТ.

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

полное маскирование — с помощью запрета прерываний в регистре состояния устройства или установкой приоритета процессора (разряды 5... 7 РСП) выше приоритета внешнего устройства (в микроЭВМ, кроме «Электроника 60-1», маска I/O);

частичное прерывание — отсрочкой полной обработки прерывания за счет перевода обработчика в режим программного прерывания (только в «Электронике 79»).

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

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

Таким образом, введен новый тип прерываний — программные прерывания и новый тип приоритета — приоритет программы-обработчика, реализуемый аппаратно. Это оригинальное средство регулирования обработки прерываний более гибкое, чем полное маскирование: оно запрещает или разрешает обработку прерывания по частям. Следует заметить, что приоритет программы-обработчика никак не связан с диспетчерским приоритетом, который в мультипрограммных операционных системах присваивается процессам, или с приоритетом FORK-программ (гл. 3). Диспетчерский приоритет учитывается регулировщиком процессов при принятии решения, какому из процессов передать управление; передача управления осуществляется затем на программном уровне.

Передача управления программе-обработчику происходит на аппаратном уровне, лишь только аппаратный приоритет процессора уменьшается в достаточной степени. Приоритет программы обработчика, подобно приоритету процессора, изменяется в диапазоне 0... 7. Соответствие между приоритетом процессора и уровнями маскируемых данных приоритетом объектов (приоритетом программы-обработчика и уровнем линии прерывания Канала) показано на рис. 1.5. В микроЭВМ, кроме «Электроника 60-1», есть только одна линия прерывания и один разряд в РСП, маскирующий эту линию; в мини-ЭВМ четыре линии прерывания от устройства, в ЭВМ «Электроника 79» — семь уровней (приоритетов) программных прерываний.

Структура приоритетов прерываний