En los sistemas operativos de mainframe IBM , Execute Channel Program ( EXCP ) es una macro que genera una llamada al sistema , implementada como una instrucción Supervisor Call , para el acceso a dispositivos de bajo nivel, donde el programador es responsable de proporcionar un programa de canal ( una lista de dispositivos) comandos específicos (CCW): para ser ejecutados por canales de E / S, unidades de control y dispositivos. [1] [2] EXCP para OS / 360 y sucesores [3] [4] se describe más específicamente en la Guía del programador del sistema OS .; [5] EXCP para DOS / 360 y sucesores [6]se describe más específicamente en Supervisor de DOS y Macros de E / S. [7] [8] Este artículo refleja principalmente OS / 360 a través de z / OS ; algunos detalles son diferentes para TOS / 360 y DOS / 360 a través de z / VSE .
Especificar conjuntos de datos
Con EXCP, los dispositivos heredados y los conjuntos de datos heredados se pueden operar con un rendimiento relativamente alto. Los dispositivos EXCP se ABREN (es decir, se ponen a disposición de la aplicación) especificando el Bloque de control de datos (DCB) para OS y DTFPH para DOS.
Especificar operaciones de E / S
Para OS / 360 a z / OS, el programa proporciona un bloque de entrada / salida (IOB) a EXCP; si el programa ejecuta un EXCP en varios IOB, el sistema los procesa en el orden en que fueron solicitados. Para DASD, el IOB incluye una dirección de búsqueda, IOBSEEK , en el formato MBBCCHHR, donde M es la extensión, BB es el contenedor para una celda de datos, CCHH es el cilindro y la cabeza y R es el número de registro.
Apéndices
Una lista completa de apéndices [9] ( salidas en el contexto EXCP) permite que los programas autorizados [a] anulen o aumenten muchas de las comprobaciones de seguridad e integridad de los datos del sistema. La mayoría de estos apéndices son compatibles por compatibilidad con instancias anteriores del sistema operativo, pero las funciones de varios se han modificado o ampliado para MVS. Los apéndices se especifican en el DCB como los dos últimos caracteres del nombre del módulo IGG019xx, donde xx = WA a Z9, inclusive. Estos nombres de módulo están reservados para apéndices escritos en la instalación. Cualquier otro nombre con el formato IGG019xx está reservado para que lo utilicen los métodos de acceso de IBM. [11] Los apéndices deben residir en SYS1.SVCLIB (SYS1.LPALIB en SVS o instancias posteriores del SO).
Integridad del conjunto de datos
Normalmente, cuando un programa ABRE un DCB para EXCP, ABRIR crea un Bloque de extensión de datos (DEB) que contiene cada extensión para el primer volumen del conjunto de datos asociado; sin embargo, para el montaje paralelo, OPEN crea un DEB que contiene todas las extensiones para todos los volúmenes. Cada DEB está encadenado hacia adelante y hacia atrás al DCB, y EXCP verifica el encadenamiento como medida de seguridad del sistema, ya que el DCB reside en el almacenamiento de usuario desprotegido mientras que el DEB reside en el almacenamiento del sistema protegido, Subpool 253; en OS / VS1 y OS / VS2 EXCP usa DEBCHK para asegurar que el DEB fue creado por OPEN. Para DASD, EXCP verifica que la dirección de búsqueda en el IOB esté dentro de una de las extensiones, y usa un Establecer máscara de archivo para, por ejemplo, indicar si la extensión está orientada al cilindro o a la pista, si la escritura está permitida; esto evita una búsqueda fuera de la pista especificada (cilindro). Si el programador intenta leer más allá del final de la pista (cilindro), se produce una verificación de la unidad y la recuperación del error reinicia el programa de canal con la siguiente pista (cilindro) de la extensión actual. Si la operación va más allá del final de la extensión, EXCP llama al apéndice del final de la extensión , que puede actualizar el IOB y solicitar que EXCP vuelva a emitir la solicitud o que EXCP la cancele.
Solo conjuntos de datos heredados
EXCP a veces se confunde con un método de acceso a dispositivos de almacenamiento de acceso directo, pero no es para dispositivos de almacenamiento de acceso directo exclusivamente; más bien, es una interfaz de acceso a dispositivos de bajo nivel de propósito general que admite cualquier tipo de dispositivo heredado y cualquier organización de conjuntos de datos heredados . Para acceder a todos los tipos de dispositivos y todas las organizaciones de conjuntos de datos, la interfaz de entrada / salida de inicio más general (STARTIO) está disponible en MVS / 370 y las instancias posteriores del sistema operativo, aunque no es una interfaz oficialmente compatible.
Operaciones simplificadas en conjuntos de datos de acceso directo
Una variación de EXCP es el programa Execute Direct Access Program (XDAP), que se utiliza para acceder únicamente al almacenamiento de acceso directo y se proporciona para leer y actualizar los registros de almacenamiento de acceso directo existentes. XDAP no se puede usar para agregar registros, pero XDAP se puede utilizar junto con BSAM o BPAM para efectuar adiciones de registros a dichos conjuntos de datos, y varios componentes del sistema operativo utilizan XDAP de esta manera (el Editor de enlaces, IEWL, en particular).
Acceso a dispositivos de telecomunicaciones
EXCP también se puede utilizar para acceder a dispositivos de comunicaciones conectados a controladores de comunicaciones IBM 2701 , 2702 y 2703 y procesadores frontales IBM 370x o Amdahl 470x (y sus respectivos seguimientos) que operan en modo emulador (EP) o modo emulador particionado (PEP). ).
Relación con el supervisor
El front-end de EXCP siempre está en modo de Bloque de control de tareas (TCB), el modo normal para aplicaciones, [12] ya que EXCP es un SVC de Tipo 1 .
En MVS / 370 y las instancias posteriores del sistema operativo, el procesador EXCP invoca a STARTIO para programar la ejecución del programa del canal. Aunque el back-end del procesador EXCP siempre está en modo Service Request Block [b] (SRB), [12] el back-end contiene código de emulación que permite los apéndices desarrollados para instancias anteriores de MVS del sistema operativo, específicamente para EXCP , para funcionar en gran medida como antes y, por lo tanto, parecer estar en modo TCB, para el que se diseñaron originalmente estos apéndices. Esta distinción puede complicar la conversión de ciertos métodos y aplicaciones de acceso roll-your-own a MVS.
Programas de canal
Los programas de canal del sistema / 360 son una secuencia de comandos que son ejecutados por el canal y el dispositivo de E / S. Los programas de canal se pueden ubicar en cualquier lugar del almacenamiento principal. El programa de canal es una secuencia de palabras de comando de canal (CCW), que pueden ejecutarse secuencialmente a menos que se ejecute una rama, llamada Transferir en canal (TIC), o el canal devuelva un modificador de estado . Cada CCW es una palabra doble (ocho bytes) de la siguiente manera: [13]
bit 0 7 8 31 + -------- + ----------------------- + | Comando | Dirección de datos | + -------- + ----------------------- + 32 36 40 47 48 63 + ------ + --- + -------- + ------------ + | Banderas | 000 | reservado | contar | + ------ + --- + -------- + ------------ +Se definen seis comandos, en los bits de orden inferior del campo de comando (0-7). Los cuatro (o seis) bits de orden superior son "modificadores" ("M") para algunos comandos, o se ignoran. Los comandos son: 0100 - Sentido 1000 - Transferencia en canal (TIC) 1100 - Leer al revés --01 - Escribir --10 - Leer --11 - Control
La dirección de datos (8-31) es la dirección de 24 bits de un área de búfer de almacenamiento principal hacia o desde la cual se transferirán los datos.
Los bits de bandera (32-36) se definen de la siguiente manera:
Un poco | IDENTIFICACIÓN | Nombre | Descripción |
---|---|---|---|
32 | CD | Datos de la cadena | Utilice el área de almacenamiento especificada en la siguiente CCW para continuar con este comando |
33 | CC | Comando en cadena | Ejecute el siguiente CCW secuencial cuando este comando se complete si CC o CD no están configurados, el programa de canal termina después de ejecutar este comando |
34 | SLI | Suprime la indicación de longitud | Ignore la longitud incorrecta de este comando |
35 | SALTAR | Saltar | Suprime la transferencia de datos para este comando |
36 | PCI | Interrupción controlada por programa | Genera una interrupción cuando este comando comienza a ejecutarse |
El campo de recuento (48-63) indica el número de bytes que se transferirán mediante este comando.
Los ocho bits de comandos que inician operaciones de E / S se pasan al dispositivo. "Los bits modificadores especifican al dispositivo cómo se ejecutará el comando". Por ejemplo, para IBM 2305 DASD, el comando de escritura ('MMMMMM01'BX) puede tener los siguientes valores: [14]
Valor de bit | Hexadecimal | Descripción |
---|---|---|
0001 1001 | '19'X | Escriba la dirección de su casa |
0001 0101 | '15'X | Escribir registro 0 |
0001 0001 | '11'X | Borrar |
0001 1101 | '1D'X | Escribir recuento, clave y datos |
0000 0001 | '01'X | Escribir recuento, clave y datos especiales |
0000 0101 | '05'X | Escribir datos |
0000 1101 | '0D'X | Escribir clave y datos |
Notas
- ^ Existen varios tipos de autorización para el uso de apéndices:
- Un programa autorizado por APF, que se ejecuta en una tecla del sistema (0-7) o en modo Supervisor puede utilizar cualquier apéndice.
- Un programa puede utilizar cualquier apéndice que OPEN seleccione automáticamente para el uso de un método de acceso.
- Un programa puede usar cualquier apéndice que esté definido en el momento de la IPL en IEAAPP00. [10]
- ^ En OS / 360, OS / VS1 y SVS no hay modo SRB y los apéndices se ejecutan con las interrupciones deshabilitadas.
Referencias
- DFSMSdfp
- z / OS Versión 2 Release 4 DFSMSdfp Advanced Services . IBM. Agosto de 2020. SC23-6861-40.
- ^ Reino Hannula (1974). Computadoras y programación: un enfoque de lenguaje ensamblador de System / 360-370 . Houghton Mifflin. pag. 431. ISBN 978-0-395-16796-0.
- ^ Gopal K. Kapur (1 de enero de 1970). Programación en lenguaje IBM 360 Assembler . John Wiley e hijos. págs. 453–454, 456–459, 461 . ISBN 978-0-471-45840-1.
- ^ Robert H. Johnson (junio de 1989). MVS: conceptos e instalaciones . Publicaciones de intertexto. pag. 558. ISBN 978-0-07-032673-6.
- ^ "Capítulo 4. Ejecución de sus propios programas de canal" (PDF) . Servicios avanzados de z / OS Versión 2 Release 4 DFSMSdfp (PDF) . IBM. Agosto de 2020. págs. 151–210. SC23-6861-40.
- ^ IBM System / 360 Operating System System Programmer's Guide (PDF) . IBM. Marzo de 1967. C28-6550-2.
- ^ Gary A. Stotts (1 de agosto de 1990). DOS / VSE: Introducción al sistema operativo . QED Ciencias de la Información. pag. 18. ISBN 978-0-89435-332-1.
- ^ Supervisor de DOS y macros de E / S (PDF) . IBM. GC24-S037-12.
- ^ IBM z / VSE Versión 6 Release 1 System Macros User's Guide (PDF) . IBM. 2015. SC34-2709-00.
- ^ DFSMSdfp , págs. 199-200, Apéndices EXCP y EXCPVR .
- ^ DFSMSdfp , La lista de apéndices autorizados (IEAAPP00) , pp = 201-202.
- ^ IGG = prefijo del componente de soporte de E / S; 019 = Subcomponente SVC abierto; xx = subfunción
- ^ a b Software AG. "Procesamiento natural de zIIP: TCB, SRB y enclaves" . Consultado el 22 de marzo de 2021 .
- ^ IBM Corporation (enero de 1967). IBM System / 360 Principios de funcionamiento (PDF) . págs. 84-121 . Consultado el 4 de diciembre de 2019 .
- ^ IBM Corporation (agosto de 1971). Manual de referencia para IBM 2835 Storage Control y IBM 2305 Fixed Head Storage Module (PDF) . pag. 17 . Consultado el 5 de diciembre de 2019 .