Article de reference

Exécuter le programme du canal

Dans les systèmes d'exploitation mainframe IBM , l'instruction EXCP ( Execute Channel Program ) est une macro générant un appel système , implémentée comme une instruction d'app...

les systèmes d'exploitation mainframe IBM , l'instruction EXCP ( Execute Channel Program ) est une macro générant un appel système , implémentée comme une instruction d'appel superviseur , pour l'accès bas niveau aux périphériques. Le programmeur doit alors fournir un programme de canal (une liste de commandes spécifiques au périphérique, CCW) à exécuter par les canaux d'E/S, les unités de contrôle et les périphériques. L'instruction EXCP pour OS/360 et ses successeurs est décrite plus en détail dans le Guide du programmeur système . L'instruction EXCP pour DOS/360 et ses successeurs est décrite plus en détail dans le document « DOS Supervisor and I/O Macros » . Cet article traite principalement des systèmes OS/360 à z/OS ; certains détails diffèrent pour TOS/360 et DOS/360 à z/VSE .

bloc de contrôle des données (DCB) pour le système d'exploitation et le DTFPH pour DOS.

Spécification des opérations d'E/S

Pour les systèmes d'exploitation OS/360 à z/OS, le programme fournit un bloc d'entrée/sortie (IOB) à EXCP ; si le programme exécute un EXCP sur plusieurs IOB, le système les traite dans l'ordre de leur requête. Pour les disques DASD, l'IOB comprend une adresse de positionnement, IOBSEEK , au format MBBCCHHR, où M représente l'étendue, BB le compartiment d'une cellule de données, CCHH le cylindre et la tête, et R le numéro d'enregistrement.

Appendices

Un appendice est une routine écrite par un programmeur qui offre un contrôle supplémentaire sur les opérations d'E/S lors de l'exécution d'un programme de canal. Une liste exhaustive des appendices ( disponible dans le contexte EXCP) permet aux programmes autorisés de remplacer ou de compléter de nombreux contrôles de sécurité et d'intégrité des données du système. La plupart de ces appendices sont pris en charge pour assurer la compatibilité avec les versions antérieures du système d'exploitation, mais les fonctions de plusieurs d'entre eux ont été modifiées ou étendues pour MVS. Les appendices sont spécifiés dans le DCB par les deux derniers caractères du nom de module IGG019xx, où xx = WA à Z9 inclus. Ces noms de module sont réservés aux appendices écrits lors de l'installation. Tout autre nom de la forme IGG019xx est réservé aux méthodes d'accès IBM. Les appendices doivent résider dans SYS1.SVCLIB (SYS1.LPALIB dans SVS ou les versions ultérieures du système d'exploitation).

Intégrité des données

Normalement, lorsqu'un programme ouvre un DCB pour EXCP, OPEN crée un bloc d'étendue de données (DEB) contenant chaque étendue du premier volume du jeu de données associé. Cependant, pour un montage parallèle, OPEN crée un DEB contenant toutes les étendues de tous les volumes. Chaque DEB est chaîné au DCB, et EXCP vérifie ce chaînage comme mesure de sécurité système, car le DCB réside dans un espace de stockage utilisateur non protégé, tandis que le DEB réside dans un espace de stockage système protégé (sous-pool 253). Sous OS/VS1 et OS/VS2, EXCP utilise DEBCHK pour s'assurer que le DEB a bien été créé par OPEN. Pour les DASD, EXCP vérifie que l'adresse de recherche dans l'IOB se situe dans l'une des étendues et utilise un masque de fichier pour indiquer, par exemple, si l'étendue est orientée cylindre ou piste et si l'écriture est autorisée. Ceci empêche une recherche hors de la piste (cylindre) spécifiée. Si le programmeur tente de lire au-delà de la fin de la piste (cylindre), un contrôle d'unité est effectué et la récupération d'erreur redémarre le programme du canal avec la piste (cylindre) suivante de l'étendue courante. Si l'opération dépasse la fin de l'étendue, EXCP appelle l' appendice de fin d'étendue , qui peut mettre à jour l'IOB et demander soit à EXCP de réémettre la requête, soit de la terminer.

Ensembles de données hérités uniquement

EXCP est parfois confondu avec une méthode d'accès direct aux périphériques de stockage, mais il n'est pas exclusivement destiné à ces périphériques ; il s'agit plutôt d'une interface d'accès bas niveau générique, compatible avec tous les types de périphériques et toutes les organisations de données héritées . Pour accéder à tous les types de périphériques et à toutes les organisations de données, l'interface privilégiée STARTIO ( Start Input/Output ), plus générale , est disponible dans MVS/370 et les versions ultérieures du système d'exploitation, bien qu'elle ne soit pas officiellement prise en charge.

Opérations simplifiées sur les ensembles de données à accès direct

Une variante d'EXCP est le programme d'accès direct (XDAP), utilisé exclusivement pour accéder au stockage à accès direct. Il permet de lire et de mettre à jour les enregistrements existants dans ce stockage. XDAP ne permet pas d'ajouter d'enregistrements, mais peut être utilisé conjointement avec BSAM ou BPAM pour ajouter des enregistrements à ces ensembles de données. Plusieurs composants du système d'exploitation utilisent XDAP de cette manière (notamment l'éditeur de liens et IEWL).

accès aux appareils de télécommunications

EXCP peut également être utilisé pour accéder aux périphériques de communication connectés aux contrôleurs de communication IBM 2701 , 2702 et 2703 et aux processeurs frontaux IBM 370x ou Amdahl 470x (et leurs successeurs respectifs) fonctionnant en mode émulateur (EP) ou en mode émulateur partitionné (PEP).

Relation avec le superviseur

L'interface d'EXCP est toujours en mode bloc de contrôle de tâche (TCB), le mode normal pour les applications, car EXCP est un SVC de type 1 .

Dans MVS/370 et les versions ultérieures du système d'exploitation, le processeur EXCP appelle STARTIO pour planifier l'exécution du programme de canal. Bien que le système d'exploitation du processeur EXCP soit toujours en mode SRB ( Service Request Block , il contient du code d'émulation permettant aux modules développés pour les versions antérieures du système d'exploitation (avant MVS), et spécifiquement pour EXCP, de fonctionner globalement comme avant et d'apparaître ainsi en mode TCB, pour lequel ces modules ont été initialement conçus. Cette distinction peut compliquer la conversion de certaines méthodes d'accès et applications personnalisées vers MVS.

Programmes de la chaîne

Les programmes de canal System/360 sont une séquence de commandes exécutées par le canal et le périphérique d'E/S. Ces programmes peuvent être stockés n'importe où dans la mémoire principale. Un programme de canal est une séquence de mots de commande de canal (CCW), qui peuvent être exécutés séquentiellement, sauf si une branche, appelée transfert entrant dans le canal (TIC), est exécutée ou si le canal renvoie un modificateur d'état . Chaque CCW est un double mot (huit octets) comme suit :

PeuIDENTIFIANTNomDescription32CDDonnées de la chaîneUtilisez la zone de stockage spécifiée dans le CCW suivant pour poursuivre cette commande.33CCcommandement en chaîneExécutez la prochaine séquence CCW une fois cette commande terminée. Si CC ou CD ne sont pas définis, le programme du canal se termine après l'exécution de cette commande.34SLISupprimer l'indication de longueurIgnorez la longueur incorrecte de cette commande35SAUTERSauterSupprimer le transfert de données pour cette commande36PCIinterruption contrôlée par le programmeGénérer une interruption lorsque cette commande commence à s'exécuter.

Le champ de comptage (48-63) indique le nombre d'octets à transférer par cette commande.

Les huit bits des commandes qui initient les opérations d'E/S sont transmis au périphérique. « Les bits de modification indiquent au périphérique comment la commande doit être exécutée. » Par exemple, pour le DASD IBM 2305, la commande d'écriture (« MMMMMM01 »BX) peut avoir les valeurs suivantes :

Valeur binaireHexadécimalDescription
0001 1001'19'XÉcrire l'adresse du domicile
0001 0101'15'XÉcrire l'enregistrement 0
0001 0001'11'XEffacer
0001 1101'1D'XÉcriture du nombre, de la clé et des données
0000 0001'01'XÉcrire un nombre spécial, une clé et des données
0000 0101'05'XÉcrire des données
0000 1101'0D'XÉcrire la clé et les données