Udfør kanalprogram - Execute Channel Program
I IBM mainframe- operativsystemer er Execute Channel Program ( EXCP ) en makro, der genererer et systemopkald , implementeret som en Supervisor Call-instruktion , til enhedsadgang på lavt niveau, hvor programmøren er ansvarlig for at levere et kanalprogram - en liste over enhed- specifikke kommandoer (CCW'er) - skal udføres af I / O-kanaler, kontrolenheder og enheder. EXCP til OS / 360 og efterfølgere er mere specifikt beskrevet i OS System Programmer's Guide .; EXCP for DOS / 360 og efterfølgere er mere specifikt beskrevet i DOS Supervisor og I / O-makroer. Denne artikel afspejler for det meste OS / 360 gennem z / OS ; nogle detaljer er forskellige for TOS / 360 og DOS / 360 gennem z / VSE .
Specificering af datasæt
Brug af EXCP kan ældre enheder og ældre datasæt betjenes med relativt høj ydeevne. EXCP enheder er åbnet (det vil sige, der stilles til rådighed for ansøgningen) ved at angive Data Control Block (DCB) til OS og DTFPH til DOS.
Angivelse af I / O-handlinger
For OS / 360 til og med z / OS giver programmet en Input / Output Block (IOB) til EXCP; hvis programmet udfører en EXCP til flere IOB'er, behandler systemet dem i den rækkefølge, de blev anmodet om. For DASD inkluderer IOB en søgeadresse , IOBSEEK , i formatet MBBCCHHR, hvor M er omfanget, BB er kassen til en datacelle, CCHH er cylinderen og hovedet, og R er rekordnummeret.
Tillæg
En omfattende liste over bilag ( udgange i EXCP-sammenhæng) gør det muligt for autoriserede programmer at tilsidesætte eller udvide mange af systemsikkerheds- og dataintegritetskontrol. De fleste af disse bilag understøttes for kompatibilitet med tidligere forekomster af operativsystemet, men funktionerne i flere er blevet ændret eller udvidet til MVS. Bilagene er specificeret i DCB som de sidste to tegn i modulnavnet IGG019xx, hvor xx = WA til Z9 inklusive. Disse modulnavne er forbeholdt installationsskrevne bilag. Ethvert andet navn på formularen IGG019xx er forbeholdt IBM-adgangsmetoder. Tillæg skal være i SYS1.SVCLIB (SYS1.LPALIB i SVS eller senere forekomster af operativsystemet).
Datasæt integritet
Når et program ÅBNER en DCB til EXCP, opretter OPEN normalt en Data Extent Block (DEB), der indeholder hvert omfang for det første bind i det tilknyttede datasæt; til parallelmontering opretter OPEN dog en DEB, der indeholder alle udvidelser til alle volumener. Hver DEB er kædet fremad og bagud til DCB, og EXCP kontrollerer sammenkædningen som en systemsikkerhedsforanstaltning, da DCB'en ligger i ubeskyttet brugerlagring, mens DEB ligger i beskyttet systemlagring, Subpool 253; i OS / VS1 og OS / VS2 EXCP bruger DEBCHK for at sikre, at DEB blev oprettet af OPEN. For DASD kontrollerer EXCP, at søgeadressen i IOB er inden for et af omfanget, og bruger en Set File Mask til f.eks. At indikere, om omfanget er cylinder- eller spororienteret, om skrivning er tilladt; dette forhindrer en søgning ud af det angivne spor (cylinder). Hvis programmøren prøver at læse forbi enden af sporet (cylinder), opstår der en enhedskontrol , og fejlgendannelse genstarter kanalprogrammet med det næste spor (cylinder) i den aktuelle udstrækning. Hvis operationen går ud over slutningen af omfanget, kalder EXCP slutningen af omfanget , der kan opdatere IOB og anmode om, at EXCP genudsteder anmodningen, eller at EXCP afslutter den.
Kun ældre datasæt
EXCP er undertiden forvekslet med en metode til direkte adgang til lagerenhedsadgang, men det er ikke udelukkende til direkte adgang til lagerenheder; snarere er det en generel adgangsgrænseflade til lavt niveau til enhed, der understøtter enhver ældre enhedstype og enhver ældre datasætorganisation. For at få adgang til alle enhedstyper og alle datasætorganisationer er den mere generelle Start Input / Output- grænseflade (STARTIO) tilgængelig i MVS / 370 og efterfølgende forekomster af OS, selvom det ikke er en officielt understøttet grænseflade.
Forenklet handling på datasæt med direkte adgang
En variation af EXCP er Execute Direct Access Program (XDAP), som kun bruges til at få adgang til direkte adgangslager og er beregnet til læsning og opdatering af eksisterende poster med direkte adgangslager. XDAP kan ikke bruges til at tilføje poster, men XDAP kan bruges sammen med BSAM eller BPAM til at foretage optagelse af poster til sådanne datasæt, og adskillige OS-komponenter bruger XDAP på denne måde (Linkage Editor, især IEWL).
Adgang til telekommunikationsenheder
EXCP kan også bruges til at få adgang til kommunikationsenheder, der er tilsluttet IBM 2701 , 2702 og 2703 kommunikationskontrollere og IBM 370x eller Amdahl 470x frontend-processorer (og deres respektive opfølgninger), der fungerer i emulator-tilstand (EP) eller partitioneret emulator-tilstand (PEP ).
Forholdet til vejlederen
EXCP's front-end er altid i Task Control Block (TCB) -tilstand. Den normale tilstand for applikationer, da EXCP er en type 1 SVC .
I MVS / 370 og efterfølgende forekomster af operativsystemet påkalder EXCP- processoren STARTIO for at planlægge udførelse af kanalprogrammet. Selvom EXCP-processorens back-end altid er i Service Request Block (SRB) -tilstand, indeholder back-enden emuleringskode, der gør det muligt for appendages, der er udviklet til tidligere, før-MVS-forekomster af OS, specifikt til EXCP, at fungere stort set som før og derved synes at være i TCB-tilstand, som disse vedhæng oprindeligt var designet til. Denne sondring kan komplicere konvertering af bestemte roll-your-own adgangsmetoder og applikationer til MVS.
Kanalprogrammer
System / 360-kanalprogrammer er en sekvens af kommandoer, der udføres af kanalen og I / O-enheden. Kanalprogrammer kan placeres hvor som helst i hovedlageret. Kanalprogrammet er en sekvens af Channel Command Words (CCW'er), som kan udføres sekventielt, medmindre en gren, kaldet Transfer In Channel (TIC), udføres, eller kanalen returnerer en statusmodifikator . Hver CCW er et dobbeltord (otte byte) som følger:
bit 0 7 8 31
+--------+-----------------------+
|Command | Data address |
+--------+-----------------------+
32 36 40 47 48 63
+------+---+--------+------------+
|Flags |000|reserved| count |
+------+---+--------+------------+
Six commands are defined, in the low-order bits of the command field (0-7). The high-order four (or six) bits are ''modifiers'' ('M') for some commands, or are ignored. The commands are:
0100 - Sense
1000 - Transfer in Channel (TIC)
1100 - Read backward
--01 - Write
--10 - Read
--11 - Control
Data-adressen (8-31) er 24-bit-adressen på et hovedlagerbufferområde, hvortil eller hvorfra dataene skal overføres.
Flagbitene (32-36) er defineret som følger:
| Bit | ID | Navn | Beskrivelse |
|---|---|---|---|
| 32 | CD | Kædedata | Brug lagerområdet, der er angivet i den næste CCW for at fortsætte denne kommando |
| 33 | CC | Kæde kommando | Udfør den næste sekventielle CCW, når denne kommando er afsluttet, hvis CC eller CD ikke er indstillet, kanalprogrammet afsluttes efter udførelse af denne kommando |
| 34 | SLI | Undertryk længdeangivelse | Ignorer forkert længde for denne kommando |
| 35 | SPRINGE | Springe | Undertryk dataoverførsel for denne kommando |
| 36 | PCI | Programstyret afbrydelse | Generer en afbrydelse, når denne kommando begynder at udføres |
Tællefeltet (48-63) angiver antallet af byte, der skal overføres med denne kommando.
Alle otte bit kommandoer, der starter I / O-operationer, sendes til enheden. "Modifikatorbitene specificerer for enheden, hvordan kommandoen skal udføres." For eksempel for IBM 2305 DASD kan skrivekommandoen ('MMMMMM01'BX) have følgende værdier:
| Bitværdi | Hexadecimal | Beskrivelse |
|---|---|---|
| 0001 1001 | '19'X | Skriv hjemmeadresse |
| 0001 0101 | '15'X | Skriv post 0 |
| 0001 0001 | '11'X | Slette |
| 0001 1101 | '1D'X | Skriv antal, nøgler og data |
| 0000 0001 | '01'X | Skriv speciel optælling, nøgle og data |
| 0000 0101 | '05'X | Skriv data |
| 0000 1101 | '0D'X | Skriv nøgle og data |
Bemærkninger
Referencer
- DFSMSdfp
- z / OS version 2 frigivelse 4 DFSMSdfp Advanced Services . IBM. August 2020. SC23-6861-40.
- ^ Reino Hannula (1974). Computere og programmering: En system / 360-370 assemblersprog tilgang . Houghton Mifflin. s. 431. ISBN 978-0-395-16796-0.
- ^ Gopal K. Kapur (1. januar 1970). IBM 360 Assembler Language Programming . John Wiley & Sons. s. 453–454, 456–459, 461 . ISBN 978-0-471-45840-1.
- ^ Robert H. Johnson (juni 1989). MVS: koncepter og faciliteter . Intertext-publikationer. s. 558. ISBN 978-0-07-032673-6.
- ^ "Kapitel 4. Udførelse af dine egne kanalprogrammer" (PDF) . z / OS version 2 frigivelse 4 DFSMSdfp Advanced Services (PDF) . IBM. August 2020. s. 151–210. SC23-6861-40.
- ^ IBM System / 360 Operativsystem System Programmeringsvejledning (PDF) . IBM. Marts 1967. C28-6550-2.
- ^ Gary A. Stotts (1. august 1990). DOS / VSE: Introduktion til operativsystemet . QED informationsvidenskab. s. 18. ISBN 978-0-89435-332-1.
- ^ DOS Supervisor og I / O-makroer (PDF) . IBM. GC24-S037-12.
- ^ Brugervejledning til IBM z / VSE version 6 version 1-systemmakroer (PDF) . IBM. 2015. SC34-2709-00.
- ^ DFSMSdfp , s. 199-200, EXCP og EXCPVR Tillæg .
- ^ DFSMSdfp , listen over autoriserede bilag (IEAAPP00) , pp = 201-202.
- ^ IGG = I / O Support komponent præfiks; 019 = Åben SVC-underkomponent; xx = underfunktion
- ^ a b Software AG. "Naturlig zIIP-behandling: TCB'er, SRB'er og enklaver" . Hentet 22. marts 2021 .
- ^ IBM Corporation (januar 1967). IBM System / 360-driftsprincipper (PDF) . s. 84-121 . Hentet 4. december 2019 .
- ^ IBM Corporation (august 1971). Referencehåndbog til IBM 2835 Storage Control og IBM 2305 Fixed Head Storage Module (PDF) . s. 17 . Hentet 5. december 2019 .