Cтраница 4
Основные неприятности у процессора начинаются, когда канал выдает прерывание по поводу особых ситуаций, возникших в процессе выполнения программы обмена. В этом случае процессор должен проанализировать слово состояния канала и, если информации не хватает, запросить у канала байты уточненного состояния устройства. [46]
Некоторые из условий, определяемые как особые случаи при выполнении программы, могут распознаваться также при операциях ввода-вывода. При этом причина прерывания указывается в слове состояния канала. [47]
Инструкции ПРОВЕРИТЬ ВВОД-ВЫВОД и ПРОВЕРИТЬ КАНАЛ служат для выявления действительного состояния канала, подканала и ВУ. При выполнении этих инструкций в канале формируется слово состояния канала ( ССК) или двухразрядный код состояния. ССК записывается в оперативную память при выполнении инструкций НАЧАТЬ ВВОД-ВЫВОД и ОСТАНОВИТЬ ВВОД-ВЫВОД. Код состояния передается в центральный процессор при выполнении всех инструкций ввода-вывода. [48]
Во втором случае главным каналом сравниваются адреса устройств. При несовпадении адресов формируются код состояния и слово состояния канала; отсылкой ССК в оперативную память для этого случая заканчивается исполнение инструкции ввода-вывода. [49]
Байты 16 - 39 используются Супервизором, чтобы информировать проблемную программу, как закончилась операция ввода-вывода. Они включают содержимое различных регистров канала, слово состояния канала и флаги окончания операции ввода-вывода. [50]
Условия, характеризующие завершение операции ввода-вывода, могут быть учтены программой либо с помощью прерываний ввода-вывода, либо, если процессор замаскирован от прерываний ввода-вывода от данного канала, программным опросом устройства. В любом случае эти условия вызывают запись слова состояния канала CSW, которое содержит дополнительную информацию о выполняемой операции. При появлении условия конец работы канала канал определяет в программе последнюю использованную команду канала и обеспечивает остаточный счет байтов для этой команды, показывая тем самым, какая область памяти была использована. Как канал, так и устройство могут сигнализировать одновременно с сигналом конец работы канала о возникших в них необычных условиях. Условия конец работы устройства и конец работы контроллера могут сопровождаться условиями об ошибках устройства. [51]
Следует заметить, что ошибка в данных ( S4) не вызывает прекращения их передачи. Эта ошибка становится доступна программе только в слове состояния канала при обработке прерывания после завершения операции ввода-вывода. [52]
Если в слове состояния канала установлен флаг окончания перемещения данных, анализируются остальные флаги канала. В случае установления хотя бы одного флага в слове состояния канала осуществляется дальнейший тщательный анализ причины установления каждого флага. [53]
Если код условия равен единице, то либо это прерывание от пишущей машинки, либо нераспознанная ошибка. В Блоке управления данными запоминаются регистры ввода-вывода и анализируется слово состояния канала, чтобы проверить, не установлены ли флаги нераспознанных ошибок. Если флаги установлены, то вызываются Р2 программы обработки нераспознанных ошибок. [54]
Необходимо обратить особое внимание на то, что любая из перечисленных привилегированных команд должна выполняться при заблокированных прерываниях от схем ввода-вывода. В противном случае будет невозможно разобраться, к какому устройству относится слово состояния канала ( CSW), записанное в стандартную ячейку основной памяти, и есть шансы не попасть на команду анализа признака результата, записываемую обычно вслед за командой ввода-вывода. [55]