Cтраница 3
Последние два байта CSW предназначены для запоминания значения, до которого продвинулся счетчик в команде канала, выполнявшейся последней. Если CSW запоминается в конце операции, то поле счетчика обычно равно нулю. В противном случае, если выполнение программы канала было по каким-либо причинам прекращено, можно по адресу памяти и начальному значению счетчика в первом CCW и конечному значению счетчика в CSW определить адрес байта, передававшегося последним. [31]
Подпрограммы второй группы связывают конкретную программу с ФСУВВ, когда возникает необходимость обмена данными между оперативной памятью и внешними носителями. ФСУВВ в конечном счете используется всеми программами, нуждающимися в пересылке данных за пределы или из-за пределов оперативной памяти. Ее функция - следить за выполнением программы канала, которую формирует либо программист, либо ЛСУВВ. [32]
Программно управляемое прерывание позволяет программе следить за выполнением программ канала. Прерывание этого типа вызывается признаком ПУП, указанным в КСК. Этот признак может быть задан в любом КСК программы канала. Ни сам признак ПУП, ни связанное с ним прерывание на выполнение программы канала не влияют. [33]
Программа имеет возможность начать выполнение цепочки операций ввода-вывода по одной команде НАЧАТЬ ВВОД-ВЫВОД или НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ. Если соответствующие флажки в текущей команде задают цепочку команд и никаких необычных условий в данной операции не было обнаружено, получение сигнала конец работы устройства заставляет канал выбрать новую команду и начать новую операцию в устройстве. Выполнение команды цепочки начинается с помощью той же последовательности сигналов через интерфейс, что и для первой команды канала, указанной командой НАЧАТЬ ВВОД-ВЫВОД или НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ. Сигналы окончания отдельной операции цепочки недоступны программе, если начинается выполнение следующей команды цепочки; канал продолжает выполнение программы канала. [34]
В тех операциях ввода - вывода, которые мы здесь перечислили, программист не пишет CCW, поскольку они выдаются программами IOCS ( Input-Output Control System) - системы управления вводом - выводом. Эти программы занимаются блокированием и деблокированием записей, обработкой ошибочных ситуаций и вообще дают возможность программисту целиком сосредоточить внимание на логических функциях своей программы, а не вдаваться в детали ввода - вывода. Эти программы составляют логический уровень IOCS. Существует и другой уровень программ IOCS, который называется физическим уровнем IOCS. На физическом уровне IOCS программист сам пишет программу канала, и когда потребуется осуществить операцию ввода - вывода, в программе пишется макрокоманда, вызывающая выполнение программы канала. Программы физического уровня IOCS устанавливают CAW, если понадобится, имеют дело с ошибками и необычными ситуациями и даже обрабатывают метки. Вся ответственность за детальность описания операций ввода - вывода ложится на плечи программиста. Физический уровень IOCS вообще большую часть работы возлагает на программиста. С другой стороны, именно физический уровень дает возможность делать такие вещи, которые невозможно осуществить на логическом. Сюда относится такая обработка наборов данных, для которой нет стандартной программы на логическом уровне, здесь можно предусмотреть обработку некоторых типов ошибок и разных необычных ситуаций. В IBM-360 используется как физический, так и логический уровень IOCS. [35]
Как микропрограммные компоненты, так и средства IBM / / 370 - ХА не позволяют существенно снизить системные затраты на обслуживание системы ввода-вывода виртуальной машины, а эти затраты являются наиболее существенными. При обоих подходах предполагается исключительно программное решение многих задач, возникающих при обслуживании этой системы. Главная трудность здесь заключается в том, что для ввода-вывода используются абсолютные адреса, в то время как основная память виртуальной машины представляет собой виртуальную память базовой машины. Поэтому перед выполнением операции ввода-вывода необходимо преобразование программы канала, а именно замена в ней всех виртуальных адресов на абсолютные. Управляющая программа в этот момент работает в неестественном для себя режиме, поскольку требуется компиляция новой программы канала по программе, указанной в команде SIO, в то время как в остальных случаях управляющая программа работает как интерпретатор. Это приводит в свою очередь к необходимости динамического контроля за выполнением программы канала. Итогом являются значительные затраты времени процессора. [36]
Поле В в слове управления каналом позволяет ЦП ограничить использование шины каналом во время выполнения программы канала. Сопроцессор ВМ89, работающей в МПС с местной конфигурацией, имеет более высокий приоритет по управлению шиной, чем ЦП, поскольку ему всегда предоставляется шина в ответ на запрос. В ряде случаев это может привести к ситуации, когда СП практически полностью монополизирует шину. Чтобы этого не произошло, ЦП может установить поле В в слове управления каналом в 1, задавая тем самым предел загрузки шины сопроцессором. Когда разряд В1, перед выполнением каждой команды канал загружает младший байт счетчика ВС значением 127 и выполняет потактное уменьшение этого значения до нуля. Таким образом, канал пропускает 128 тактов перед выполнением очередной команды программы и тем самым уменьшает использование шины на 3 - 25 % от общей длительности работы с шиной. Установка предела загрузки шины позволяет ЦП замедлить выполнения программ каналов и высвободить циклы работы с шиной. Использование указанной возможности особенно удобно в МПС с местной конфигурацией, однако применимо и в МПС с удаленной конфигурацией, когда программы каналов расположены в системной памяти. Предел загрузки шины не влияет на операции каналов с высоким приоритетом, такие, как непрерывные программы каналов и пересылки с ПДП. [37]