OpenVMS

OpenVMS (edo VMS, Virtual Memory System) memoria birtualean oinarritutako sistema eragilea da, multierabiltzailea eta multiprozesatzailea. Denbora banatzeko, loteka prozesatzeko, transakzioak prozesatzeko eta lan-estazioetako aplikazioetarako diseinatuta dago. OpenVMS erabiltzen duten bezeroak bankuak, finantza-zerbitzuak, ospitaleak eta osasun-arreta, telekomunikazio-operadoreak, sareko informazio-zerbitzuak eta industria-fabrikatzaileak izan ohi dira. 1990eko eta 2000ko hamarkadetan, gutxi gorabehera milioi erdi VMS sistema zeuden martxan mundu osoan.

Digital Equipment Corporation (DEC) enpresak kaleratu zuen lehen aldiz, VAX/VMS (Virtual Address eXtension/Virtual Memory System) izenarekin, VAX-11/780 miniordenagailuarekin batera 1977an.   Gerora, DEC Alpha sistemetan, Itanium-en oinarritutako HPE Integritate Zerbitzarietan, x86-64 hardwarean eta hiperbistetan exekutagarri izateko eraldaketak egin zitzaizkion OpenVMSri. 2014az geroztik, VMS Software Inc. (VSI) enpresak garatzen eta mantentzen du OpenVMS.  OpenVMS bereziki ahaltsua da konputagailuen multzo handiekin jarduteko (klusterrak), hau da, sistema hainbat makina fisikotan banatzeko. Horri esker, klusterretan exekutatzen diren aplikazioak eta haien datuak eskuragarri egon daitezke uneoro, nahiz eta sistema eragilearen softwarea edo hardwarea mantentze-lanetan edo eguneratzen egon edo klusterraren zati bat suntsitu. 17 urte baino gehiago martxan egon diren VMS klusterrak ezagutzen dira.

Historia

Jatorria eta izen aldaketak 

1975eko apirilean, Digital Equipment Corporation-ek bere PDP-11 ordenagailu-linearako 32 biteko luzapena diseinatzeko proiektuari ekin zion. Hardwarearen osagaiari Star kode-izena jarri zitzaion; sistema eragileari aldiz, Starlet. Roger Gourd izan zen VMS proiektuaren buru. Dave Cutler, Dick Hustvedt eta Peter Lipman software ingeniariek proiektu teknikoen arduradun gisa jardun zuten.  Star eta Starlet proiektuen azken emaitza VAX-11/780 ordenagailua eta VAX/VMS sistema eragilea izan ziren. Starlet proiektuaren kode-izenak bizirik dirau VMS sistemaren hainbat liburutegietan, STARLET. OLB eta STARLET. MLB-en, adibidez. VMS gehienbat VAX MACROn mihiztadura-lengoaian idatzi zen, baina zenbait osagai BLISS programazio-lengoaian idatzi ziren.

VMSren lehenengo helburuetako bat DECek lehendik garatu zuen RSX-11M sistema eragilearekin bateragarri izatea lortzea zen. V3.0 kaleratu baino lehen, VAX/VMSk RSX Application Migration Executive (RSX AME) izeneko bateragarritasun-geruza bat zuen, eta horri esker, RSX-11M softwarea VMSren gainean aldaketarik gabe exekutagarri egon zen. RSX AMEk rol garrantzitsua jokatu zuen VAX/VMSren lehen bertsioetan, izan ere, RSX-11Mren erabiltzaile-moduko zenbait baliabide berrerabili egin ziren VAX/VMSn, berarentzako jatorrizko bertsioak argitaratu arte. V3.0 bertsioa atera zenean, berrerabiltzen ziren baliabide guztiak VAX/VMSrentzako inplementatutakoek ordezkatu zituzten. VAX/VMS V4.0n, RSX AME oinarrizko sistematik kendu zen, eta VAX-11 RSX izeneko produktu batek ordezkatu zuen.

VAX/VMSren honako banaketak garatu ziren:

 MicroVMS: MicroVAX eta VAXstation hardwarerako diseinatutako VAX/VMSren banaketa, garai hartako VAX sistema handienek baino memoria eta disko espazio txikiagoa zituena.  MicroVMS-ek VAX/VMS hainbat baliabide-multzotan banatu zuen, era horretan, bezeroak bere eskakizun zehatzetara egokitu zezakeen VAX/VMS sistema, baliabideen azpimultzo bat instalatuz. MicroVMS bertsioak VAX/VMSren V4.x bertsio bakoitzerako kaleratu ziren VAX/VMS V5.0 kaleratu zen arte.
 Mahaigaineko-VMS: VAXstation sistemekin batera saldu zen VAX/VMSren banaketa bat izan zen, iraupen laburrekoa. CD-ROM gisa saldu zen eta VMS, DECwindows, DECnet, VAXcluster-entzako euskarria eta erabiltzaile ez-teknikoentzat diseinatutako konfigurazio prozesu bat zituen.  Mahaigaineko-VMS CDtik zuzenean exekuta zitekeen edo disko gogor batean instalatu.  Mahaigaineko-VMSk bere bertsio-eskema propioa zuen V1.0etik hasita, VMSren V5.x bertsioei zegokiona.
 MOS VP ( 'Multifunctional Operating System with Virtual Memory'): VAX/VMSen oinarritutako banaketa ez-ofiziala (  'Funtzio anitzeko sistema eragilea memoria birtu Articles containing Russian-language text alarein'):  1980ko hamarkadan Sobietar Batasunean sortu zen VAX klon hardwarearen SM 1700 linearao.   MOS  VPalfabeto zirilikorako euskarria txertatu zuek softwarean eta erabiltzailearen interfazearen zatiak errusierara itzuli zituen.     MicroMOS VP izenaz ezagutzen ziren MicroVMSren antzeko banaketa k(   ) edo MOS-3M   ) ere sortu ziren errusieraz eta alfabeto zirilikoarekin.
Sistema eragileak
Sistema operatibo jabedunak
X86-64 sistema eragileak
Konputazio paraleloa
1988ko apirilean V5.0 bertsioa kaleratu ondoren, VAX/VMS izendatzeko VMS erabiltzen hasi zen DEC bere dokumentazioan. 1992ko uztailean, OpenVMS izenaz berrizendatu zuen, software irekiko industriako estandarrak betetzen zituela adierazteko, horien artean POSIX eta Unixekiko bateragarritasuna, eta VAXekiko konexioa bertan behera utzi zuen beste arkitektura baterako migrazioa egiten ari zelako. OpenVMS izena OpenVMS AXP V1.0 bertsioarekin erabili zen lehen aldiz 1992ko azaroan. 1993ko ekainean hasi zen OpenVMS VAX izena erabiltzen, V6.0 bertsioa argitaratzean.

Alpha arkitekturara eramatea 

1980ko hamarkadan, DECek VAX plataforma eta VMS sistema eragilea PRISM arkitektura eta MICA sistema eragilearekin ordezkatzea pentsatu zuen. 1988an proiektu horiek bertan behera utzi zituztenean, talde bat sortu zen RISCen oinarritutako Unix sistemen pareko errendimenduko VAX/VMS sistema berriak diseinatzeko. VAXekin bateragarria zen prozesadore azkarrago bat diseinatzeko saiakerak porrot egin ostean, taldeak VMS eta bere aplikazioak PRISMen oinarritutako RISC arkitekturara eramatea bideragarria zela frogatu zuen. Horrela sortu zen Alpha arkitektura. VMS Alphara eramateko proiektua 1989an hasi zen, eta Alpha EV3n oinarritutako Alpha Demonstration Unit prototipo batean abiarazi zen lehen aldiz 1991eko hasieran.  

VMS eta VAX batera diseinatu izana oztopo handia izan zen VMS beste arkitektura batera eramaterako orduan, izan ere, VAX arkitekturaren xehetasun batzuen mende zegoen VMS. Gainera, VMSren nukleoa, geruzetako produktuak eta bezeroek garatutako aplikazioak neurri handi batean VAX MACROren mihiztadura-kodean inplementatu ziren. VMS VAX arkitekturatik banatzeko egindako aldaketen artean MACRO-32 konpiladorea sortu zen, VAX MACRO goi-mailako lengoaia gisa tratatzen zuena, eta Alpha objektu-kodera konpilatzen zuena. Konpilatzaileak VAX arkitekturaren behe-mailako zenbait xehetasun emulatzen zituen PALcoden, adibidez, etenen kudeaketa eta ilara atomikoen gaineko aginduak.

VMS Alphara eramateak bi kode-oinarri desberdinen sorrera ekarri zuen: bata VAXerako eta bestea Alpharako. Alpha koderako liburutegia VAX/VMSren aurreko kode-oinarri batean oinarritu zen, V5.4-2 bertsiokoan gutxi gorabehera. 1992an Alpha AXP sistemetarako OpenVMSren lehen bertsioa kaleratu zen, OpenVMS AXP V1.0 izenarekin. 1994an, OpenVMS V6.1 bertsioa kaleratzean, VAX eta Alpha aldaeren arteko funtzionalitate (eta bertsio-zenbaki) parekotasuna lortu zen, Baliokidetasun Funtzionala (ingelesez, Functional Equivalence) izenaz egin zen ezagun bertsioa. OpenVMS AXPren ekoizpen aurreko kalitate-argitalpenen bertsioak 1.x moduan izendatzeak nahasmena sortu zuen bezero batzuengan, eta hurrengoetarako aldatu egin zen bertsioak izendatzeko modua. 

VMS Alphara eraman zenean, hasieran 32 biteko sistema eragile gisa argitaratu zen. Horri esker, 32 biteko VAXetan idatzitako softwarearekin bateragarritasuna bermatu zen. Alpharako 64 biteko helbideratzea lehen aldiz V7.0 bertsioan gehitu zen. 64 biteko kodea 32 biteko kode zaharragoekin erabili ahal izateko, OpenVMSk ez du bereizketarik egiten 32 biteko eta 64 biteko exekutagarrien artean, horren ordez, 32 biteko eta 64 biteko erakusleak erabiltzeko aukera ematen du kode berean. Hori dela eta, erakusle mistoetarako euskarria eskaintzen duela esaten da. 64 biteko OpenVMS Alpha bertsioek 8TB-ko gehienezko helbideratze-espazio birtuala onartzen dute (43 biteko helbideratze-espazioa), hau da, Alpha 21064-ek eta Alpha 21164-ek onar dezaketen handiena.

OpenVMSen, Alpha-rako bakarrik existitzen zen funtzionalitate aipagarrienetako bat OpenVMS Galaxy zen. Hark, OpenVMSren hainbat instantzia aldi berean exekutatu ahal izateko, SMP zerbitzari bakar baten partizio logikoa sortzeko aukera ematen zuen. Abian zeuden partizioetan baliabideen esleipen dinamikoa egitea onartzen zuen Galaxy-k, eta partizioen artean memoria partekatzeko gaitasuna ere eskaintzen zuen.

Intel Itanium-era eramatea 
2001ean, Hewlett-Packard-ek erosi aurretik, OpenVMS Intel Itanium arkitekturara eramango zuela iragarri zuen Compaq-ek. Alpha arkitekturaren garapenarekin ez segitzea eta horren ordez, garai hartan berria zen Intel Itanium arkitekturarako migrazioari ekin zion horrela Compaq-ek. Migrazioa 2001aren amaieran hasi zen, eta lehenengo abiatzea 2003ko urtarrilaren 31n egin zen. Lehen abiatze hartan, sistemaren konfigurazio minimo bat jarri zen martxan HP i2000 lan-estazio batean, erabiltzaile moduan SYSTEM erabiliz eta DIRECTORY agindua exekutatuz.  Itanium-erako OpenVMSk HPE Integrity Servers-en eredu eta konfigurazio espezifikoak onartzen zituen. Itanium-erako bertsioei hasieran, HP OpenVMS Industry Standard 64 for Integrity Servers izena eman zitzaien, baina OpenVMS I64 edo OpenVMS for Integrity Servers izenak maizago erabiltzen ziren. 

Itaniumerako migrazioa Alpharako kodearen liburutegiarekin batera mantendutako iturburu-kodea erabiliz egin zen, baldintzazko kodea eta modulu gehigarriak gehituta, Itaniumerako egindako aldaketa espezifikoak zehazteko. OpenVMSk arkitekturarekiko zituen hainbat mendekotasun ordeztu edo software bidez emulatu egin behar izan ziren. Egin behar izan ziren aldaketa batzuk hauek dira:  sistema eragilea abiarazteko Extensible Firmware Interface (EFI) erabiltzea, Alpha PALcode-k nukleoaren barruan aurrez emandako funtzionalitatea berrezartzea, artxibo exekutagarrietarako formatu berriak erabiltzea  (Executable and Linking Format eta DWARF), eta koma mugikorrerako IEEE 754 formatua lehenestea.

VAXetik Alpharako migrazioan bezala, Alphatik Itaniumerako urratsean ere itzultzaile bitar bat erabili zen, iturburu-kodea birkonpilatzea posiblea ez zen egoeretan OpenVMS Alpha softwarea Itaniumera eramateko. Itzultzaile horrek Alpha Environment Software Translator (AEST) izena du, eta VAXerako exekutagarrien itzulpenerako ere erabil zitekeen, aldez aurretik VEST bidez itzuli ondoren.

Aurreprodukziozko bi bertsio, OpenVMS I64 V8.0 eta V8.1, eskuragarri egon ziren 2003ko ekainaren 30ean eta abenduaren 18an. Bertsio horiek HP erakundeentzat eta OpenVMS I64-ra software-paketeak migratzeaz arduratzen ari ziren hornitzaileentzat ziren. Lehen produkzio-bertsioa, V8.2, 2005eko otsailean argitaratu zen. V8.2 bertsioa ere argitaratu zen Alpharako, OpenVMSren ondorengo V8.x bertsioek Alpha eta Itanium arkitekturetarako ezaugarriak mantendu dituzte.

x86-64ra eramatea
VMS Software Inc. (VSI) enpresak HPren eskutik OpenVMS sistema eragilea garatzeko eskubideak lortu zituztela iragarri zuenean, OpenVMS x86-64 arkitekturara eramateko asmoa zuela adierazi zuen. Migraziorako ahalegina enpresa ezartzearekin batera egin zen, baita Itanium eta Alpha arkitekturetarako OpenVMS V8.4-x bertsioetarako VSIren garapen propioak sortzearekin batera ere.

x86-64rako migrazioa HPE eta Dell-en zerbitzari espezifikoetarako egin zen, baita makina birtualen hiperbisore batzuetarako ere.  Hasierako euskarria Kernel-based Virtual Machine (KVM)-erako eta VirtualBox-erako egin zen. VMware-rako euskarria 2020an iragarri zen, eta Hyper-V etorkizuneko helburu gisa finkatu zuten. 2021ean egiaztatu zen x86-64-rako migrazioak Intel Atom-en oinarritutako ordenagailu batean funtzionatzen zuela.

Alpha-rako eta Itanium-erako migrazioekin bezala, x86-64-ra eramatean ere zenbait aldaketa egin ziren plataforma berrian eramangarritasuna eta OpenVMSren euskarria sinplifikatzeko: VMS konpilatzaileek erabiltzen zuten atzeko GEM konpilatzaile jabeduna LLVM konpilatzaileaz ordeztu,; abiatze-prozesua aldatu, OpenVMSren abiatzea memoria-disko batetik egiteko eta OpenVMSren lau pribilegio-mailak software bidez simulatu; izan ere, x86-64ko pribilegio-mailetako bi bakarrik erabil zitzakeen OpenVMSk. 

Lehen abiatzea 2019ko maiatzaren 14an iragarri zen. Horrek OpenVMS VirtualBox-en abiatzea esan nahi zuen eta DIRECTORY komandoa arrakastaz exekutatzea.  2020ko maiatzean, V9.0 Early Adopter's Kit bertsioa bezero gutxi batzuen eskura jarri zen. Horretarako, OpenVMS sistema eragilea VirtualBox makina birtualean martxan jarri zen muga batzuekin. Garrantzitsuenak, geruza-produktu gutxi jarri zirela eskuragarri, eta kodea x86-64rako soilik konpilatu daitekeela, Itaniumen oinarritutako OpenVMS sistemekin funtzionatzen duten zeharkako konpiladoreak erabiliz. V9.0ren ondoren, VSIk hainbat eguneratze egin zituen hilero edo bi hilean behin, funtzionalitate gehigarriak eta hiperbisoreetarako euskarria eransteko. Bertsioak V9.0-A-tik V9.0-H-ra izendatuak izan ziren.. 2021eko ekainean, VSIk V9.1 Field Test kaleratu zuen, VSIren bezero eta bazkideentzat.  V9.1 bertsioa ISO irudi gisa eskaintzen da eta hainbat hiperbisoretan instala daiteke, V9.1-A bertsiotik aurrera baita HPE ProLiant DL380 zerbitzarietan ere. 

x86-64-rako OpenVMS 9.2 bertsioak eskuragarritasun orokorra lortu du 2022ko uztailaren 14an.

Eragina
1980ko hamarkadan, PRISM arkitekturarako MICA sistema eragilea VMSren behin-behineko ondorengoa izatea espero zen. VMS aplikazioekin bateragarri izateko diseinatu zen MICA, eta baita Ultrix aplikazioetarako euskarria emateko ere, nukleo beraren gainean. Azkenean, MICA bertan behera geratu zen, PRISM plataformaren gainerakoarekin batera, eta, horren ondorioz, Dave Cutler-ek DEC utzi zuen Microsoftera joateko. Microsoften, Cutler izan zen Windows NT sistema eragilearen sorrera gidatu zuena, neurri handi batean MICAren arkitekturan inspiratuta. Hori dela eta, Windows NT-ren asaba moduan hartzen da VMS, RSX-11rekin, VAXELN-rekin eta MICA-rekin batera; antzekotasun handia dago VMSren eta NTren artean.

VMSren arauei jarraituz, kode irekiko sistema eragile bat garatzeko egitasmoa izan zen, FreeVMS izeneko proiektua, baina gaur egun ez dago indarrean. L4 microkernel-aren gainean eraikia dago eta x86-64 arkitekturan erabil daiteke. Microkernel-etan oinarritutako arkitekturak erabiliz VMSren inplementazioak sortzeko ikerketak egin zituzten DECeko langileek Carnegie Mellon Unibertsitatearen laguntzarekin, VAXstation 3100 hardwarera migratutako Mach 3.0 mikrokernela erabiliz, eta arkitekturarako eredu multi-zerbitzaria erabiliz.

Arkitektura

OpenVMS sistema eragileak geruza-arkitektura bat du, pribilegioak dituen Executive geruza dago, tarteko-mailako baimenak dituen komandoen interpretatzailea (Command Language Interpreter) eta pribilegiorik gabeko erabilgarritasunak eta exekuziorako liburutegiak (run-time libraries, RTLs)). Pribilegiorik gabeko kodeak sistemaren zerbitzuak (beste sistema eragile batzuetako sistema-deien baliokideak) erabiliz Executive-ren funtzionaltasuna martxan jartzen du.

OpenVMSren geruzak eta mekanismoak VAX arkitekturaren ezaugarri batzuen inguruan eraikitzen dira, hala nola:

 Prozesadorera iristeko lau modu izatea (Kernel, Executive, Supervisor eta User izenekoak, pribilegio handienekotik txikienekora). Modu bakoitzak bere pila du, eta memoria-orri bakoitzak memoria-babes espezifikoak izan ditzake.
 Helbide birtualetarako espazioa, bi atal bereizten dituena: prozesuetarako espazio pribatua eta sistemaren espazioa, prozesu guztietarako komuna dena.
 Etenetarako 32 lehentasun-maila, sinkronizaziorako erabiltzen direnak.
 Desbiderapen asinkronoak (asynchronous system trap) hardware-euskarria prozesuen esku jartzeko.
VAX arkitekturaren mekanismoak Alpha-rako, Itanium-erako eta x86-64-rako inplementatuta daude, arkitektura horien hardware-mekanismoetara mapeatuz, edo emulatuz (Alphan PALcode bidez, edo Itanium-en eta x86-64-en softwareen bidez).

Executive-a eta Kernel-a
OpenVMSren Executive atalak pribilegiodun kodea eta sistemaren espazioan dauden datu-egiturak biltzen ditu. Executive, gainera, bitan banatzen da: Kernel-a, nukleoa atzitzeko moduan exekutatzen den kodea, eta nukleotik kanpoko kodea, pribilegio gutxiagokoa eta exekutiboa atzitzeko moduan exekutatzen dena.

Exekutiboa atzitzeko moduan funtzionatzen duten Executive-ko osagaien artean erregistroak kudeatzeko zerbitzuak (ingelesez, Record Management Services) eta sistemaren zenbait zerbitzu daude, hala nola irudiak aktibatzea. Nukleoa eta exekutiboa atzitzeko moduen arteko diferentzia nagusia da sistema eragilearen datu-egitura zentral gehienak exekutibotik irakur daitezkeela, baina idazteko nukleorako atzipen modua behar dela. Exekutibo-moduan exekutatzen ari den kodea nukleo-moduan exekutatzera pasa daiteke, hala nahi bada. Ustekabeko akatsen kontrako babes gisa bereizten dira bi moduak.

Kernel-ak edo nukleoak sistema eragilearen funtsezko datu-egiturak (orrien taulak, sarrera/irteera eta planifikazio-datuak) eta egitura horietan eragiten duten errutinak biltzen ditu. Nukleoak hiru azpisistema nagusi ditu: sarrera/irteera, prozesuen planifikazioa eta denboraren zein memoriaren kudeaketa. Gainera, beste funtzio batzuk ere betetzen ditu, hala nola izen logikoen kudeaketa, sinkronizazioa eta sistemaren zerbitzuen banaketa.

Pribilegio egokiak dituen erabiltzaile-moduko kodeari exekutibo-modura edo nukleo-modura aldatzen uzten dio OpenVMSk, $CMEXEC eta $CMKRNL sistemaren zerbitzuak erabiliz, hurrenez hurren. Horri esker sistemaren espaziotik kanpo dagoen kodeak zuzeneko atzipena izango du Executive-ko errutinetara eta sistemaren zerbitzuetara. Gainera, sistema eragilearen oinarrizko zerbitzuek pribilegiodun irudiak erabiltzen dituzte, dokumentatu gabeko interfazeen bidez sistema eragilearen datu-egiturak manipulatzeko.

Fitxategi-sistema
Erabiltzaileek eta aplikazioek fitxategi-sistemarekin eragiteko modu ohikoena Erregistroak kudeatzeko zerbitzuak (Record Management Services, RMS) prozedurak erabiltzea da, nahiz eta aplikazioek azpiko fitxategi-sistemarekin zuzenean eragin dezaketen S/Iko ilaren (Queue I/O, QIO) zerbitzuen bidez. VMSk onartzen dituen fitxategi-sistemak Files-11 On-Disk Structures (ODS) izenez ezagutzen dira, eta garrantzitsuenak ODS-2 eta ODS-5 dira.  ISO 9660 CD-ROMetako eta zinta magnetikoetako (ANSI zinta-etiketa dutenak) fitxategiak atzitzeko ere gai da VMS.

2TB bolumenera mugatuta dago Files-11. DEC hura ordezten saiatu zen log-structured file system moduko fitxategi-sistema batekin. Spiralog izena zuen eta 1995ean merkaturatu zen lehen aldiz. Hala ere, Spiralog-en garapena eten egin zen hainbat arazoren ondorioz. Horren ordez, kode irekiko GFS2 fitxategi-sistema OpenVMSra eramatearen eztabaida sortu zen.

Komendoen Iterpretatzailea (Command Language Interpreter)
OpenVMSren Command Language Interpreter (CLI) komando-lerroko interfaze baten inplementazioa da; komandoen (aginduen) eta komando-prozeduren (shell script-en edo batch-fitxategien baliokideen) exekuzioaz arduratzen da. OpenVMSrako CLI estandarra  DIGITAL Command Language da, baina beste aukera batzuk ere badaude.

Unixeko shell-etan ez bezala (normalean, beren prozesu isolatuan exekutatzen dira, eta beste edozein erabiltzaile-moduko programek bezala jokatzen dute), OpenVMSko CLIak prozesu baten hautazko osagaia dira, eta prozesu horrek exekuta dezakeen edozein irudi exekutagarrirekin batera doaz. Unix-eko shell-ak normalean exekutagarriak exekutatuko ditu fork-exec bidez aparteko prozesu bat sortuz, baina OpenVMSren CLIak normalean prozesu berean kargatuko du irudi exekutagarria, kontrola irudiari pasako dio eta kontrola berriro CLIari pasako diola ziurtatuko du, irudiaren exekuzioa amaitu eta prozesua jatorrizko egoerara itzuli denean.

CLIa erabiltzailearen kodearen helbide-eremu berean kargatzen denez, eta CLIak irudiaren aktibazioa eta exekuzioa eskatzeko ardura duenez, CLIa prozesuen helbideen espazioan mapatzen da supervisor edo ikuskatzaile atzipen-moduarekin (erabiltzaile-kode gehienek dutena baino pribilegio-maila altuagoarekin). Hala, CLIren kodea eta datu-egiturak erabiltzaile-moduko kodearen bidez nahi gabe edo maltzurkeriaz manipulatzea saihesten da.

Ezaugarriak

Clustering-a edo konputagailuen multzokatzea 
OpenVMSk clusteringa onartzen du (hasieran VAXcluster eta gerora VMScluster moduan ezagutu zena), hau da, ordenagailu ezberdinek sistema eragilearen instantzia propioa exekutatzea onartzen du. Clustering-ean parte hartzen duten ordenagailuak (nodoak) erabat independenteak izan daitezke haien artean edo posiblea da, baita ere, gailu batzuk partekatzea, hala nola, disko gogorrak, inprimagailuak, gailu zehatz batzuen kontrolagailuak, etab. Nodoen arteko komunikazioak sistemaren irudiaren abstrakzio bakarra (ingelesez SSI, Single System Image) eskaintzen du. Nodoak elkarren artean konektatuta egon daitezke hardware-konexio jabedun baten bidez (Cluster Interconnect) edo Ethernet konexio estandar baten bidez.

OpenVMSk kluster batean 96 nodora arte onartzen ditu. Arkitektura mistoko klusterrak ere onartzen ditu (VAX, Alpha eta Itanium konputagailuek arkitektura desberdinak dituzte). OpenVMS clusterretan aurreikusitako edo aurreikusi gabeko etenaldi bat gertatuz gero, aplikazioek normaltasunez funtziona dezakete. Aurreikusitako etenaldiak hardware eta software eguneratzeak izan daitezke, adibidez.

Saretzea 
DECnet protokolo-multzoa VMSn integratuta dago xehetasun osoz eta horri esker sare bidez urrunetik saioa has daiteke VMS sistemetan, urrunetik fitxategietarako sarbidea lortu edo inprimagailuak erabili, besteak beste. VMSren bertsio modernoek DECnet IV faseko protokolo tradizionala onartzen dute, baita OSIrekin bateragarria den V fasea ere (DECnet-Plus izenez ere ezaguna). TCP/IP protokoloa ere onartzen du OpenVMSk, baldin eta OpenVMSrako TCP/IP Zerbitzuak produktua instalatuta badago (hasieran VMS/ULTRIX izena jarri zitzaion, ondoren ULTRIX Communications Extensions edo UCX).  SSH, DHCP, FTP eta SMTP protokoloetarako euskarria ere badu OpenVMSk, denak ere, BSD sare-pilaren ataka batean oinarrituak daudenak.  

DECek PATHWORKS izeneko software pakete bat saldu zuen (hasieran PCSA edo Personal Computer Systems Architecture izenez ezaguna) MS-DOS, Microsoft Windows, OS/2 edo Apple Macintosh erabiltzen zuten ordenagailuak VMS sistemetako terminal gisa erabili ahal izateko edo VMS sistemak fitxategien edo inprimagailuen zerbitzari moduan erabiltzeko. Gerora, Advanced Server for OpenVMS izena eman zitzaion PATHWORKS-i (OpenVMSrako zerbitzari aurreratua), eta Itanium arkitekturarako migrazioa egin zen garaian Samba-ko VMS ataka batez ordezkatua izan zen.

DECek Local Area Transport (LAT) protokoloa eskaintzen zuen, eta horri esker urruneko terminal eta inprimagailuak VMS sistemetara konekta zitezkeen terminalen zerbitzarien bidez, DECserver familiako baten bidez, adibidez.

Programazioa 
DECek (eta lekukoa hartu zioten enpresek) VMSn programazio-lengoaia ugari erabiltzeko aukera eman zuen. VMSn ofizialki onartzen diren lengoaiak, gaur egungoak edo garai batekoak  , hauek dira: VAX MACRO, BLISS, C, DCL, Fortran, Pascal, COBOL, BASIC, C++, Java, Common Lisp, APL, Ada, PL/I, DIBOL, CORAL, OPS5, RPGII, MUMPS, MACRO-11, DECTPU, VAX SCAN.

OpenVMSren ezaugarri aipagarrienetako bat Common Language Environment (euskaraz, Lengoaien Ingurune Komuna) da, zorrozki definitutako estandarra, funtzioei eta errutinei dei egiteko arauak zehazten dituena eta gainera, programazio-lengoiaren araberakoak ez diren pila, erregistro etab.en erabilera zehazten duena. Horri esker, lengoaia batean idatzitako errutina bati (Fortran-en, adibidez) beste batetik (COBOL-en idatzitakotik, adibidez) deitzea posiblea da, beste programazio-lengoaiaren xehetasunak ezagutzeko beharrik gabe. OpenVMS bera lengoaia askotan inplementatuta dago, baina Lengoaien Ingurune Komunari eta deietarako estandarrari esker, lengoaia horiek guztiak konbinatu ahal izatea lortzen da. DECek Egituren Definiziorako Lengoaia (ingelesez, Structure Definition Language, SDL) izeneko tresna sortu zuen, lengoaia ezberdinetatik erabiliko ziren datu-egituren definizioak erazagupen komun batetik sortzeko.

Garapenerako tresnak 

DECek softwarea garatzeko tresnen bilduma bat argitaratu zuen DECset izeneko produktu batean (jatorriz VAXset izenekoa). Bilduma horren baitan honakoak zeuden: Lengoaiarekiko Sentikorra den Editorea (ingelesez Language-Sensitive Editor, LSE) izeneko editore bisuala OpenVMSrako bereziki garatua, bertsioen kontrolerako sistema bat (Code Management System, CMS), kode-fitxategietatik fitxategi exekutagarriak sortuz programen exekuzioa ahalbidetzeko sistema bat (Module Management System, MMS), softwarearen analisi estatikoa egin eta programa exekutatu gabe bere zuzentasuna aztertzeko sistema bat (Source Code Analyzer, SCA), programen eraginkortasuna aztertzeko sistema bat programaren analisi dinamikoa egin ondoren haren exekuzio-denborei buruzko azterketak egiteko balio duena (Performance and Coverage Analyzer, PCA) eta programen proba kasuak exekutatzeko laguntza ematen zuen sistema bat (Digital Test Manager , DTM). Horrez gain, testu-editore batzuk ere sartu ziren, besteak beste, EDT, EVE eta TECO.

OpenVMS Debugger araztaileak DECen konpilatzaile guztiak onartzen ditu, baita beste hainbat programazio-lengoaia ere. Eten-puntuen eta zaintza-puntuen bidezko arazketa egiteko gai da eta gainera, programa exekutatzen den bitartean ere egin daiteke arazketa modu interaktiboan, komando-lerroa edo erabiltzailearen interfaze grafikoa erabiliz. Behe-mailako araztaileak ere badaude, DELTA eta XDELTA, kode arrunta arazteaz gain pribilegio bereziko kodea ere arazteko.

2019an, VSIk garapen-ingurune integratu bat kaleratu zuen VMSrako, Visual Studio Code-n oinarritua. Horri esker, urrunetik garatu eta araztu daitezke VMS aplikazioak Microsoft Windows, macOS edo Linux lan-estazioetatik.

Datu-baseen kudeaketa 
DECek datu-baseak kudeatzeko hainbat produktu sortu zituen VMSrako, eta horietako batzuk VAX Information Architecture izeneko familiaren baitan merkaturatu ziren. Produktu horiek honakoak zituzten:

 Rdb: Datu-base erlazionala, hasiera batean jabegodun Relational Data Operator (RDO) kontsulta-interfazea erabiltzen zuena baina gerora SQL  erabiltzera igaro zena.
 DBMS: Datu-baseak kudeatzeko sistema, CODASYL sare-eredua eta Data Manipulation Language (DML) erabiltzen dituena.
 Digital Standard MUMPS (DSM): programazio-lengoaia integratua eta gako-balio motako datu-basea.
 Common Data Dictionary (CDD): datu-base eskemen biltegi zentral bat, aplikazio ezberdinen artean datu-baseen eskemak partekatzeko eta programazio-lengoaia ezberdinetan erabiltzeko datu-definizioak sortzeko aukera ematen duena.
 DATATRIEVE: RMS fitxategietatik eta Rdb eta DBMS datu-baseetatik datuak atzitzeko gaitasuna duen kontsultarako eta txostenak egiteko tresna.
 Application Control Management System (ACMS):  transakzioak prozesatzeko monitorea, goi-mailako Task Description Language (TDL) lengoaia erabiliz aplikazioak sortzeko aukera ematen duena. Transakzio baten urratsak DCL aginduak edo Common Language Environment prozedurak erabiliz inplementa daitezke. Erabiltzailearen interfazeak inplementa daitezke TDMS, DECforms edo Digital-en ALL-IN-1 ofimatika produktua erabiliz. 
 RALLY, DECadmire - Datu-baseetan babestutako aplikazioak sortzeko laugarren belaunaldiko programazio-lengoaiak (fourth-generation programming languages, 4GLs).  DECadmire ACMSrekin integratu zen, eta gerora Windows PCrako Visual Basic erabiltzen duten bezero-zerbitzari aplikazioak sortzeko euskarria gehitu zion.

1994an, Rdb, DBMS eta CDD Oracle enpresari saldu zizkion DECek, eta gaur egun enpresa horrek produktu horien garapenarekin segitzen du. 1995ean, DSM InterSystems enpresari saldu zion DECek. InterSystems-ek Open M izena jarri zion, baina azkenean bere Caché produktuarekin ordezkatzea erabaki zuen.

Aipatutakoez gain, datu-baseak kudeatzeko sistema hauek ere erabil daitezke OpenVMSn: MariaDB, Mimer SQL eta System 1032.

Erabiltzaile-interfazeak 

Hasieran, testuan oinarritutako DECen terminaletan modu interaktiboan erabiltzeko eta kudeatzeko diseinatu zen VMS (DECen VT100 terminalean edo DECwriter seriekoetan, adibidez). 1984an VAXstation lerroa aurkeztu zenetik, VMS erabiltzaile-interfaze grafikoetan erabil zitekeen lan-estazioetan eta X terminaletan (VT1000 seriekoetan, adibidez).

Testuan oinarritutako erabiltzaile-interfazeak 
OpenVMS sistema eragilearen lehen bertsioa argitaratu zenetik, DIGITAL Command Language (DCL) izan da haren agindu bidezko lengoaiaren interpretatzaile nagusia (Command Language Interpreter, CLI). Hala ere, badira VMSrako beste agindu bidezko interpretatzaile ofizial batzuk, hala nola, RSX-11 MCR (VAXen bakarrik) eta hainbat Unix shell. Gainera, DECek hainbat tresa argitaratu zituen testuetan oinarritutako erabiltzaile-interfazeetarako aplikazioak garatzeko, adibidez, Form Management System (FMS) eta Terminal Data Management System (TDMS), gerora DECforms-ek ordezkatuko zituena. Behe-mailako interfaze bat ere bazegoen, Screen Management Services (SMG$) izenekoa, Unix-erako curses-en antzekoa.

Erabiltzaile-interfaze grafikoak (GUI) 
Urteetan zehar, VMSk hainbat GUI interfaze eta tresna erabili ditu:

 VMSren jatorrizko interfaze grafikoa VMS Workstation Software (VWS) izan zen, 1984ean VAXstation I-erako sortu zen leiho-sistema jabeduna. User Interface Services (UIS) izeneko API bat zuen. VAX hardware sorta mugatu batean funtzionatzen zuen.
 1989an, DECek X11n oinarritutako leiho-sistema berri batez ordezkatu zuen VWS: DECwindows. VAX/VMS V5.1 bertsioan erabiltzeko eskaini zen lehen aldiz. DECwindows-en lehen bertsioek X User Interface (XUI) izeneko tresna-sorta baten gainean eraikitako interfazea izan zuten. UISX izeneko produktu bat ere eskaini zen, VWS/UIS aplikazioak DECwindows-en exekutatu ahal izateko. Ondoren, Open Software Foundation-ek XUI-ren zatiak erabili zituen, Motif tresna-sorta garatzeko.
 1991n, DECek XUIren ordez Motif tresna-sorta erabiliz DECwindows Motif sortu zuen. Horren ondorioz, OpenVMS V6.0 bertsioan Motif Window Manager bihurtu zen lehenetsitako DECwindows interfazea bihurtu zen, nahiz eta XUI leiho kudeatzailea aukera moduan erabilgarri mantendu zen.
 1996an, DECwindows Motif-erako New Desktop interfazea argitaratu zuen DECek OpenVMS V7.1 bertsioarekin, Common Desktop Environment-en (CDE) oinarritua. Alpha eta Itanium sistemetan, saioa hastean oraindik ere hauta daiteke MWMn oinarritutako erabiltzaile-interfaze zaharragoa ("DECwindows Desktop" izenez ezagutzen dena). New Desktop ez zen inoiz OpenVMSren VAX bertsioetara eraman.

90eko hamarkadan, DEC-Alpha lan-estazioetan exekutatzen ziren VMSren bertsioek OpenGL eta Advanced Graphics Port (AGP) grafikoetarako egokitzaileak erabiltzeko aukera eman zuten. Estandar grafiko zaharragoetarako euskarriak ere eskaintzen ziren, hala nola GKS eta PHIGS. DECwindows-en bertsio modernoak X.Org Server-en oinarritzen dira.

Segurtasuna 
OpenVMSn ez dira gutxi segurtasuna bermatzeko tresnak eta mekanismoak, horien artean, segurtasun-identifikatzaileak, baliabide-identifikatzaileak, azpisistema-identifikatzaileak, access-control list-ak (ACL), intrusioen detekziorako sistema, segurtasunaren auditoriak eta alarmak, besteak beste. Estatu Batuetako Trusted Computer System Evaluation Criteria (TCSEC) irizpideen arabera, C2 klasean kokatzen da OpenVMV (hau da, fidagarritasun maila ertainekoa) eta indartutako segurtasuna duen SEVMS bertsioa B1 klasean (fidagarritasun maila altukoa). Sistema informatikoen segurtasun-maila neurtzeko ITSEC eskalan E3 baloratioa du OpenVMSk (E0 izanik balorazio baxuena eta E6 altuena) (ikus National Computer Security Center (NCSC) eta Common Criteria). Pasahitzen hash-ak Purdyren polinomioa erabiliz lortzen dira.

Ahuldadeak 

 VMSren lehen bertsioetan, pribilegiodun erabiltzaile-kontu batzuk zeuden (SYSTEM, FIELD, SYSTEST eta DECNET barne). Kontu horiek lehenetsitako pasahitzak zituzten eta sistemaren kudeatzaileek sarritan  ez zituzten pasahitz horiek aldatzen. Hainbat konputagailu har sortu ziren, WANK harra eta Father Christmas harra kasu, kontu horien pasahitzak lortu eta DECnet sareetara sartzeko. V5.0 bertsioan kontu horiei ez zitzaien lehenetsitako pasahitzik jarri eta, harrezkero, sistemaren konfigurazioa egitean kontu horietarako pasahitzak zehaztu behar izan zituzten erabiltzaileek nahitaez.
 2017an, ahuldade bat atzeman zen VAX eta Alpha arkitekturetako VMSn, 33 urtez inor konturatu gabe egon zena, eta CVE ID CVE-2017-17482 esleitu zitzaion. Ahuldade horren ondorioz, plataforma horietan DCL agindu-lerrora sartzeko aukera zuen erasotzaileak pribilegioen eskalan gora eginez erasoa egin ahal izango zuen. Ahuldadea horrela azal daiteke: DCL agindu-prozesatzailearen kodean akatsa zegoen bufferaren gainezkatzearen tratamenduan, erabiltzaileak martxan zegoen programa exekutagarri bat geldiarazi zezakeen CTRL/Y erabiliz eta komando lerroko prompt-era bueltatuz, eta arazoa sortzen zen DCLk geldiarazitako programaren baimen edo pribilegioak mantentzen zituelako. Horrela, shell kodea exekuta zitekeen geldiarazitako programa exekutagarriaren baimenekin. Erasotzailearen erabiltzaile-kontuaren baimen-maila baino altuagoko programa exekutagarri bat izanez gero, erasotzaileak ahuldade horri etekin atera ziezaiokeen sistemaren segurtasuna saihesteko.

Zaletuen programak
1997an, OpenVMS eta zenbait geruza-produktu doan eskaini ziren zaletuentzat erabilera ez-komertzialerako, OpenVMS Hobbyist Program programaren barruan. Orduz geroztik, OpenVMS softwarea ekoizte duten zenbait enpresak baldintza beretan jarri dituzte eskura haien produktuak, Process Software, adibidez.  x86-64 arkitekturarako migrazioa egin aurretik, OpenVMS erabiltzeko gai zen hardwarea zaharra eta garestia zenez, SIMH moduko emuladoreak erabiltzen zituzten zaletuek OpenVMS instalatzeko.

2020ko martxoan, HPEk OpenVMS Hobbyist Program programaren amaiera iragarri zuen. Horren ondoren, HPEren OpenVMS Hobbyist Program ordezkatzeko asmoz, Community License Program (CLP) iragarri zuen VSIk, 2020ko apirilean. 2020ko uztailean atera zen CLP, eta Alpha eta Integrity sistemetarako OpenVMSren bertsioetarako lizentziak eskaintzen ditu. x86-64 arkitekturarako OpenVMSren lizentziak eskuragarri egongo dira arkitektura horretarako bertsio egonkor bat argitaratzen denean. CLP ezin da erabili VAXetan OpenVMS instalatzeko, VSIk ez baitauka VAXerako OpenVMSren bertsiorik, eta bertsio zaharrak oraindik HPErenak baitira.

Erreferentziak

Ikus, gainera 

 OpenSSL
 Sistema eragileen arkitektura

Kanpo estekak