CMS-rørledninger - CMS Pipelines
![]() | |
| Paradigme | Dataflow programmering |
|---|---|
| Designet af | John P. Hartmann ( IBM ) |
| Udvikler | IBM |
| Først dukkede op | 1986 |
| Stabil frigivelse | 1.1.12 / 0012 / 2020-06-03 |
| Platform | IBM z Systems |
| OS | z / VM 7.1 |
| Internet side | http://vm.marist.edu/~pipeline |
| Påvirket af | |
| Rørledning (Unix) | |
CMS Pipelines implementerer pipeline- konceptet under VM / CMS- operativsystemet. Programmerne i en pipeline fungerer på en sekventiel strøm af poster. Et program skriver poster, der læses af det næste program i pipeline. Ethvert program kan kombineres med ethvert andet, fordi læsning og skrivning sker via en enhedsuafhængig grænseflade.
Oversigt
CMS Pipelines giver en CMS-kommando PIPE . Argumentstrengen til PIPE kommandoen er pipeline-specifikationen. PIPE vælger programmer, der skal køres, og kæder dem sammen i en rørledning til at pumpe data igennem.
Da CMS-programmer og hjælpeprogrammer ikke leverer en enhedsuafhængig stdin- og stdout- grænseflade, har CMS Pipelines et indbygget bibliotek med programmer, der kan kaldes i en pipeline-specifikation. Disse indbyggede programmer grænseflade til operativsystemet og udfører mange hjælpefunktioner.
Data om CMS er struktureret i logiske poster i stedet for en strøm af bytes. For tekstdata svarer en tekstlinje til en logisk registrering. I CMS-rørledninger sendes dataene mellem trinene som logiske poster.
CMS Pipelines- brugere udsender pipeline-kommandoer fra terminalen eller i EXEC-procedurer. Brugere kan skrive programmer i REXX, der kan bruges ud over de indbyggede programmer.
Eksempel
Et simpelt eksempel, der læser en diskfil, adskiller poster, der indeholder strengen "Hej", fra dem, der ikke gør det. De valgte poster ændres ved at tilføje strengen "Verden!" til hver af dem; de øvrige poster oversættes til store bogstaver. De to streams kombineres derefter, og posterne skrives til en ny outputfil.
PIPE (end ?)
< input txt
| a: locate /Hello/
| insert / World!/ after
| i: faninany
| > newfile txt a
? a:
| xlate upper
| i:
I dette eksempel < læser scenen inputdiskfilen og sender posterne til næste trin i pipelinen. Den locate fase adskiller indgangsstrømmen i to udgangsstrømme. Den primære output fra locate (poster, der indeholder Hello) sender posterne til insert scenen. Den insert fase ændrer input, som de er angivet i sine argumenter og passerer dem til sin udgang. Outputtet er forbundet til, faninany der kombinerer poster fra alle inputstrømme til dannelse af en enkelt outputstrøm. Outputtet skrives til den nye diskfil.
Den sekundære output fra locate (markeret med den anden forekomst af a: etiketten) indeholder de poster, der ikke opfyldte udvælgelseskriteriet. Disse poster oversættes til store bogstaver (efter xlate scenen) og overføres til den sekundære inputstrøm af faninany (markeret med den anden forekomst af i: etiketten).
Rørledningstopologien i dette eksempel består af to tilsluttede rørledninger. Den ende tegn (den ? i dette eksempel) adskiller de enkelte rørledninger i rørledningen sæt. Optegnelser læst fra inputfilen passerer gennem en af de to ruter i pipelintopologien. Fordi ingen af ruterne indeholder etaper, der skal buffere poster, sikrer CMS Pipelines , at poster når frem til faninany den rækkefølge, de passerer igennem locate .
Eksempelrørledningen præsenteres i 'portrætform' med de enkelte faser på separate linjer. Når en pipeline er skrevet som en CMS-kommando, skrives alle trin på en enkelt linje.
Funktioner
Konceptet med en simpel rørledning udvides på følgende måder:
- Et program kan definere en underrutinerørledning til at udføre en funktion på hele eller dele af dets inputdata.
- Et netværk af krydsende rørledninger kan defineres. Programmer kan være i flere rørledninger samtidigt, hvilket giver programmet adgang til flere datastrømme.
- Data, der sendes fra et trin til det næste, er struktureret som optegnelser. Dette gør det muligt for etaper at operere på en enkelt post uden behov for vilkårlig buffering af data for at scanne efter specialtegn, der adskiller de enkelte linjer.
- Stadier har normalt adgang til input-posten i lokaliseringstilstand og producerer output-records, før de forbruger input-recorden. Denne tilgang til låsetrin undgår ikke kun at kopiere data fra en buffer til den næste; det gør det også muligt at forudsige strømmen af poster i multi-stream rørledninger.
- Et program kan dynamisk omdefinere pipeline-topologien. Det kan erstatte sig selv med en anden rørledning, det kan indsætte et rørledningssegment før eller efter sig selv eller begge dele. Et program kan bruge data i pipelinen til at opbygge pipeline-specifikationer.
CMS Pipelines tilbyder flere funktioner til at forbedre programmets robusthed:
- En syntaksfejl i den samlede rørledningsstruktur eller i et hvilket som helst program får hele rørledningen til at blive undertrykt.
- Opstart af programmerne i pipeline og ressourceallokering koordineres af CMS Pipelines- afsenderen. Individuelle programmer kan deltage i denne koordinering for at sikre, at irreversible handlinger udsættes til et punkt, hvor alle programmer i rørledningerne har haft en chance for at bekræfte argumenterne og er klar til at behandle data. Når rørledningen afsluttes, sikrer afsenderen, at ressourcerne frigives igen.
- Fejl, der opstår, mens datastrømmen i rørledningen kan detekteres af alle deltagende programmer. For eksempel kan en diskfil muligvis ikke erstattes under sådanne omstændigheder.
Historie
John Hartmann fra IBM Denmark startede udviklingen af CMS Pipelines i 1980. Produktet blev markedsført af IBM som et separat produkt i 80'erne og integreret i VM / ESA i slutningen af 1991. Med hver frigivelse af VM blev CMS Pipelines- koden opgraderet som godt indtil det blev funktionelt frosset på 1.1.10 niveauet i VM / ESA 2.3 i 1997. Siden da har det seneste niveau af CMS Pipelines været tilgængeligt til download fra CMS Pipelines hjemmeside for brugere, der ønsker at udforske ny funktion.
Det nuværende niveau af CMS-rørledninger er inkluderet i z / VM- udgivelserne igen siden z / VM 6.4, der er tilgængelig siden 11. november 2016.
En implementering af CMS-rørledninger til TSO blev frigivet i 1995 som BatchPipeWorks i BatchPipes / MVS- produktet. Den opdaterede TSO-implementering har været tilgængelig som et servicetilbud fra IBM Denmark indtil 2010.
Begge versioner vedligeholdes fra en enkelt kildekodebase og kaldes almindeligvis CMS / TSO-rørledninger . Specifikationen er tilgængelig i forfatterens udgave.
Se også
Referencer
- ^ VM og VM-samfundet, Melinda Varian
- ^ CMS / TSO Pipelines Author's Edition Author's Edition
