CMS pipelines
Paradigm | Dataflödesprogrammering |
---|---|
Designad av | John P. Hartmann ( IBM ) |
Utvecklare | IBM |
Dök först upp | 1986 |
Stabil frisättning | 1.1.12/0012 / 2020-06-03 |
Plattform | IBM z Systems |
OS | z/VM 7.1 |
Hemsida | http://vm.marist.edu/~pipeline |
Influerad av | |
Pipeline (Unix) |
CMS Pipelines är en funktion i VM/CMS- operativsystemet som gör att man kan skapa och använda en pipeline . Programmen i en pipeline fungerar på en sekventiell ström av poster. Ett program skriver poster som läses av nästa program i pipeline. Vilket program som helst kan kombineras med vilket annat eftersom läsning och skrivning sker via ett enhetsoberoende gränssnitt.
Översikt
CMS Pipelines tillhandahåller ett CMS-kommando, PIPE
. Argumentsträngen till PIPE
är pipelinespecifikationen. PIPE väljer program att köra och kopplar ihop dem i en pipeline för att pumpa data igenom.
Eftersom CMS-program och verktyg inte tillhandahåller ett enhetsoberoende stdin och stdout- gränssnitt, har CMS Pipelines ett inbyggt bibliotek med program som kan anropas i en pipelinespecifikation. Dessa inbyggda program gränssnitt till operativsystemet och utför många verktygsfunktioner.
Data på CMS är strukturerad i logiska poster snarare än en ström av byte. För textdata motsvarar en textrad en logisk post. I CMS Pipelines skickas data mellan stegen som logiska poster.
CMS Pipelines- användare utfärdar pipelinekommandon från terminalen eller i EXEC-procedurer. Användare kan skriva program i REXX som kan användas utöver de inbyggda programmen.
Exempel
Ett enkelt exempel som läser en diskfil, skiljer poster som innehåller strängen "Hello" från de som inte gör det. De valda posterna ändras genom att lägga till strängen "World!" till var och en av dem; de andra posterna översätts till versaler. De två strömmarna kombineras sedan och posterna skrivs till en ny utdatafil.
PIPE (slut ?) < input txt | a: lokalisera /Hej/ | infoga / World!/ efter | jag: faninany | > nyfil txt a ? a: | xlate övre | jag:
I det här exemplet läser steget <
indataskivan och skickar posterna till nästa steg i pipelinen. Lokaliseringssteget separerar ingångsströmmen i två utströmmar .
Den primära utgången för lokalisera
(poster som innehåller Hello) skickar posterna till infogningssteget
. Insert -
steget modifierar indataposterna som specificerats i dess argument och skickar dem till sin utgång. Utgången är ansluten till faninany
som kombinerar poster från alla ingångsströmmar för att bilda en enda utström. Utdata skrivs till den nya diskfilen.
Den sekundära utmatningen av lokalisera
(markerad med den andra förekomsten av etiketten a:)
innehåller de poster som inte uppfyllde urvalskriteriet. Dessa poster översätts till versaler (av xlate-
steget) och skickas till den sekundära ingångsströmmen av faninany
(markerad av den andra förekomsten av i:
-etiketten).
Rörledningstopologin i detta exempel består av två sammankopplade rörledningar. Sluttecknet ( ?
i det här exemplet) separerar de enskilda pipelines i pipelineuppsättningen . Poster som läses från indatafilen passerar endera av pipelinetopologins två vägar. Eftersom ingen av rutterna innehåller etapper som behöver buffra poster, säkerställer CMS Pipelines att poster anländer till faninany
i den ordning som de passerade genom locate
.
Exemplet på pipeline presenteras i "porträttform" med de enskilda stegen på separata rader. När en pipeline skrivs som ett CMS-kommando skrivs alla steg på en enda rad.
Funktioner
Konceptet med en enkel pipeline utökas på följande sätt:
- Ett program kan definiera en subrutinpipeline för att utföra en funktion på hela eller delar av dess indata.
- Ett nätverk av korsande rörledningar kan definieras. Program kan finnas i flera pipelines samtidigt, vilket ger programmet tillgång till flera dataströmmar.
- Data som skickas från ett steg till nästa är strukturerat som poster. Detta tillåter steg att arbeta på en enda post utan att det inte behövs godtycklig buffring av data för att skanna efter specialtecken som skiljer de enskilda raderna åt.
- Stadier kommer normalt åt ingångsposten i lokaliseringsläge och producerar utdataposterna innan de konsumerar indataposten. Denna låsstegsmetod undviker inte bara att kopiera data från en buffert till nästa; det gör det också möjligt att förutsäga flödet av poster i flerströmspipelines.
- Ett program kan dynamiskt omdefiniera pipelinetopologin. Den kan ersätta sig själv med en annan pipeline, den kan infoga ett pipelinesegment före eller efter sig själv, eller både och. Ett program kan använda data i pipeline för att bygga pipelinespecifikationer.
CMS Pipelines erbjuder flera funktioner för att förbättra programmens robusthet:
- Ett syntaxfel i den övergripande pipeline-strukturen eller i ett program gör att hela pipelinen undertrycks.
- Start av programmen i pipeline och allokering av resurser koordineras av CMS Pipelines dispatcher. Enskilda program kan delta i den samordningen för att säkerställa att oåterkalleliga åtgärder skjuts upp till en punkt där alla program i pipelines har haft en chans att verifiera argumenten och är redo att bearbeta data. När pipelinen avslutas ser avsändaren till att resurserna frigörs igen.
- Fel som uppstår medan dataflödet i pipeline kan upptäckas av alla deltagande program. Till exempel kanske en diskfil inte ersätts under sådana omständigheter.
Historia
John Hartmann, från IBM Danmark, startade utvecklingen av CMS Pipelines 1980. Produkten marknadsfördes av IBM som en separat produkt under 80-talet och integrerades i VM/ESA sent 1991. Med varje release av VM uppgraderades CMS Pipelines- koden som väl tills den frystes funktionellt på 1.1.10-nivån i VM/ESA 2.3 1997. Sedan dess har den senaste nivån av CMS Pipelines varit tillgänglig för nedladdning från CMS Pipelines hemsida för användare som vill utforska nya funktioner.
Den nuvarande nivån av CMS Pipelines ingår i z/VM -utgåvorna igen sedan z/VM 6.4, tillgänglig sedan 11 november 2016.
En implementering av CMS Pipelines för TSO släpptes 1995 som BatchPipeWorks i BatchPipes/MVS- produkten. Den uppdaterade TSO-implementeringen har varit tillgänglig som ett tjänsteerbjudande från IBM Danmark fram till 2010.
Båda versionerna underhålls från en enda källkodsbas och brukar kallas CMS/TSO Pipelines . Specifikationen finns tillgänglig i Author's Edition.
Se även
- ^ VM och VM-gemenskapen, Melinda Varian
- ^ CMS/TSO Pipelines Author's Edition Author's Edition