En los sistemas operativos de mainframe de IBM , Execute Channel Program ( EXCP ) es una macro que genera una llamada al sistema , implementada como una instrucción Supervisor Call , para el acceso de dispositivos de bajo nivel, donde el programador es responsable de proporcionar un programa de canal —una lista de comandos específicos del dispositivo (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 DOS Supervisor and I/O Macros. [ 7 ] [ 8 ] Este artículo refleja principalmente OS/360 hasta z/OS ; algunos detalles son diferentes para TOS/360 y DOS/360 hasta z/VSE .
Especificación de conjuntos de datos
Mediante EXCP, se pueden gestionar dispositivos y conjuntos de datos heredados 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 sistemas operativos y el DTFPH para sistemas operativos.
Especificación de 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 el cabezal, y R es el número de registro.
Apéndices
"Un apéndice es una rutina escrita por el programador que proporciona control adicional sobre las operaciones de E/S durante la ejecución del programa de canal." [ 9 ] Una lista completa de apéndices [ 10 ] ( existe en el contexto EXCP) permite a los programas autorizados [ a ] anular o ampliar muchas de las comprobaciones de seguridad e integridad de datos del sistema. La mayoría de estos apéndices son compatibles con instancias anteriores del SO, 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, ambos inclusive. Estos nombres de módulo están reservados para apéndices escritos durante la instalación. Cualquier otro nombre de la forma IGG019xx está reservado para su uso por los métodos de acceso de IBM. [ b ] 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, OPEN 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 no protegido, 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 una Máscara de Archivo de Conjunto para, por ejemplo, indicar si la extensión está orientada a cilindro o pista, si se permite la escritura; esto evita una búsqueda fuera de la pista (cilindro) especificada. Si el programador intenta leer más allá del final de la pista (cilindro), se produce una comprobación de la unidad y la recuperación de errores reinicia el programa del 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 de fin de extensión , que puede actualizar el IOB y solicitar que EXCP vuelva a emitir la solicitud o que la finalice.
Solo conjuntos de datos heredados
A veces se confunde EXCP con un método de acceso directo a dispositivos de almacenamiento, pero no es exclusivo para este tipo de dispositivos; se trata, más bien, de una interfaz de acceso a dispositivos de bajo nivel de propósito general que admite cualquier tipo de dispositivo y cualquier organización de conjunto de datos heredados . Para acceder a todos los tipos de dispositivos y a todas las organizaciones de conjuntos de datos, la interfaz de entrada/salida privilegiada Start (STARTIO) , más general, está disponible en MVS/370 y versiones posteriores del sistema operativo, aunque no es una interfaz oficialmente compatible.
Operaciones simplificadas en conjuntos de datos de acceso directo.
Una variante de EXCP es Execute Direct Access Program (XDAP), que se utiliza únicamente para acceder al almacenamiento de acceso directo y permite leer y actualizar los registros existentes. XDAP no permite añadir registros, pero puede utilizarse junto con BSAM o BPAM para agregarlos a dichos conjuntos de datos. Varios componentes del sistema operativo utilizan XDAP de esta manera (en particular, el editor de enlaces, IEWL).
Acceso a dispositivos de telecomunicaciones
EXCP también se puede utilizar para acceder a dispositivos de comunicaciones conectados a los controladores de comunicaciones IBM 2701 , 2702 y 2703 y a los procesadores frontales IBM 370x o Amdahl 470x (y sus respectivos sucesores) que operan en modo emulador (EP) o en modo emulador particionado (PEP).
Relación con el supervisor
El front-end de EXCP siempre está en modo Bloque de control de tareas (TCB), el modo normal para las aplicaciones, [ 12 ] ya que EXCP es un SVC de tipo 1 .
En MVS/370 y versiones posteriores del sistema operativo, el procesador EXCP invoca STARTIO para programar la ejecución del programa de canal. Aunque el back-end del procesador EXCP siempre está en modo Service Request Block [ c ] (SRB), [ 12 ] el back-end contiene código de emulación que permite que los apéndices desarrollados para versiones anteriores del sistema operativo, pre-MVS, específicamente para EXCP, funcionen en gran medida como antes y, por lo tanto, parezcan estar en modo TCB, para el cual estos apéndices fueron diseñados originalmente. Esta distinción puede complicar la conversión de ciertos métodos de acceso y aplicaciones de desarrollo propio a MVS.
Programas del canal
Los programas de canal de System/360 son una secuencia de comandos que son ejecutados por el canal y el dispositivo de E/S. Los programas de canal pueden ubicarse en cualquier lugar de la memoria 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 bifurcación, llamada Transferencia en canal (TIC), o que el canal devuelva un modificador de estado . Cada CCW es una palabra doble (ocho bytes) como sigue: [ 13 ] [ d ]
bit 0 7 8 31 +--------+-----------------------+ |Comando | Dirección de datos | +--------+-----------------------+ 32 36 40 47 48 63 +------+---+--------+------------+ |Banderas |000|reservadas| recuento | +------+---+--------+------------+
Se definen seis comandos en los bits de orden inferior del campo de comandos (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:
El campo de conteo (48-63) indica la cantidad de bytes que se transferirán con este comando.
Los ocho bits de los comandos que inician las operaciones de E/S se pasan al dispositivo. "Los bits modificadores especifican al dispositivo cómo se debe ejecutar el comando". Por ejemplo, para el IBM 2305 DASD, el comando de escritura ('MMMMMM01'BX) puede tener los siguientes valores: [ 17 ]
Notas
- ↑ Existen varios tipos de autorización para el uso de apéndices:
- Un programa que esté autorizado por APF, que se ejecute en una clave de 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 utilizar cualquier apéndice que esté definido en el momento de la IPL en IEAAPP00. [ 11 ]
- ↑ IGG = Prefijo del componente de soporte de E/S; 019 = Subcomponente de Open SVC; xx = Subfunción
- ↑ En OS/360, OS/VS1 y SVS no existe el modo SRB y los apéndices se ejecutan con las interrupciones deshabilitadas.
- ↑ Los sucesores añaden banderas y formatos adicionales.
- Sistema/370 con traducción dinámica de direcciones
- Agrega la función de direccionamiento de datos indirectos del canal [ 14 ] y la bandera CCW de dirección de datos indirectos [ 15 ] .
- Sistema/370-XA
- Agrega CCW de formato 1 [ 16 ] con direcciones de 31 bits
Referencias
- S/360
- Principios de funcionamiento del IBM System/360 (PDF) (Séptima edición). IBM . Enero de 1967. A22-6821-6 . Consultado el 4 de diciembre de 2019 .
- S/370
- Principios de funcionamiento del sistema IBM System/370 (PDF) (Undécima edición). IBM. Septiembre de 1987. GA22-7000-10.
- S/370-XA
- IBM System/370 - Arquitectura extendida - Principios de funcionamiento (PDF) (Segunda edición). IBM. Enero de 1987. SA22-7085-1.
- z/ARCH
- z/Architecture - Principios de funcionamiento (PDF) (Decimocuarta edición). IBM . Mayo de 2022. SA22-7832-13 . Consultado el 4 de diciembre de 2019 .
- DFSMSdfp
- Servicios avanzados DFSMSdfp de z/OS Versión 2 Release 4. IBM . Agosto de 2020. SC23-6861-40.
- ↑ Reino Hannula (1974). Computadoras y programación: Un enfoque del lenguaje ensamblador System/360-370 . Houghton Mifflin. pág. 431. ISBN 978-0-395-16796-0.
- ↑ Gopal K. Kapur ( 1 de enero de 1970). Programación en lenguaje ensamblador para IBM 360. John Wiley & Sons. págs. 453–454, 456–459 , 461. ISBN 978-0-471-45840-1.
- ↑ Robert H. Johnson (junio de 1989). MVS: conceptos e instalaciones . Intertext Publications. pág. 558. ISBN 978-0-07-032673-6.
- ↑ "Capítulo 4. Ejecución de sus propios programas de canal" (PDF) . z/OS Versión 2 Release 4 Servicios avanzados DFSMSdfp (PDF) . IBM. Agosto de 2020. págs. 151–210 . SC23-6861-40.
- ↑ Guía del programador del sistema operativo IBM System/360 (PDF) . IBM. Marzo de 1967. C28-6550-2.
- ↑ Gary A. Stotts (1 de agosto de 1990). DOS/VSE: Introducción al sistema operativo . QED Information Sciences. pág. 18. ISBN 978-0-89435-332-1.
- ↑ Supervisor de DOS y macros de E/S (PDF) . IBM. GC24-S037-12.
- ↑ Guía del usuario de macros del sistema IBM z/VSE versión 6 Release 1 (PDF) . IBM. 2015. SC34-2709-00. Archivado del original (PDF) el 18 de diciembre de 2019. Consultado el 18 de diciembre de 2019 .
- ↑ "Apéndices" (PDF) . Gestión de datos del sistema operativo para programadores de sistemas - Versión 21 (PDF) . Biblioteca de referencia de sistemas IBM (Duodécima edición). IBM Corporation. Abril de 1973. pág. 46. GC28-6550-ll . Consultado el 28 de junio de 2022 .
- ↑ DFSMSdfp , págs. 199–200, Apéndices EXCP y EXCPVR .
- ↑ DFSMSdfp , págs. 201–202, La lista de apéndices autorizados (IEAAPP00) .
- 1 2 Software AG. "Procesamiento natural de zIIP: TCB, SRB y enclaves" . Recuperado el 22 de marzo de 2021 .
- ↑ S360 , págs. 84–121, Operaciones de entrada/salida .
- ↑ S370 , págs. 13-45–13-46, DIRECCIONAMIENTO INDIRECTO DE DATOS DE CANAL .
- ↑ S370 , pág. 13-38, PALABRA DE COMANDO DE CANAL .
- ↑ S370-XA , pág. 15-24-15-25 , Palabra de comando de canal .
- ↑ IBM Corporation (agosto de 1971). Manual de referencia para el control de almacenamiento IBM 2835 y el módulo de almacenamiento de cabezal fijo IBM 2305 (PDF) . pág. 17. Consultado el 5 de diciembre de 2019 .
- Sistemas operativos para mainframes de IBM
- formatos de archivos informáticos