Выполнить программу канала - Execute Channel Program

В Мэйнфрейм IBM операционные системы, Выполнить программу канала (EXCP) это вызов супервизора для низкоуровневого доступа к устройству, где программист отвечает за обеспечение программа канала - список специфичных для устройства команд (CCW), которые должны выполняться каналами ввода / вывода, блоками управления и устройствами.[1][2] EXCP для OS / 360 и последователи[3][4] более подробно описано в Руководстве системного программиста ОС.[5]; EXCP для DOS / 360 и преемники[6] более конкретно описано в DOS Supervisor and I / O Macros.[7][8]Эта статья в основном отражает OS / 360 до [z / OS]; некоторые детали отличаются для TOS / 360 и DOS / 360 через z / VSE.


Указание наборов данных

Используя EXCP, можно работать с устаревшими устройствами и устаревшими наборами данных с относительно высокой производительностью. Устройства EXCP ОТКРЫВАЮТСЯ (то есть становятся доступными для приложения) путем указания Блок управления данными (DCB) для ОС и DTFPH для DOS.

Указание операций ввода-вывода

Для OS / 360 через z / OS в программе предусмотрен блок ввода / вывода. (IOB) в EXCP; если программа выполняет EXCP для нескольких IOB, система обрабатывает их в том порядке, в котором они были запрошены. Для DASD IOB включает адрес поиска, IOBSEEK, в формате MBBCCHHR, где M - размер, BB - интервал для ячейки данных, CCHH - цилиндр и головка, а R - номер записи.

Придатки

Исчерпывающий список выходы (называется в контексте EXCP, придатки) позволяет авторизованным программам отменять или дополнять многие из проверок безопасности системы и целостности данных. Большинство этих дополнений поддерживается для совместимости с более ранними экземплярами ОС, но функции некоторых из них были изменены или расширены для MVS. Придатки указываются в DCB как последние два символа имени модуля IGG019xx, где xx = от WA до Z9 включительно. Эти имена модулей зарезервированы для приложений, написанных при установке. Любое другое имя в форме IGG019xx зарезервировано для использования методами доступа IBM.[9] Приложения должны находиться в SYS1.SVCLIB (SYS1.LPALIB в SVS или более поздних экземплярах ОС).

Целостность набора данных

Обычно, когда программа открывает DCB для EXCP, OPEN создает Блок экстента данных (DEB), содержащий каждый степень для первого тома связанного набора данных; однако для параллельное крепление OPEN создает DEB, содержащий все экстенты для всех томов. Каждый DEB имеет прямую и обратную цепочки с DCB, и EXCP проверяет цепочку в качестве меры безопасности системы, поскольку DCB находится в незащищенном пользовательском хранилище, тогда как DEB находится в защищенном системном хранилище, Subpool 253; в OS / VS1 и OS / VS2 EXCP использует DEBCHK, чтобы гарантировать, что DEB был создан OPEN. Для DASD EXCP проверяет, что адрес поиска в IOB находится в пределах одного из экстентов, и использует Установить маску файла к, например, указать, ориентирован ли экстент на цилиндр или дорожку, разрешена ли запись; это предотвращает поиск из указанной дорожки (цилиндра). Если программист пытается прочитать за пределами конца дорожки (цилиндра), проверка единицы происходит и восстановление после ошибок перезапускает программу канала со следующей дорожкой (цилиндром) текущего экстента. Если операция выходит за пределы конца экстента, EXCP вызывает конец степени appendage, который может обновлять IOB и запрашивать, чтобы EXCP либо перевыпустил запрос, либо прекратил его.

Только устаревшие наборы данных

EXCP иногда путают с методом доступа к устройствам хранения с прямым доступом, но он не предназначен исключительно для устройств хранения с прямым доступом; скорее, это низкоуровневый интерфейс доступа к устройствам общего назначения, который поддерживает любые наследие тип устройства и любой наследие организация набора данных. Для доступа все типы устройств и все организации набора данных, более общие Начать ввод / вывод интерфейс (STARTIO) доступен в MVS / 370 и последующих экземплярах ОС, хотя официально не поддерживается.

Упрощенные операции с наборами данных прямого доступа

Разновидностью EXCP является Выполнить программу прямого доступа (XDAP), который используется только для доступа к хранилищу прямого доступа и предназначен для чтения и обновления существующих записей хранилища прямого доступа. XDAP нельзя использовать для добавления записей, но XDAP можно использовать вместе с BSAM или BPAM для добавления записей в такие наборы данных, и некоторые компоненты ОС используют XDAP таким образом (в частности, редактор связей, IEWL).

Доступ к телекоммуникационным устройствам

EXCP также может использоваться для доступа к устройствам связи, подключенным к IBM 2701, 2702 и 2703 контроллеры связи и интерфейсные процессоры IBM 370x или Amdahl 470x (и их соответствующие дополнения), работающие в режиме эмулятора (EP) или в режиме многораздельного эмулятора (PEP).

Отношение к руководителю

Внешний интерфейс EXCP всегда находится в режиме TCB, поскольку EXCP относится к типу 1. SVC. В MVS / 370 и последующих экземплярах ОС процессор EXCP вызывает STARTIO для планирования выполнения программы канала. Хотя внутренняя часть процессора EXCP всегда находится в режиме SRB, внутренняя часть содержит код эмуляции, который позволяет приложениям, разработанным для более ранних экземпляров ОС, предшествующих MVS, особенно для EXCP, работать в основном, как раньше, и, таким образом, казаться находиться в режиме TCB, для которого изначально были разработаны эти придатки. Это различие может усложнить преобразование определенных методов и приложений для самостоятельного доступа к MVS.

Канальные программы

Канальные программы System / 360 представляют собой последовательность команд, которые выполняются каналом и устройством ввода-вывода. Канальные программы могут быть расположены в любом месте основной памяти. Программа канала представляет собой последовательность Командные слова канала (CCW), которые могут выполняться последовательно, если только ветвь не называется Передача в канале (TIC), либо канал возвращает модификатор статуса. Каждое CCW представляет собой двойное слово (восемь байтов) следующим образом:[10]

 бит 0 7 8 31 + -------- + ----------------------- + | Команда | Адрес данных | + -------- + ----------------------- + 32 36 40 47 48 63 + ------ + - - + -------- + ------------ + | Флаги | 000 | зарезервировано | счет | + ------ + --- + -------- + ------------ + Шесть команд определены в младших битах поля команды ( 0-7). Четыре (или шесть) старших бита являются «модификаторами» («M») для некоторых команд или игнорируются. Команды: 0100 - Sense 1000 - Передача в канале (TIC) 1100 - Чтение назад --01 - Запись --10 - Чтение --11 - Управление

Адрес данных (8-31) - это 24-битный адрес буферной области основной памяти, в которую или из которой должны быть переданы данные.

Биты флагов (32-36) определены следующим образом:

КусочекЯ БЫИмяОписание
32CDДанные цепиИспользуйте область хранения, указанную в следующей CCW, чтобы продолжить эту команду
33CCЦепная командаВыполнить следующую последовательную CCW, когда эта команда завершится
если CC или CD не установлены, программа канала завершается после выполнения этой команды
34SLIПодавить индикацию длиныИгнорировать неправильную длину этой команды
35ПРОПУСКАТЬПропускатьЗапретить передачу данных для этой команды
36PCIПрограммно контролируемое прерываниеГенерация прерывания, когда эта команда начинает выполнение

Поле счетчика (48-63) указывает количество байтов, передаваемых этой командой.

Все восемь бит команд, запускающих операции ввода-вывода, передаются устройству. «Биты модификатора указывают устройству, как должна выполняться команда». Например, для IBM 2305 DASD записывать команда ('MMMMMM01'BX) может иметь следующие значения:[11]

Битовое значениеШестнадцатеричныйОписание
0001 1001'19'XНапишите домашний адрес
0001 0101'15'XЗапись 0
0001 0001'11'XСтереть
0001 1101'1D'XКоличество записей, ключ и данные
0000 0001'01'XЗапись специального счетчика, ключа и данных
0000 0101'05'XЗапись данных
0000 1101'0D'XЗаписать ключ и данные

Рекомендации

  1. ^ Рейно Ханнула (1974). Компьютеры и программирование: подход на языке ассемблера System / 360-370. Хоутон Миффлин. п. 431. ISBN  978-0-395-16796-0.
  2. ^ Гопал К. Капур (1 января 1970 г.). Программирование на языке ассемблера IBM 360. Джон Вили и сыновья. стр.453–454, 456–459, 461. ISBN  978-0-471-45840-1.
  3. ^ Роберт Х. Джонсон (июнь 1989 г.). МВС: концепции и возможности. Интертекстовые публикации. п. 558. ISBN  978-0-07-032673-6.
  4. ^ «Глава 4. Выполнение программ вашего собственного канала» (PDF). z / OS Версия 2 Выпуск 4 Расширенные службы DFSMSdfp (PDF). IBM. Август 2020. С. 151–210. SC23-6861-40.
  5. ^ Руководство программиста операционной системы IBM System / 360 (PDF). IBM. Март 1967. C28-6550-2.
  6. ^ Гэри А. Стоттс (1 августа 1990 г.). DOS / VSE: Введение в операционную систему. QED Информационные науки. п. 18. ISBN  978-0-89435-332-1.
  7. ^ Супервизор DOS и макросы ввода-вывода (PDF). IBM. GC24-S037-12.
  8. ^ Руководство пользователя системных макросов IBM z / VSE версии 6, выпуск 1 (PDF). IBM. 2015. SC34-2709-00.
  9. ^ IGG = префикс компонента поддержки ввода / вывода; 019 = Открыть подкомпонент SVC; xx = подфункция
  10. ^ Корпорация IBM (январь 1967 г.). Принципы работы IBM System / 360 (PDF). стр. 84–121. Получено 4 декабря, 2019.
  11. ^ Корпорация IBM (август 1971 г.). Справочное руководство для IBM 2835 Storage Control и IBM 2305 Fixed Head Storage Module (PDF). п. 17. Получено 5 декабря, 2019.