('''Open Virtual Memory System''' or just '''VMS''') is the name of a high-end
Computer Server Operating System that runs on the
VAX and
Alpha family of computers developed by
Digital Equipment Corporation of
Maynard ,
Massachusetts (now owned by
Hewlett-Packard ), and more recently on Hewlett-Packard systems built around Intel
Itanium CPU.
OpenVMS is a
Multi-user ,
Multiprocessing Virtual Memory -based operating system (OS) designed for use in
Time Sharing ,
Batch Processing , and
Transaction Processing . It offers high system
Availability through
Clustering , or the ability to distribute the system over multiple physical machines. This allows the system to be "disaster-tolerant" against natural disasters that may disable individual data-processing facilities.
OpenVMS commercialized many features that are now considered standard requirements for any high-end server operating system. These include:
- Built-in computer networking (originally DECnet and later, TCP/IP )
- Symmetrical, asymmetrical, and NUMA multiprocessing, including early clustering
- A distributed File System ( Files-11 )
- Integrated Database features (RMS-32 and Rdb)
- Support for multiple computer Programming Languages
- An extensible Shell command language ( DIGITAL Command Language )
- Hardware partitioning of multiprocessors
- High level of security with versions evaluated at DoD NCSC Class C2 and, with the SEVMS security enhanced services support, at NCSC Class B1, per the NCSC Rainbow Series
In April,
1975 , DIGITAL embarked on a hardware project, code named , to design a
32-bit virtual address extension to its
PDP-11 . A companion software project, code named '''Starlet''', was begun in June, 1975 to develop a totally new operating system, based on
RSX-11M , for the Star family of processors. These two projects were tightly integrated from the beginning. Roger Gourd was the project lead for the Starlet program, with software engineers
Dave Cutler ,
Dick Hustvedt , and
Peter Lipman acting as the technical project leaders, each having responsibility for a different area of the operating system. The Star and Starlet projects culminated in the
VAX 11/780 computer and the '''VAX-11/VMS''' operating system. The Starlet name survived in VMS as a name of one of the main system libraries, STARLET.OLB.
Over the years the name of the product has changed. In
1980 it was renamed, with version 2.0 release, to ''(at the same time as the VAX-11 computer was renamed to simply VAX)''. With the introduction of the
MicroVAX range such as the MicroVAX II and MicroVAX 2000 in the mid-to-late 1980s, DIGITAL released '''MicroVMS''' versions specifically targeted for these platforms which had much more limited memory and disk capacity e.g. the smallest MicroVAX 2000 had a 40MB RD32 hard disk and only 4MB of RAM, and its CPU had to emulate some of the VAX floating point instructions in software. MicroVMS kits were released for VAX/VMS 4.0 to 4.7 on TK50 tapes and RX50 floppy disks, but discontinued with VAX/VMS 5.0. In
1991 it was renamed again to '''OpenVMS''' to indicate its support for industry standards such as
POSIX and
Unix compatibility, and to drop the hardware connection as the port to DIGITAL's
64-bit Alpha RISC processor was in process. The OpenVMS name first appeared after the version 5.5-2 release.
The VMS port to Alpha necessitated the creation of separate code streams for 32-bit and 64-bit architectures.
1992 saw the release of the first version of OpenVMS for
Alpha AXP systems, designated . ''(The decision to use the 1.x version numbering stream for the pre-production quality releases of OpenVMS AXP caused confusion for some customers and was not repeated in the subsequent porting program.)''
In
1994 , with the release of OpenVMS version 6.1, feature (and version number) parity between the VAX and Alpha variants was achieved. Subsequent version numberings for the VAX and Alpha variants of the product have remained consistent.
In
2001 , just prior to its acquisition by HP,
Compaq announced the port of OpenVMS to the
Intel Itanium 64-bit
EPIC architecture. This port was accomplished using the OpenVMS Alpha source code pool and libraries. The OpenVMS Alpha pool was used as the basis of the port as it was significantly more portable than the original OpenVMS VAX source code and because the code was fully 64-bit capable.
Unlike the port from VAX to Alpha, in which a "snapshot" of the VAX code base circa V5.4 was used as the basis for the Alpha release and the source code then largely diverged, the OpenVMS Alpha and I64 (Itanium) versions of OpenVMS are built and maintained using a common source code pool and tools.
, the first pre-production quality release, was shipped in June
2003 .
, the first production quality Itanium release, was shipped in January
2005 . V8.2 is also available for OpenVMS Alpha.
, adding support for Integrity Superdome and cell based systems, was released in September 2005. V8.2-1 is available for Itanium platforms only.
OpenVMS can be divided into three layers:
- The Kernel , made up of input/output, memory management, and process/time management subsystems.
- Core services, made up of DCL (DIGITAL Command Language), RMS (Record Management Services), DECwindows (OpenVMS's X11 compliant windowing system), and the Run-time Libraries .
- Utility programs for support, system management, and programming.
OpenVMS supports
Clustering (first called ''VAXcluster'' and later
VMScluster ), where multiple systems share disk storage, processing, job queues and print queues, and connected either by specialized hardware or an industry-standard
LAN (usually
Ethernet ). A LAN-based cluster is often called a LAVc, for Local Area Network VMScluster, and allows, among other things, bootstrapping a possibly diskless ''satellite node'' over the network using the system disk of a ''bootnode''.
Mixtures of cluster interconnects and technologies are permitted, including Gigabit (GbE) Ethernet, SCSI, DSSI, CI and Memory Channel adapters.
OpenVMS supports up to 96 nodes in a single cluster, and allows mixed-architecture clusters, where VAX and Alpha systems, or Alpha and Itanium systems can co-exist in a single cluster (Various organizations have demonstrated triple-architecture clusters and cluster configurations with up to 150 nodes, but these configurations are not supported by HP).
Unlike many other clustering solutions, VAXcluster offers fully-distributed read-write with record-level locking, which means that the same disk and even the same file can be accessed by several cluster nodes at once; the locking occurs only at the level of a single record of a file, which would usually be one line of text or a single record in a database. This allows the construction of high-availability multiply-redundant database servers.
Cluster interconnections can span upwards of 500 miles, allowing member nodes to be located in different buildings on an office campus, or in different cities.
Host-based volume shadowing allows volumes (of the same or of different sizes) to be shadowed (mirrored) across multiple controllers and multiple hosts, allowing the construction of disaster-tolerant environments.
Full access into the
Distributed Lock Manager (DLM) is available to application programmers, and this allows applications to coordinate arbitrary resources and activities across all cluster nodes. This obviously includes file-level coordination, but the resources and activities and operations that can be coordinated with the DLM are completely arbitrary.
With the supported capability of rolling upgrades and with multiple system disks, cluster configurations can be maintained on-line and upgraded incrementally. This allows cluster configurations to continue to provide application and data access while a subset of the member nodes are upgraded to newer software versions.
Among OpenVMS's notable features is the Common Language Environment, a strictly defined standard that specifies calling convention for functions and routines, including use of
Stack s,
Register s, etc., independently of programming language. Because of this, it is possible to call a routine written in one language—such as
FORTRAN —from another, such as
C , without needing to know the implementation details of the target language. OpenVMS itself is implemented in a variety of different languages (primarily
BLISS ,
VAX Macro and
C , and the common language environment and calling standard supports freely mixing these languages, as well as
Ada ,
PL/I ,
Fortran ,
Basic , and others), in contrast to a system such as
Unix , which is implemented nearly entirely in the
C language.
OpenVMS has a very rich
Filesystem , with support for stream and record-oriented IO,
ACLs , file versioning, ''etc.''
OpenVMS keeps times as a 64-bit number of 100
Nanosecond intervals since the
Epoch . The epoch of OpenVMS is midnight on
November 17 1858 , which is the start of Modified
Julian Day numbering. The clock is not necessarily updated every 100 ns; for example, systems with a 100 Hz interval timer simply add 100 000 to the value every hundredth of a second. Time is usually kept to an accuracy of at least 0.01% and timekeeping is independent of the ac mains frequency.
While the system is shut down, time is kept by a Time-of-Year ("TOY") clock. This clock keeps time to a lower resolution (perhaps 1 second) and generally, a lower accuracy (often 0.025% versus 0.01%). When the system is restarted, the ordinary VMS 64-bit time value is recomputed based on the time kept by the TOY clock and the last recorded year (stored on the system disk).
The 100 nanosecond granularity implemented within OpenVMS and the 63-bit absolute time representation (the sign bit must be clear) mean that OpenVMS should have no trouble with time until . At this time, all clocks and time-keeping operations in OpenVMS will suddenly stop, as system time values go negative.
OpenVMS contains a very rich set of Run-time Libraries (RTLs). These cover a wide range of functions, including String manipulation (STR$ routines), Mathematical operations (MTH$ routines), DECtalk access operations (DTK$ routines), Parallel Processing operations (PPL$ routines), Screen Management operations (SMG$ routines) and a number of other categories grouped together as General Purpose functions (OTS$ routines). These functions, combined with the low-level System Services, make it easy to write complex programs.
Before writing a simple program in a High-Level language, however, the user should consider whether the required operation can be completed using
DCL 's functions from a command file.
Despite being a proprietary commercial operating system, in
1997 OpenVMS and several layered products were made available free of charge for hobbyist, non-commercial use as part of the OpenVMS Hobbyist Program. Since then, several companies producing OpenVMS software have made their products available under the same terms, such as
Process Software and
MVP Systems .
More information on the hobbyist program can be found at http://www.openvmshobbyist.org/
OpenVMS-related terms and acronyms include: