OpenVMS

Az OpenVMS – Open Virtual Memory System, 1991-től OpenVMS – a Digital Equipment Corporation eredetileg VAX architektúrára írt operációs rendszere (a Programmed Data Processor - PDP - architektúrán futó RSX utóda), mely nem hasonlít sem a Unixra sem más rendszerekre az RSX-en kívül. Később portolták Alpha-ra is, és elérhető ma már Intel Itanium platformon is. Az OpenVMS portját x86-64 architektúrára 2020 május 18-án adták ki.

Többfelhasználós, többprocesszoros, virtuális memóriát használó rendszer. A folyamatok prioritásának megfelelő beállítása esetén megközelíti a valós idejű rendszereket. Klaszterezéssel jó elérhetőséget ér el, egy rendszer képes egyidejűleg több fizikai számítógépen futni. Ez lehetővé teszi, hogy a rendszer képes legyen eltűrni egyes adatfeldolgozó egységek kiesését.

Régebbi neve VMS Operating System (VAX-11/VMS, VAX/VMS), és a Digital Equipment Corporation fejlesztette. A Digital Equipment Corporation utódja, a Hewlett-Packard 2014 közepén a VMS Software Inc. (VSI)-re bízta a rendszer további fejlesztését, és ehhez átengedte a korábbi gárdát is.

A forráskód szabadon elérhető, de a licence megtiltja például a weben történő elhelyezést. Külön telepíthető rá TCP/IP hálózat (6.0 alatti VMS-ek esetén a neve UCX, afölött TCP/IP), de a rendszer a legtökéletesebben a DECnet protokollt integrálja. Kaphatók rá egyéb TCP/IP stack-ek is, mint például a Cisco MultiNet.

Elérhető rá egy X Window System implementáció, amely a DECWindows névre hallgat. A régebbi VAX-11/VMS rendszereken nem volt grafikus felület. A DEC VAXstation 1980-as évekbeli megjelenése előtt szövegesen kezelték a bemenetet terminálokon, mint a VT100-on. A DEC Alpha munkaállomásokon futó VMS verziók az 1990-es években támogatták az OpenGL-t és az Accelerated Graphics Port (AGP) grafikus adaptereket.

Vállalatok, intézmények különböző célokra használják, mint e-mailszerver, hálózati kiszolgáló, nyomon követés és megfigyelés, kritikus alkalmazások és adatbázisok, és olyan környezetek, ahol fontos az állandó rendelkezésre állás és az adatok hozzáférhetősége. A klaszterezés és a gördülő frissítések lehetővé teszik, hogy a rendszer futás közben frissüljön, és új verziót telepítsen, miközben az adatokhoz bármikor hozzá lehet férni, és az alkalmazásokat sem kell leállítani. Az egyik adatközpont kiesése sem okoz nagy problémákat. Így a rendszer megállás nélkül futhat több, mint 10 évig.

Fő kiadások idővonala

Képességek
Az OpenVMS sok olyan képességgel bír, melyek most szabvány követelmények minden magas szintű szerver operációs rendszerrel szemben. Ezek közé tartozik:
Integrált hálózati támogatás (eredetileg DECnet, később TCP/IP)
Szimmetrikus, aszimmetrikus, NUMA multiprocesszoros támogatás, beleértve a klaszterezést is
Hierarchikus, sok képességgel ellátott fájlrendszer (Files-11)
Integrált adatbázis-rendszer, mint RMS, és relációs adatbázisok, mint Rdb, Oracle Database, MariaDB és PostgreSQL 
Több programnyelv támogatása
A különböző programnyelvek közötti hívások szabványos összekapcsolása
Bővíthető héj parancsnyelv (DIGITAL Command Language)
A processzorok hardver particionálása
Magas szintű biztonság

Grafikus felhasználói felület
Az OpenVMS a DECwindows Motif felhasználói interfészt használja, ami a CDE-n alapul, és az OpenVMS X11 felületén fut. A régebbi verziókon egy saját grafikus felhasználói felület működött, a VWS/UIS. Az Ultrix operációs rendszer is a DECwindows-t használta.

Klaszterezés
Az OpenVMS támogatja a klaszterezést, melyet először a VAXcluster, majd VMScluster valósított meg. A klaszterezés lényege, hogy több rendszer működik együtt, közösek az adattárak, a feldolgozás, a feladatsor és a nyomtatási sor. Az összekapcsolt egyes rendszerek, számítógépek a klaszter nódusai. Ezeket vagy a saját Cluster Interconnect vagy a szabvány LAN kapcsolja össze, ami többnyire Ethernet. Egy LAN alapú klaszter neve gyakran LAVc, ami az angol Local Area Network VMScluster rövidítése, és lehetővé teszi többek között egy esetlegesen lemez nélküli szatellit nódus indítását hálózaton keresztül a klaszter egy másik nódusának rendszerlemezével.

A VAXcluster támogatását a 4. verzióban vezették be, ami 1984-ben jelent meg. Ekkor még csak CI fölött lehetett klaszterezni. Később még a 4. verzióban bővítették a képességet a LAN (LAVC) klaszterezéssel, amit tovább javítottak az 1988-ban kiadott 5. verzióban.

A különböző technológiák és kapcsolódások keveredhetnek is, így használhatók Gigabit Ethernet (GbE), SCSI, FDDI, DSSI, CI és Memory Channel adapterek. Nemcsak a technológiák keveredhetnek, hanem architektúrák is, egy klaszter tartalmazhat VAX és Alpha, vagy Alpha és Itanium gépeket. Egy klaszterben legfeljebb 96 gép lehet. Egyes helyeken találhatók mindhárom architektúrát és akár 150 nódust tartalmazó klaszterek is, de ezek nem élvezik a HP támogatását.

Sok más klaszterezési megoldástól eltérően a VMScluster átlátható és teljesen elosztott írás-olvasást tesz lehetővé rekord szintű zárolással. Ez azt jelenti, hogy egy lemez, sőt egy fájl is elérhető egyszerre több nódusról írásra. A zárolás egyszerre csak egy rekordot zárol, ami adatbázisban egy rekord, szövegfájlban egy sor. Ez lehetővé teszi többszörös redundanciájú, nagy elérhetőségű adatbázisszerverek létrehozását.

Egy klaszter 500 mérföldes távolságot hidalhat át, ami lehetővé teszi, hogy egy városban több telephely, sőt több városban levő telephelyek is ugyanahhoz a klaszterhez tartozzanak.

A host alapú tükrözés megengedi, hogy több controller és host között tükrözzenek köteteket, amivel a környezet katasztrófák ellen is ellenállhat.

Az elosztott zárkezelés (DLM) elérhető az alkalmazások programozói számára, így az alkalmazások a teljes klaszteren koordinálhatják erőforrásaikat és aktivitásukat. Ide tartozik a fájlszintű koordináció is, de az erőforrások és aktivitások tetszőlegesek lehetnek.

A 2010-ben kiadott OpenVMS V8.4 továbbfejlesztett klaszterezést használ, például megvalósítja az ipari szabvány TCP/IP hálózatot a klaszterekben a hatékonyság növelésére.

A gördülő frissítések és a több rendszerlemez támogatott képességével a klaszterek működés közben lépésenként frissíthetők. Ennek köszönhetően a klaszter folytathatja a kiszolgálást, miközben egyes nódusokon a programok, vagy a rendszer új verziója települ.

Fájlrendszer
Az OpenVMS egy képességekben gazdag fájlrendszerrel bír, ami támogatja az adatfolyam és a rekord alapú I/O-t, az ACL-eket (ellenőrzött hozzáférési listák), és a fájlok verziószámozását. A fájlkezeléssel a felhasználónak az Record Management Services-sel, röviden RMS-sel kell kapcsolatba lépnie.

Időmérés
Az OpenVMS a rendszeridőt 64 bites számként tartja nyilván, ami 100 nanoszekundumokat mér; ez az időegység az angolban a clunk nevet viseli, és amiből egy másodpercben tízmillió van. Az időszámítás kezdete 1858. november 17. nappalát megelőző éjfél, ami a módosított Julián-naptár kezdete. Az óra nem minden gépen frissül 100 ns-onként; például a 100 Hz-es időzítőjű rendszerek a másodperc századrészenként adnak 100000-t az aktuális időhöz. Az operációs rendszer az időmérés hibáit korrigálja azzal, hogy néha külső szabványidőhöz igazítja a rendszeridőt.

Leállításkor az aktuális időt a Time-of-Year ("TOY") hardveróra menti el. Ez kisebb felbontásban emlékszik az időre, talán másodperc pontossággal, és kisebb pontossággal 0,025% a 0,01% helyett. Újraindításkor a VMS 64 bites rendszeridejét a hardveróra és az utolsó feljegyzett év alapján állítja be. 
A 64 bites rendszeridő előjeles szám. Ez pozitív, ha az időt pontosan lehet tudni, és negatív, ha nem. Ez elég lenne, hogy az óra elszámoljon egészen a 31-JUL-31086 02:48:05.47 időpontig. Ekkor a számláló tólcsodrulna, és a számítás nulláról indulna újra, azaz az óra visszaállna az 1858. november 17. nappalát megelőző éjfélre. Azonban például a C programkönyvtár órája már 2038. január 19-én lejár, ez a 2038-probléma. Egyes mezőhosszhoz kötődő komponensek és alkalmazások 10000-ben fognak meghibásodni, ez a 10000-probléma.

Programozás
Az OpenVMS legfontosabb adottságai közé tartozik a Common Language Environment, ami egy pontosan definiált szabvány. Ez meghatározza a függvények és rutinok hívásának konvencióit, a vermeket, regisztereket és hasonlókat, függetlenül a nyelvtől. Emiatt az egyik nyelven írt rutin egyszerűen hívhat egy másik nyelven írt rutint, a megvalósítás részleteinek ismerete nélkül. Az OpenVMS rendszert is több nyelv felhasználásával készítik, főként Bliss, VAX Macro és C nyelven. A szabvány azonban más nyelveket is támogat, mint például Ada, PL/I, Fortran és BASIC. Ez szembeállítható a UNIX rendszerekkel, melyek majdnem egészen C-ben készültek.

Ezt a környezetet az OpenVMS Calling Standard és az OpenVMS Programming Concept kézikönyv írja le. Ezek kevert nyelvű hívásokat, továbbá nyelvspecifikus futás idejű könyvtárakat (RTL), és rendszerszolgáltatás rutinokat. A nyelvspecifikus futás idejű könyvtárakat felhasználói módú megosztott képekkel valósították meg, a rendszerszolgáltatás rutinok pedig az operációs rendszer részei, egy részükhöz többletjogok szükségesek. A különbségtétel a nyelvek, nyelvspecifikus futás idejű könyvtárak és rendszerszolgáltatások között eredetileg tiszta volt, de ez a programerózió áldozatává vált, azaz összemosódott.

A Macro32 assembler az OpenVMS VAX-on, a többi architektúrán fordító. Elérhető az OpenVMS-ben a rendszer részeként. BLISS fordítók letölthetők, ahogy Perl, PHP, Ruby és más nyelvek is. Az OpenVMS nyújt Java SE környezetet. C, Fortran és további nyelvek fizetősek.

Különböző eszközök és segédletek elérhetők, és léteznek add-on nyelvek és eszközök.

Az OpenVMS FAQ sok programozási példát tartalmaz.

Habár az OpenVMS kereskedelmi operációs rendszer, 1997-től kezdve számos terméket ingyenesen bocsátottak nem kereskedelmi célú használatra a felhasználók rendelkezésére az OpenVMS Hobbyist Program keretében. Azóta több vállalat is kiadott hasonló feltételekkel használható termékeket, mint a Process Software és az MVP Systems.

2011-től kezdve a HP elkezdte felügyelni ezt a licenszet, a regisztrációt egyszerűsítették, és megőrizték ingyenességét. A regisztrációtól a Product Authorisation Keys megkapásáig többnyire egy munkanap telik el. A termékek FTP-vel tölthetők le; korábban CD-ken lehetett őket megkapni, amit akár el is lehetett adni. A folyamat nem automatikus, a HP Hobbyist Program csapatának közreműködése szükséges.

A VMS-hez hasonló, nyílt forrású FreeVMS fejlesztése folyamatban van, ami L4 mikrokernellel támogatja az x86-64 architektúrát is. 2010-ig nem jelent meg.

A Living Computer Museumban más történelmi számítógépes rendszerek mellett fenntart egy VAX 11/785 számítógépet is, ami OpenVMS 7.3-mal működik.

Debuggolás
A VMS Debugger támogat minden DEC fordítót és sok más nyelvet. Breakpointok, watchpointok és interaktív futás idejű program debuggolás végezhető parancssorból vagy grafikus felhasználói interfészen keresztül.

Szabványos be- és kimenetek
A UNIX rendszerekhez hasonlóan a VMS is definiál szabványos be- és kimeneteket. Logikai nevük és szerepük a következő:
 SYS$INPUT: Szabványos bemenet. Interaktívan használva a billentyűzet megfelelője. Kötegfájlban használva, ha a sorokat nem előzi meg a $ szimbólum, vagy egy bemeneti fájl, amit a DECK paranccsal lehet megadni.
 SYS$OUTPUT: Szabványos kimenet. Interaktívan használva a képernyő, terminál megfelelője. Kötegfájlban használva lehet továbbra is a képernyő, ha interaktív módban fut; vagy log fájl, nem interaktív módban.
 SYS$ERROR: Szabványos kimenet. Interaktívan használva a képernyő, terminál megfelelője. Kötegfájlban használva lehet továbbra is a képernyő, ha interaktív módban fut; vagy esetleg a kimenettől különböző log fájl, nem interaktív módban. A RUN /DETACH speciális esetben az /ERROR= paraméterben adható meg.
 SYS$COMMAND: Nincs analóg megfelelője UNIX rendszerekben. Interaktívan használva a terminálból olvas. Interaktív módban, kötegfájlban is a terminálból olvas. Nem interaktív módban a SYS$INPUT fájlból olvas, vagy fájl vége jelet olvas.

Biztonság
Az OpenVMS különböző biztonsági képességeket és mechanizmusokat nyújt, köztük biztonsági azonosítókat, forrás azonosítókat, alrendszer azonosítókat, ACL-eket, részletes biztonsági vizsgálatokat és figyelmeztetéseket. A specifikus verziókat a DoD NCSC Class C2 értékeli ki, és a SEVMS biztonság bővített szolgáltatástámogatás az NCSC Class B1-nél az NCSC Rainbow Series által. Az OpenVMS betartja az ITSEC E3 értékelést, lásd NCSC és Common Criteria./ A jelszavakat Purdy polinommal hasheli.

A VAX/VMS és az Alpha VMS-ben 2017-ben egy 33 éves sebezhetőséget találtak. Ez lehetővé tette, hogy bárki, aki hozzáfér a DCL parancssorhoz egy alapértelmezetten beállított rendszerben megkerülheti a biztonsági eszközöket és teljes ellenőrzése alá vonhatja a rendszert. A CVE-szám CVE-2017-17482.

Keresztplatformos alkalmazások
Az OpenVMS támogatja a következő ipari szabványokat, illetve nyílt forrású eszközöket és alkalmazásokat:

 Samba (CIFS)
 Apache HTTP Server
 Apache Tomcat
 Zip/Unzip (Info-Zip)
 GNU Privacy Guard (gpg)
 Perl
 Ruby
 Lua
 PHP
 git (mint vgit)
 Subversion
 MariaDB
 PostgreSQL (hivatalosan nem támogatott) 
 Apache ActiveMQ
 MQTT, mint Mosquitto (MQTT broker) és Paho-C (MQTT kliens)
 ZeroMQ
 SWIG
 cURL és libcurl

Alkalmazható ipari szabványok
Az OpenVMS Software Product Description szerint a rendszer következő szabványoknak felel meg:

 ANSI X3.4-1986: ASCII
 ANSI X3.22-1973/FIPS 3-1: Magtape, 800 BPI NRZI
 ANSI X3.27-1987/FIPS 79: Magtape, Labels és Volume Structures
 ANSI X3.39-1986/FIPS 25: Magtape, 1600 BPI PE
 ANSI X3.40-1983: Magtape, unrecorded
 ANSI X3.41-1974: ASCII 7-bit vezérlősorozatok
 ANSI X3.42-1975: Numerikus értékek karakterstringekben
 ANSI X3.54-1986/FIPS 50: Magtape, 6250 BPI GCR
 ANSI X3.131-1986/ISO 9316(1989): SCSI-1
 ANSI X3.131-1994/ISO 10288(1994): SCSI-2
 ANSI/IEEE 802.2-1985: logikai link kontroll
 ANSI/IEEE 802.3-1985: Ethernet CSMA/CD
 FIPS 1-2: Code for Information Interchange; ide tartoznak még ANSI X3.4-1977(86)/FIPS 15; ANSI X3.32-1973/FIPS 36; ANSI X3.41-1974/FIPS 35; FIPS 7
 FIPS 16-1/ANSI X3.15-1976: Soros Comms Bit Sequencing; FED STD 1010
 FIPS 22-1/ANSI X3.1-1976: Synch jelzés DTE/DCE comms; FED STD 1013
 FIPS 37/ANSI X3.36-1975: Synch High-Speed signaling for DTE/DCE comms; GIPS 1001
 FIPS 86/ANSI X3.64-1979: További vezérlők az ASCII számára
 ISO 646: ISO 7-bit Kódolt karakterkészlet az információcseréhez
 ISO 1001: Magtape, Labels és Volume szerkezetek
 ISO 1863: Magtape, 800 BPI NRZI
 ISO 1864: Magtape, unrecorded / NRZI and PE
 ISO 2022: Kódkiterjesztések az ISO 646 számára
 ISO 3307: Idő és dátum zeprezentációk
 ISO 3788: Magtape, 1600 BPI PE
 ISO 4873: 8-bites karakterkódok
 ISO 5652: Magtape, 6250 BPI GCR
 ISO 6429: Vezérlősorozatopk
 ISO 9660: CD-ROM kötet- és fájlszerkezetek

Dokumentáció
A Digital Equipment Corporation OpenVMS operációs rendszerének dokumentációja dokumentálja az Orange Binders, Large and Small-t is.
A dokumentáció foglalkozik a különböző kiadásokkal, és különféle alapvető OpenVMS rétegzett termékekkel, a HPE oldalán Interneten is elérhető: https://www.hpe.com/us/en/servers/openvms/documents.html

A Software Product Descriptions (SPD) bevezető és jogi leírás különböző termékekhez, leírja a támogatott képességeket is. Az OpenVMS és sok OpenVMS alapú program SPD-je: http://h41379.www4.hpe.com/doc/spd.html#SPD/

Az OpenVMS Frequently Asked Questions (FAQ) az OpenVMS-sel kapcsolatban tartalmaz információkat: http://www.hoffmanlabs.org/vmsfaq/

Szoftvertámogatás
Az aktuális kiadás az OpenVMS 8.4-2L1 (Hudson), a korábbi OpenVMS V8.4-1H1 Integrity szerverek számára, OpenVMS V8.4 az Alpha számára és OpenVMS V7.3 a VAX szerverek számára.

A HP Current Version Support (CVS) és Prior Version Support (PVS) támogatást nyújt különböző verziók számára. Az OpenVMS Roadmap PVS státust garantált 2012-ig speciális kiadásoknak (V5.5-2, V5.5-2H4, V6.2, V6.2-1H3, V7.3-2), azzal, hogy a támogatás megszűnését 24 hónappal előre jelzi. CVS támogatást az aktuális és az eggyel korábbi verzió kap.

2014 július 31-én a VMS Software, Inc. (VSI) bejelentette, hogy a HP a VSI-t nevezte meg, mint az OpenVMS és a rárétegzett termékkomponensek egyedüli fejlesztőjét. Az első VSI verzió a VSI OpenVMS Version 8.4-1H1 (Bolton) lett, ami 2015 június 1-jén jelent meg. Ettől kezdve a legújabb Itanium hardvereket is támogatni fogja a rendszer, és a VSI ígérete szerint ez minden kiadásra teljesülni fog az aktuális legújabb rendszerrel. Az x86 architektúrájú szerverek támogatásának kezdetét 2018-ra tervezték. A VSI amellett, hogy megkapta a fejlesztőcsapatot, az OpenVMS fejlesztésében jártas régi fejlesztők közül is toborzott tagokat. A központot Massachusettsben rendezték be.

Szójegyzet az OpenVMS-hez
Az OpenVMS-sel kapcsolatban leggyakrabban előkerülő szavak és kifejezések:

 ACMS – A Digital tranzakciófeldolgozó (TP) rendszere, gyakran az DECdtm-mel együtt használva, ami elosztott tranzakciókezelő rendszerszolgáltatás az OpenVMS komponenseihez, tavábbá a DECformshoz és az Rdb termékekhez a tranzakciókat igénylő alkalmazásokhoz 
 Asynchronous System Trap (AST)
 Command Language Interface (CLI) – könyvtári rutinok a VMS parancssori paraméterek feldolgozásához
 DECforms – A Digital által fejlesztve, a Forms Management System utódja
 DECnet – Digital saját hálózati architektúrája, magába foglalja a MOP-ot is.
 DELTA és XDELTA – OpenVMS debuggerek
 DIGITAL Command Language (DCL) – Digital Command Language (parancssori értelmező)
 DECwindows – Az X Window System Digital általi megvalósítása
 Event flag – egyszerű szinkronizációs mechanizmus mechanism
 Files-11 – alacsony szintű fájlrendszer
 File Description Language (FDL) – fájlrekord/mezőszerkezet definiálása
 Forms Management System (FMS) – a Digitalelső generációs nyelv-független Form vezérlő
 Local Area Transport (LAT) – LAN alpú, nem routolható kommunikációs protokoll a DEC és más Terminal Serverek támogatására
 QIO – Queued Input Output; alacsony szintű I/O interfész
 Oracle Rdb – SQL az OpenVMS-hez; eredetileg a DEC fejlesuztette, de most az Oracle tulajdona
 Record Management Services (RMS) – magas szintű, nyelv- és eszközfüggetlen input/output
 Futásidejű könyvtárak (RTL) – megosztott rutinok és függvények, bármely nyelvből hívhatók
 OpenVMS Galaxy – OS-szintű virtualizációs megvalósítások, amelyek az OpenVMS mellé tehetők; a rendszerparticionálás egy formája
 OpenVMS Clusters – klaszterezés, a redundanciához, inkrementális frissítésekhez, hardvercseréhez, katasztrófatűréshez
 System 1032 (S1032) – kiváló performanszú adatbáziskezelő rendszer, melyet az OpenVMS felhasználói közösségéhez terveztek. Egyes vállalatok ezt használták az 1980-as és 1990-es, években, de ma már ritka.
 XQP – az eXtended QIO Processor (XQP), ami a VMS 3.3-tól megvalósítja a Files-11 fájlrendszert

Hatása
A VMS bizonyos tekintetben a Windows NT, az RSX-11 és a Dave Cutler által fejlesztett DEC Prism operációs rendszer elődje. Erről maga Cutler írt a Helen Custer által írt Inside Windows NT előszavában.

További információk  
 DeathRow OpenVMS Cluster (VMS shell ingyen és bérmentve)
 OpenVMS fejlesztői környezet DEC Alpha, VAX–11 és IA-64 gépeken
 OpenVMS HELP oldalak 
 VMS jegyzet magyarul

Jegyzetek

Fordítás

Operációs rendszerek
Hewlett-Packard
Digital Equipment Corporation