Nearly 30 years after its initial release for the VAX-11/780, it is safe to say that OpenVMS has achieved these initial goals and more. Today, OpenVMS runs on the 64-bit Alpha and IA-64 platforms in addition to the original 32-bit VAX. It can also be run under emulators for the VAX and Alpha architectures on the IA-32 platforms using Charon-VAX, Charon-Alpha, and SIMH emulators under both Linux
and Windows. The architectural leverage that enabled the engineering team at Digital Equipment Corporation (now HP) to implement a mainframe-class system in an unprecedented short time has allowed OpenVMS to assimilate two additional generations of architectures, define and pioneer OpenVMS clusters, and become the Gold Standard for reliability and
integrity. By designing a system for corporate datacenters, the design also provides the same capabilities in a desktop environment.
For many years, it has been routine for OpenVMS systems to run for hundreds of days at a time, in full production without restarts. OpenVMS clusters, which are composed of
multiple OpenVMS processors sharing a file system, have reported uptimes measured in decades, across system updates, CPU changes, and mass storage reconfigurations and upgrades.
In addition to the original line mode interface, the DECwindows package, which is part of the integrated distribution, provides the Open Software Foundation MOTIF desktop, common
to many workstations.
From its inception in 1975, OpenVMS has been a system that has been strongly architected, with a core set of fundamental concepts. These concepts include:
- Logical Names
- Event-Driven Scheduling
- Common Record Management (including implicit Record Locking)
- Cross-Language Run Time and Calling Standard
- System Integrity
- Scaleability
These core concepts have provided a framework that has allowed OpenVMS to seamlessly evolve in directions inconceivable at the outset, including OpenVMS Clusters (1983), workstations, and secure computing. OpenVMS was the first system to be certified by the US National Computer Security Center at the C2 level, in 1986. OpenVMS has been able to work in both timesharing, network server, and realtime environments, with no special adaptations.
OpenVMS security has a well deserved reputation for security. A team of users led by the late John Wisniewski took an AlphaServer to DefCon9, where the system was rated as “Cool and Unhackable”, despite the fact that the hacker community was permitted full use of non-privileged accounts. It is also reported that the OpenVMS team was invited to never return to DefCon (reportedly a rule change was instituted to require the use of an Intel-based architecture).
The OpenVMS event processing model, Asynchronous System Traps (ASTs), is also dramatically different from the signal mechanism commonly used on *IX. ASTs are a queue of serial events, First-In, First-Out within each individual process, with one queue per access mode (OpenVMS uses four access modes, Kernel, Executive, Supervisor, and User). An AST is non-preemptable within an access mode within a process. The number of these lightweight events that can be pending at any time is governed by a per-process quota that is set on a per-user basis in the User Authorization File. It is thus possible for an OpenVMS process to have hundreds of pending events based on IO, locking, or time, without any need for the types of events to be defined in advance. ASTs can also be declared from within a user-program or library, allowing libraries to implement the same semantics as the operating system’s facilities (see OpenVMS-ALPHA/VAX Asynchronous System Trap Internals for a more complete
discussion).
Another unique facility of OpenVMS is the Logical Name facility. In its most basic form, the logical name facility provides a four level (System, Group, Job, and Process) hierarchy. It is possible to add levels to this hierarchy on a per-process, job, or group basis. Logical name translation is iterative and recursive, with each individual translation using the hierarchy of logical name tables in order to resolve translations.
It is thus possible to completely sever connections between the physical environment and the logical environment at each of the levels, potentially presenting a different logical environment to each user or job. An example of how this can be used may be found in the OpenVMS Technical Journal paper Inheritance based Environments for OpenVMS Systems and OpenVMS Clusters . This capability allows OpenVMS environments to serve thousands, or tens of thousands of users on a single system or OpenVMS cluster, each with a logical environment tailored to their own requirements or permissions.
For example, using Figure 1, the value of a logical name, for example, the translation of DISK$SCRATCH varies depending upon which process context the name is translated:
Process ID |
Translation of DISK$SCRATCH |
2041AF64 |
DISK$ALPHASCRATCH: |
20419E62 |
DISK$ALPHASCRATCH2: |
Alternatively, the translation of the logical name MASTERFILES also varies by which process context the translation is performed in:
Process ID |
Translation of MASTERFILES |
2041AF64 |
DISK$ALPHA_ITUSERS:[JONES.] |
20416737 |
DISK$ALPHA_USERS:[DEVELOPMENT.] |
20419E62 |
DISK$ALPHA_USERS:[PRODUCTION.] |
The integration of the Logical Name facility with the Record Management Services (referred to as “RMS”) Open facility yields a far more powerful mechanism than the environmental parameters used on *IX and Windows. The filename supplied to RMS may include an integral logical name, which will be automatically translated. For example, a file PHONELIST.DAT located in the directory pointed to by the MASTERFILES logical name would be specified as MASTERFILES:PHONELIST.DAT.
RMS is another area where OpenVMS has taken a fundamentally different architectural path than *NIX and Windows. RMS is a universal toolkit that defines a variety of file types (sequential, relative, indexed) and provides defined, automatic ways for programs to access the contents of a file without the need for awareness of the underlying file format. Thus, the TYPE utility produces reasonable results regardless of the underlying file type. Using TYPE on an index file yields the actual data records in order by their primary key without anything more than a simple OPEN. In modern terminology, OpenVMS RMS provides an object-oriented toolkit for managing files. However, RMS, which was part of the original VAX/VMS design, predates the popularity of the object-oriented paradigm by at least a decade.
Similarly, the shareable library facility, which on a system-wide level is a technology fundamental to the use of the Common Runtime Library, is fully available to normal users and provides the ability to implement extremely flexible environments in a simple, yet powerful manner. A more complete presentation of the use of shareable libraries may be found in presentations from the 1996 Spring DECUS symposium: OpenVMS Shareable Libraries: An Implementor’s Guide and Case Studies in OpenVMS Shareable Libraries.
OpenVMS is also notable in that it uses neither an open-source, nor a closed-source model. Instead, the OpenVMS model is better described as visible-source. Since the first release of OpenVMS in 1978, the overwhelming majority of the source listings have been available for purchase at nominal cost, originally on microfiche, presently on CDROM. The interfaces needed to write device drivers and other privileged extensions of the operating system have been well documented for the entire life of OpenVMS.
Since 1997, OpenVMS has been available for free for personal, non-commercial use. This program, known as the Hobbyist program has issued over 644,000 licenses. Details about the Hobbyist program are available at http://www.OpenVMSHobbyist.org. Unrestricted commercial licenses are available with the actual price depending upon the architecture and size of the system. Licenses are also available to developers under Hewlett Packard‘s Developer and Solution Partner Program (DSPP).
Now approaching its 30th anniversary, OpenVMS continues to seamlessly add new capabilities, while continuing the hallmark features that have made it the first choice for many mission-critical applications, across the full spectrum of computing from desktop to datacenter.
About the author:
Robert Gezelter, CDP, Software Consultant,
guest lecturer and technical facilitator has more than 25 years of international consulting experience in private and public sectors. Mr. Gezelter is a regular guest speaker at technical conferences world-wide such as HPETS (formerly DECUS).
He has worked extensively in OpenVMS since its initial release as VAX/VMS in 1978. He consults extensively on computer architectures, operating systems, APIs, networks, security, and related matters.
Among his published work are articles appearing in Network World, Open Systems Today, Digital Systems Journal, Digital News,
The OpenVMS Technical Journal, and Hardcopy. Mr. Gezelter also
writes a Column and serves as a Contributing Editor on
OpenVMS.org, a
www site serving the OpenVMS community. He is also a contributor to the
Computer Security Handbook, 4th Edition
(Wiley, 2002) and the “OpenVMS Security” and “Internet E-Mail Architecture” chapters of the
Handbook of Information Security (Wiley, 2005).
Mr. Gezelter can be reached via his firm’s www site at http://www.rlgsc.com.
Thanks for the article, which I found very informative and interesting. I’ve been hearing about this OS for so many years, and yet have not really known an awful lot about its history or design philosophy until now.
I must say that I am thoroughly enjoying the “Alternative OS” series of articles.
Aye. Very well written article, very clear. Cleared up the ‘Open’ part of OpenVMS for me, finally, although the logical name translation is still a bit of a mystery to me.
Just curious: does OpenVMS have a large userbase, and is it being actively developped still?
VMS is still being actively developed. Version 8.2 has been out for a while, and Version 8.3 is coming out soon. Field test versions are already in customer’s and hobbyist hands.
As for logical names, I feel that to attempt to embrace the entire capability at once is too much. Uses are many. As a simple example:
Disk drives on a system have a device name, whether it be C:, D:, DKA100: DKA200:, etc. However, usage of the device names is rather rigid. Using logical names for the disks is much better. DKA100: may be named DISK1, DKA200: may be named DISK2:, and so on. Your programs, data, and whatever may be on DKA100:, but referenced as on DISK1:. Ok, DKA100: is having problems, generating errors, going to die soon. By moving your programs, data, and whatever to possibly DKA300:, and re-defining the logical name DISK1: to have the value of DKA300, you can continue working without any other changes.
Another simple example:
You have an application that runs in background, and wakes up periodically to determine whether it needs to do any work. Lots of ways to do this, but with logical names, it’s real easy and flexible. The application can use a library routine to evaluate the value of the logical name ‘ReadyToGo’. If the value is ‘True’, or ‘Yes’, or whatever the application is looking for, then it can proceed, else not. There are multiple ways of setting the value of a logical name, manually or from within another program. A simple method for interprocess communication and/or control.
Now start to imagine the uses for being able to have a known ‘token’, the logical name, and the capability of assigning a value to the name and testing the value of the name.
When working on windoz the lack of logical names is one of my two biggest complaints.
Sharp VMS system managers will set things up so that a logical name for each disk is set up early in the startup process; furthermore, they should establish an ironclad rule that disks may never be referenced by their physical names, only their logical ones.
It not only makes disaster recovery easier, it makes subsititution of one disk for another a simple matter of changing a logical name.
You know, the way you can create aliases for disk drives reminds me of AmigaOS. Can you do that also on a directory basis? AmigaOS assigned several aliases by default, like LIBS: to SYS:Libs/ and SYS: to the boot drive root directory (often DF0: or DH0:).
And now for the childish comment: I found it funny that there are at least two common acronyms used in the OpenVMS world that are also real persons in computer science or a related field: AST and RMS. (Andrew S. Tanenbaum and Richard M. Stallman, resp.)
w-ber,
Yes, logical names can point to any point in a directory tree, for example:
$ ASSIGN DISK$USERS:[GEZELTER.KUMQUAT] DATAFILES
means that the open statement using the filename DATAFILES:JUNK.DAT will refer to a file in DISK$USERS:[GEZELTER.KUMQUAT].
As has been aluded to, you can also use the logical name facility to create something akin to *IX mount points. In the OpenVMS case, for the purposes of filename parsing, a (sub)directory appears to be the root of an entirely different directory tree. The logical name facility is more extensively discussed (with some examples) in a series of five columns available from OpenVMS.org at http://www.openvms.org/stories.php?story=02/09/24/5441505
– Bob Gezelter, http://www.rlgsc.com
Hi, Bob.
I really should have said “excellent article, Bob”, but you already knew that.
WWWebb
I must say that I am thoroughly enjoying the “Alternative OS” series of articles.
That makes 2 of us. They give quite the insight to the less popular operating systems.
I liked the defcon part.
Ronald,
Yes, OpenVMS is in active development. The number of users is estimated at well in excess of a million, with over 100,000 active production systems. In addition, it is estimated that there remain 100,000 VAX systems that are still running (and are not on the support rolls). Additionally, there are the hundreds of thousands of licenses issued under the Hobbyist program.
To clear up an ambiguity, the system was originally released as VAX/VMS (1978). The system was renamed OpenVMS in 1991 to reflect the number of industry standards implemented and supported.
– Bob Gezelter, http://www.rlgsc.com
Stucture?
Having been a DEC then Compaq then HP user over my entire working life I have always loved using both OpenVMS and Tru64 operating systems on the Alpha hardware. The usability has constantly improved in general and the overall stability has always been brilliant. I really wish HP would continue to develop and support the Alpha combinations into the future.
I thought NT was based on VMS.
But even msft admits that NT based OSes are a horrid, unstructed, mess.
Yes, but you forget that MS’s programming talents could turn the Taj Mahal into a Turd.
But even msft admits that NT based OSes are a horrid, unstructed, mess.
It is not NT that is a mess. It’s the software atop of NT that can be considered a mess. The NT kernel itself is pretty rock-solid, well thought-out, and well built.
Which part of MSFT admits that?
I’m not denying the claim that they’re unstructured and messy, but I don’t believe a ‘Softie would ever say that in public.
On the other hand, if you look carefully at the structure of windows, all of the mess is in User mode (things like Explorer, IE, USER, GDI). Going from user to kernel is like night and day in terms of structure and reliability in my experience. At it is the NT kernel which was designed by Cutler… he wasn’t so involved in user-mode.
Apparently the mess that is NT when viewed above the kernel level comes from the fact the user mode was initially designed in a rush so that Microsoft could have something to comptete against OS/2 2.x with. BTW, is the ReactOS kernel modeled on NT or is it it’s own thing. If ReactOS is based on NT’s structures and ideas then it might be a good way to have a look at the internal guts of a VMS style system.
You also have to remember that NT was originally designed to have multiple user interfaces (or personalities). The original interface was OS/2 compatible. It wasn’t until the IBM/MS split that a Windows 3.x compatible interface was added (you could run OS/2 programs on NT 3.1). There’s also a POSIX personality, and one other one that I can’t remember now.
The Windows 3.x personality brought over a lot of crud from the WinAPI, and led to the dreaded Windows-on-Windows (look for WoW in the process list when running non-NT apps).
The NT 3.x kernel was nice and responsive, and very portable (ran on x86, Alpha, MIPS, and PowerPC).
It’s the WinAPI/Win32/.Net/etc crap running on top that causes all the problems.
>>
Which part of MSFT admits that?
I’m not denying the claim that they’re unstructured and messy, but I don’t believe a ‘Softie would ever say that in public.
<<
First, why the fsck was my post deleted? What the hell is wrong with these people? Is this site funded by msft? Is anything other than msft worship allowed here?
And yes, the softies *did* say that. It was said by a top exec, maybe even Ballmer. About six months to one year ago, they said that about 60% of XP had to be re-writen for Vista, because the NT based XP code was a complete mess.
I won’t bother to research and find the actual article because, this post will probably be deleted also, since only msft praise is allowed here.
But, is that kernel code or userland code? And how much of that is backward compatibility crud carried over from Win98/ME?
The NT 3.x kernel was very nice, stable, and fast.
The NT 4.x kernel not so nice as they moved away from the microkernel aspects by bringing the graphics into kernelspace. Now bad video drivers could lock of the system.
Don’t know much about the NT 5.x kernel (as in Win2000 and XP).
All I know about the NT 6.x kernel is that they have again moved most of the graphics subsystem out of the kernel.
But, regardless of all that, they’ve been carrying the same userland code since Win3.1.
It’s the userland that’s really got problems, and they started with Win98.
Dave Cutler was project leader on both projects, but doesn’t mean NT is based on VMS.
There’s a book by MS that documents the direct lineage between VMS and NT. Windows NT Internals, or some such.
There’s no code shared between VMS and NT. A lot of shared concepts, but no code.
I didn’t say there was.
Why would you ask this question? You’re talking about two different products. If you’re trying to tie them together with David Cutler, be aware that he worked on VMS version 1.? There have been hugh changes, additions, and such since that time. VMS is up to version 8.2.
I’d also think that you haven’t established that NT is awful. Saying it doesn’t make it so. Some facts would be nice.
The biggest problem with NT is the users. They were used to having complete control of the system with MS-DOS, and they run NT as the administrator. This bypasses most of any built in protections and security. Software providers don’t help. Many demand that their products run with full privs.
NT is not based on VMS.
It simply had someone who had once belonged to DEC and the VMS project working on it.
NT is not based on VMS.
It simply had someone who had once belonged to DEC and the VMS project working on it.
Not directly based on VMS (MS had no DEC source code when they started NT).
The NT kernel however is close enough to the VMS kernel in design that DEC sued MS over NT’s release.
“NT and VMS: The Rest of the Story, discussion of ancestry of NT by Mark Russinovich” explains just how close NT and VMS truely are and sadly this article is not available for *free* on the web anymore (not that I am aware of anyway)
I’ll buy that… they -tried- to base it on VMS. The principles of VMS… I wish you had the article too. I’d like to see the result.
The problem with being a software engineer is that you sign “pacts” with your employer about sources… yet if you go to another job you can’t help but apply what you know and your previous experience in what you are doing at your new job. You might even recreate functions or packages of functions that are nearly identical to something you did at your previous job!
I’ll buy that… they -tried- to base it on VMS. The principles of VMS… I wish you had the article too. I’d like to see the result.
The problem with being a software engineer is that you sign “pacts” with your employer about sources… yet if you go to another job you can’t help but apply what you know and your previous experience in what you are doing at your new job. You might even recreate functions or packages of functions that are nearly identical to something you did at your previous job!
Very true and that is what the article on NT and VMS really touched on, that it wasn’t exactly Cutler and his team ‘copying’ or trying to re-implement VMS when they created NT, but more that using their design experience they came up with essentially the VMS kernel re-written in C vs. the original VMS kernel which was written in VAX ASM.
I would say an accurate description is that NT was inspired by the design of VMS. After reading up on the subject I do understand why many people say that NT is descended from VMS however.
Its too bad the article is not available for free on winmag2000.com anymore as it is a great read and goes into great detail on the shared kernel designs of both VMS and NT.
Problem is being “inspired by”, and being “descendant of” are two very different things. Most people seem to think that NT descends from VMS, which is not at all.
Cutler used NT as a bit of a “if I could VMS all over again 10+ years later how would I do it” thing. And it shows; NT is a microkernel, VMS is a macrokernel. NT was designed to be portable, VMS owasn’t. NT was designed with desktop users in mind, VMS started as a timesharing system. Some of the protection levels in the kernel between VMS and NT are similar, as well as some of the scheduling queues and what not. But for the most part NT and VMS almost opposite in philosophy and implementation.
There’s a cache of it on Archive.org
http://www.win2000mag.com/Articles/Print.cfm?ArticleID=4494“ rel=”nofollow”>http://web.archive.org/web/20020902142856/