Esegui programma canale - Execute Channel Program

Nei sistemi operativi mainframe IBM , Execute Channel Program ( EXCP ) è una macro che genera una chiamata di sistema , implementata come istruzione Supervisor Call , per l'accesso al dispositivo di basso livello, in cui il programmatore è responsabile di fornire un programma di canale —un elenco di dispositivi- comandi specifici (CCW)—da eseguire da canali I/O, unità di controllo e dispositivi. EXCP per OS/360 e successivi è descritto in modo più specifico nella Guida del programmatore del sistema operativo.; EXCP per DOS/360 e successivi è descritto più specificamente in DOS Supervisor e I/O Macros. Questo articolo riflette principalmente da OS/360 a z/OS ; alcuni dettagli sono diversi per TOS/360 e DOS/360 fino a z/VSE .

Specificare set di dati

Utilizzando EXCP, i dispositivi legacy e i set di dati legacy possono essere utilizzati con prestazioni relativamente elevate. I dispositivi EXCP vengono aperti (ovvero resi disponibili all'applicazione) specificando il Data Control Block (DCB) per OS e il DTFPH per DOS.

Specificare le operazioni di I/O

Per OS/360 fino a z/OS, il programma fornisce un Input/Output Block (IOB) a EXCP; se il programma esegue un EXCP su più IOB, il sistema li elabora nell'ordine in cui sono stati richiesti. Per DASD l'IOB include un indirizzo di ricerca, IOBSEEK , nel formato MBBCCHHR, dove M è l'estensione, BB è il bin per una cella di dati, CCHH è il cilindro e la testa e R è il numero di record.

appendici

Un elenco completo di appendici ( uscite nel contesto EXCP) consente ai programmi autorizzati di sovrascrivere o aumentare molti dei controlli di sicurezza del sistema e di integrità dei dati. La maggior parte di queste appendici è supportata per la compatibilità con le istanze precedenti del sistema operativo, ma le funzioni di molte sono state modificate o estese per MVS. Le appendici sono specificate nel DCB come gli ultimi due caratteri del nome del modulo IGG019xx, dove xx = da WA a Z9, inclusi. Questi nomi di modulo sono riservati per le appendici scritte dall'installazione. Qualsiasi altro nome del modulo IGG019xx è riservato per l'utilizzo da parte dei metodi di accesso IBM. Le appendici devono risiedere in SYS1.SVCLIB (SYS1.LPALIB in SVS o istanze successive del sistema operativo).

Integrità del set di dati

Normalmente, quando un programma OPEN apre un DCB per EXCP, OPEN crea un Data Extent Block (DEB) contenente ogni estensione per il primo volume del dataset associato; tuttavia, per il montaggio parallelo OPEN crea un DEB contenente tutte le estensioni per tutti i volumi. Ciascun DEB è concatenato in avanti e all'indietro al DCB ed EXCP controlla il concatenamento come misura di sicurezza del sistema, poiché il DCB risiede nella memoria utente non protetta mentre il DEB risiede nella memoria di sistema protetta, Subpool 253; in OS/VS1 e OS/VS2 EXCP utilizza DEBCHK per garantire che il DEB sia stato creato da OPEN. Per DASD, EXCP verifica che l'indirizzo di ricerca nell'IOB sia all'interno di una delle estensioni e utilizza un Set File Mask per indicare, ad esempio, se l'estensione è orientata al cilindro o alla traccia, se è consentita la scrittura; questo impedisce una ricerca fuori dalla traccia specificata (cilindro). Se il programmatore tenta di leggere oltre la fine della traccia (cilindro), si verifica un controllo dell'unità e il ripristino dell'errore riavvia il programma del canale con la traccia successiva (cilindro) dell'estensione corrente. Se l'operazione va oltre la fine dell'estensione, EXCP chiama l' appendice di fine dell'estensione , che può aggiornare l'IOB e richiedere che EXCP rieffettui la richiesta o che EXCP la termini.

Solo set di dati legacy

EXCP è talvolta confuso con un metodo di accesso al dispositivo di archiviazione ad accesso diretto, ma non è esclusivamente per i dispositivi di archiviazione ad accesso diretto; piuttosto, è un'interfaccia di accesso ai dispositivi di basso livello per scopi generici che supporta qualsiasi tipo di dispositivo legacy e qualsiasi organizzazione di set di dati legacy . Per accedere a tutti i tipi di dispositivi e a tutte le organizzazioni di set di dati, l' interfaccia Start Input/Output (STARTIO) più generale è disponibile in MVS/370 e nelle istanze successive del sistema operativo sebbene non sia un'interfaccia ufficialmente supportata.

Operazioni semplificate su set di dati ad accesso diretto

Una variante di EXCP è Execute Direct Access Program (XDAP), che viene utilizzato solo per accedere allo storage ad accesso diretto ed è fornito per leggere e aggiornare i record di storage ad accesso diretto esistenti. XDAP non può essere utilizzato per aggiungere record, ma XDAP può essere utilizzato insieme a BSAM o BPAM per effettuare aggiunte di record a tali set di dati e diversi componenti del sistema operativo utilizzano XDAP in questo modo (l'editor di collegamento, IEWL, in particolare).

Accesso ai dispositivi di telecomunicazione

EXCP può essere utilizzato anche per accedere ai dispositivi di comunicazione collegati ai controller di comunicazione IBM 2701 , 2702 e 2703 e ai processori front-end IBM 370x o Amdahl 470x (e i rispettivi follow-on) che operano in modalità emulatore (EP) o in modalità emulatore partizionato (PEP ).

Rapporto con il supervisore

Il front-end di EXCP è sempre in modalità Task Control Block (TCB), la modalità normale per le applicazioni, poiché EXCP è un SVC di tipo 1 .

In MVS/370 e nelle istanze successive del sistema operativo, il processore EXCP richiama STARTIO per pianificare l'esecuzione del programma del canale. Sebbene il back-end del processore EXCP sia sempre in modalità Service Request Block (SRB), il back-end contiene un codice di emulazione che consente alle appendici sviluppate per le precedenti istanze del sistema operativo pre-MVS, in particolare per EXCP, di funzionare ampiamente come prima e quindi apparire in modalità TCB, per la quale queste appendici sono state originariamente progettate. Questa distinzione può complicare la conversione di determinati metodi e applicazioni di accesso roll-your-own in MVS.

Programmi del canale

I programmi del canale System/360 sono una sequenza di comandi che vengono eseguiti dal canale e dal dispositivo I/O. I programmi dei canali possono essere posizionati ovunque nella memoria principale. Il programma del canale è una sequenza di parole di comando del canale (CCW), che può essere eseguita in sequenza a meno che non venga eseguito un ramo, chiamato Transfer In Channel (TIC), o il canale non restituisca un modificatore di stato . Ogni CCW è una doubleword (otto byte) come segue:

 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

L'indirizzo dati (8-31) è l'indirizzo a 24 bit di un'area buffer di memoria principale verso o dalla quale devono essere trasferiti i dati.

I bit di flag (32-36) sono definiti come segue:

Po ID Nome Descrizione
32 CD Dati della catena Usa l'area di archiviazione specificata nel prossimo CCW per continuare questo comando
33 CC Comando a catena Esegui il successivo CCW sequenziale al termine di questo comando
se CC o CD non sono impostati, il programma del canale termina dopo l'esecuzione di questo comando
34 SLI Sopprimere l'indicazione della lunghezza Ignora la lunghezza errata per questo comando
35 SALTA Salta Sopprimi il trasferimento dati per questo comando
36 PCI Interruzione controllata dal programma Genera un'interruzione quando questo comando inizia l'esecuzione

Il campo conteggio (48-63) indica il numero di byte da trasferire con questo comando.

Tutti gli otto bit dei comandi che avviano le operazioni di I/O vengono passati al dispositivo. "I bit di modifica specificano al dispositivo come deve essere eseguito il comando." Ad esempio, per IBM 2305 DASD il comando di scrittura ('MMMMMM01'BX) può avere i seguenti valori:

Valore bit Bit Esadecimale Descrizione
0001 1001 '19'X Scrivi l'indirizzo di casa
0001 0101 '15'X Scrivi record 0
0001 0001 '11'X Cancellare
0001 1101 '1D'X Scrivi conteggio, chiave e dati
0000 0001 '01'X Scrivi conteggio, chiave e dati speciali
0000 0101 '05'X Scrivi dati
0000 1101 '0D'X Scrivi chiave e dati

Appunti

Riferimenti

DFSMSdfp
z/OS Versione 2 Rilascio 4 Servizi avanzati DFSMSdfp . IBM. Agosto 2020. SC23-6861-40.
  1. ^ Reino Hannula (1974). Computer e programmazione: un approccio al linguaggio System/360-370 Assembler . Houghton Mifflin. pag. 431. ISBN 978-0-395-16796-0.
  2. ^ Gopal K. Kapur (1 gennaio 1970). Programmazione in linguaggio IBM 360 Assembler . John Wiley & Figli. pp.  453-454, 456-459, 461 . ISBN 978-0-471-45840-1.
  3. ^ Robert H. Johnson (giugno 1989). MVS: concetti e strutture . Pubblicazioni intertestuali. pag. 558. ISBN 978-0-07-032673-6.
  4. ^ "Capitolo 4. Esecuzione dei propri programmi di canale" (PDF) . z/OS Versione 2 Rilascio 4 Servizi avanzati DFSMSdfp (PDF) . IBM. Agosto 2020. pp. 151–210. SC23-6861-40.
  5. ^ Guida del programmatore del sistema operativo IBM System/360 (PDF) . IBM. Marzo 1967. C28-6550-2.
  6. ^ Gary A. Stotts (1 agosto 1990). DOS/VSE: Introduzione al sistema operativo . Scienze dell'informazione QED. pag. 18. ISBN 978-0-89435-332-1.
  7. ^ Supervisore DOS e macro I/O (PDF) . IBM. GC24-S037-12.
  8. ^ Guida per l'utente delle macro di sistema di IBM z/VSE versione 6 rilascio 1 (PDF) . IBM. 2015. SC34-2709-00.
  9. ^ DFSMSdfp , pp. 199-200, Appendici EXCP e EXCPVR .
  10. ^ DFSMSdfp , L'elenco delle appendici autorizzate (IEAAPP00) , pp=201-202.
  11. ^ IGG = prefisso del componente di supporto I/O; 019 = Sottocomponente SVC aperto; xx = sottofunzione
  12. ^ a b Software AG. "Elaborazione zIIP naturale: TCB, SRB ed enclavi" . Estratto il 22 marzo 2021 .
  13. ^ IBM Corporation (gennaio 1967). IBM System/360 Principi di funzionamento (PDF) . pp. 84-121 . Estratto il 4 dicembre 2019 .
  14. ^ IBM Corporation (agosto 1971). Manuale di riferimento per IBM 2835 Storage Control e IBM 2305 Fixed Head Storage Module (PDF) . pag. 17 . Estratto il 5 dicembre 2019 .