Linked by Eugenia Loli on Mon 12th Jan 2004 05:21 UTC, submitted by Simon Strandgaard
OSNews, Generic OSes When new operating systems gets designed today, great systems such as Amiga, Atari and VMS, seems to get overlooked in regard to their original features not found on other OSes. It might be time to collect and categorize those special unique features under the great/lost ideas wiki, so new OSes don't have to re-invent the wheel and re-innovate.
Permalink for comment
To read all comments associated with this story, please click here.
RE: VMS - logicals aka environment variables on steroids
by Claus on Tue 13th Jan 2004 10:59 UTC

There are actually 4. System,group,process and user. System: visible to any process.
Group: visible to all processes in the same UIC group (the UIC feature can be used to virtually divide the computing environment on a single box into several).
Process: visible to a process and its children (spawned).
User: one-shot (temporary) process logicals e.g. automatically removed after being read.
Logicals can be used in programs as for example
#include "abc$xyz:myfile.h"
The logicals are inside kernel space whereas Linux envvars are outside (I believe).
Besides OpenVMS has 4 spaces e.g. 4 rings: kernel,executive,supervisor and user (whereas Linux and Windows has 2 - kernel and user). File systems and command line interpreters (DCL) are in the executive and supervisor rings to protect the kernel and to protect them from the user.

Another nice OpenVMS feature is the resource locking service (sys$enq). Its bascially a critical section protection mechanism but quite elaborate. Supports different modes such as concurrent and exclusive read and write in addition to atomic conversion between modes and is used to synchronize access to whatever the programmer desires. IBM has ported it to Linux under the name dlm.

Then there is structured error handling. OpenVMS functions do not return -1,0,1 and has no errno. Instead they return a code that results in a readable message indicating how good or bad, where and what. If fatal then in addition a nice stack dump with line numbers is produced. Wish Linux had that instead of having to examine core dumps (that is - if you remembered to enable them - otherwise it is too late).

OpenVMS is also tidy. For example, all system functions are prefixed sys$ and all system library function are prefixed lib$.

But allthough the command line interpreter (DCL) is easier, more structured and more feature rich than bash then piping and redirection is much easier on Linux.