Выполнить программу канала

API низкоуровневого ввода-вывода операционной системы

В операционных системах мэйнфреймов IBM Execute Channel Program ( EXCP ) — это макрос , генерирующий системный вызов , реализованный как инструкция Supervisor Call для доступа к устройствам низкого уровня, где программист отвечает за предоставление программы канала — списка команд, специфичных для устройства (CCW), — которые должны быть выполнены каналами ввода-вывода, блоками управления и устройствами. [1] [2] EXCP для OS/360 и последующих версий [3] [4] более подробно описан в Руководстве программиста ОС; [5] EXCP для DOS/360 и последующих версий [6] более подробно описан в DOS Supervisor и макросы ввода-вывода. [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 — номер записи.

Придатки

«Придаток — это написанная программистом процедура, которая обеспечивает дополнительный контроль над операциями ввода-вывода во время выполнения программы канала». [9] Полный список придатков [10] ( выходы в контексте EXCP) позволяет авторизованным программам [a] переопределять или дополнять многие проверки безопасности системы и целостности данных. Большинство этих придатков поддерживаются для совместимости с более ранними экземплярами ОС, но функции некоторых из них были изменены или расширены для MVS. Придатки указаны в DCB как последние два символа имени модуля IGG019xx, где xx = WA до Z9 включительно. Эти имена модулей зарезервированы для придатков, написанных при установке. Любое другое имя формы IGG019xx зарезервировано для использования методами доступа IBM. [12] Придатки должны находиться в 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 в пределах одного из экстентов, и использует маску Set File Mask , например, для указания того, ориентирован ли экстент на цилиндр или дорожку, разрешена ли запись; это предотвращает поиск за пределами указанной дорожки (цилиндра). Если программист пытается выполнить чтение после конца дорожки (цилиндра), происходит проверка блока , и восстановление после ошибки перезапускает канальную программу со следующей дорожкой (цилиндром) текущего экстента. Если операция выходит за конец экстента, EXCP вызывает дополнение конца экстента , которое может обновить IOB и запросить, чтобы EXCP повторно выдал запрос или чтобы EXCP завершил его.

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

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

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

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

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

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

Отношения с руководителем

Интерфейс EXCP всегда находится в режиме блока управления задачами (TCB), обычном режиме для приложений, [13], поскольку EXCP представляет собой SVC типа 1 .

В MVS/370 и последующих экземплярах ОС процессор EXCP вызывает STARTIO для планирования выполнения программы канала. Хотя бэкенд процессора EXCP всегда находится в режиме Service Request Block [b] (SRB), [13] бэкенд содержит код эмуляции, который позволяет дополнениям, разработанным для более ранних, до-MVS экземпляров ОС, в частности для EXCP, функционировать в основном так же, как и раньше, и, таким образом, казаться находящимися в режиме TCB, для которого эти дополнения изначально были разработаны. Это различие может усложнить преобразование определенных методов доступа и приложений roll-your-own в MVS.

Программы канала

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

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

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

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

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

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

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

Значение битаШестнадцатеричныйОписание
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. ^ Существует несколько типов разрешений на использование придатков:
    • Программа, авторизованная APF, работающая в системном ключе (0-7) или в режиме супервизора, может использовать любой придаток.
    • Программа может использовать любой придаток, который автоматически выбирается OPEN для использования метода доступа.
    • Программа может использовать любой придаток, определенный во время IPL в IEAAPP00. [11]
  2. ^ В OS/360, OS/VS1 и SVS режим SRB отсутствует, а дополнения работают с отключенными прерываниями.

Ссылки

DFSMSdfp
z/OS версии 2 выпуска 4 DFSMSdfp Advanced Services. IBM. Август 2020 г. SC23-6861-40.
  1. ^ Рейно Ханнула (1974). Компьютеры и программирование: подход к языку ассемблера System/360-370. Houghton Mifflin. стр. 431. ISBN 978-0-395-16796-0.
  2. Гопал К. Капур (1 января 1970 г.). IBM 360 Assembler Language Programming . John Wiley & Sons. стр. 453–454, 456–459, 461. ISBN 978-0-471-45840-1.
  3. ^ Роберт Х. Джонсон (июнь 1989). MVS: концепции и возможности. Intertext Publications. стр. 558. ISBN 978-0-07-032673-6.
  4. ^ «Глава 4. Выполнение собственных программ канала» (PDF) . z/OS версии 2 выпуска 4 DFSMSdfp Advanced Services (PDF) . IBM. Август 2020 г. стр.  151–210 . SC23-6861-40.
  5. ^ IBM System/360 Operating System System Programmer's Guide (PDF) . IBM. Март 1967. C28-6550-2.
  6. ^ Гэри А. Стоттс (1 августа 1990 г.). DOS/VSE: Введение в операционную систему . QED Information Sciences. стр. 18. ISBN 978-0-89435-332-1.
  7. ^ DOS Supervisor и макросы ввода-вывода (PDF) . IBM. GC24-S037-12.
  8. ^ IBM z/VSE Version 6 Release 1 System Macros User's Guide (PDF) . IBM. 2015. SC34-2709-00.
  9. ^ "Appendages" (PDF) . OS Data Management for System Programmers - Release 21 (PDF) . IBM Systems Reference Library (Twelfth ed.). IBM Corporation. Апрель 1973 г. стр. 46. GC28-6550-ll . Получено 28 июня 2022 г. .
  10. ^ DFSMSdfp, стр. 199–200, EXCP и EXCPVR Придатки.
  11. ^ DFSMSdfp, Список разрешенных приложений (IEAAPP00), стр. 201-202.
  12. ^ IGG = префикс компонента поддержки ввода-вывода; 019 = подкомпонент Open SVC; xx = подфункция
  13. ^ ab Software AG. "Естественная обработка zIIP: TCB, SRB и анклавы" . Получено 22 марта 2021 г.
  14. ^ IBM Corporation ( январь 1967 г.). IBM System/360 Principles of Operation (PDF) . стр.  84–121 . Получено 4 декабря 2019 г.
  15. ^ IBM Corporation (август 1971 г.). Справочное руководство по IBM 2835 Storage Control и IBM 2305 Fixed Head Storage Module (PDF) . стр. 17 . Получено 5 декабря 2019 г. .
Получено с "https://en.wikipedia.org/w/index.php?title=Execute_Channel_Program&oldid=1177373223"