VME

From Wikipedia, the free encyclopedia

This article is about the operating system. VME may also refer to the VMEbus computer bus.

VME (Virtual Machine Environment) is a mainframe operating system developed by the UK company International Computers Ltd (ICL). Originally developed in the 1970s (as VME/B, later VME 2900) to drive ICL's (then) new 2900 Series mainframes, the operating system is now known as OpenVME incorporating a Unix subsytem, and runs on ICL Series 39 and Trimetra mainframe computers.

ICL itself has been absorbed into the Fujitsu group.

Contents

[edit] Origins

VME was first announced under the name VME/B as the operating system for the ICL New Range of mainframes (2900 Series). A number of influences can be seen in its design, for example Multics and ICL's earlier George 3[1] operating system; however it was essentially designed from scratch.

VME was viewed as primarily competing with the System/360 IBM mainframe as a commercial operating system, and adopted the EBCDIC character encoding.

Most of the design and development took place at ICL's facilities in Kidsgrove, Staffordshire and Manchester, UK. The chief architect was Brian Warboys.

As a creation of the mid-1970s, with no constraints to be compatible with earlier operating systems, VME is in many ways more modern in its architecture than today's Unix derivatives (Unix was designed in the 1960s) or Windows (which started as an operating system for single-user computers, and still betrays those origins).

After the cancellation of ICL's alternative operating system, VME/K, in the early 1980s, VME/B was renamed as VME 2900. VME 2900 was presented to the customer base as a merger of VME/B and VME/K, but in reality the code was all VME/B, with a few selected features from VME/K grafted on. The "2900" suffix was dropped when ICL launched Series 39 as the successor to the original 2900 series; and the "Open" prefix was later added when VME became capable of hosting applications written originally for Unix through a UNIX System V Release 3 based subsytem using the ASCII character encoding adapted to run under VME.

The most recent incarnations of VME run as a hosted subsystem, called superNova, within Microsoft Windows or Red Hat Enterprise Linux on Intel-based hardware. [1]

[edit] Architecture

VME is structured as a set of layers, each layer having access to resources at different levels of abstraction. Virtual resources provided by one layer are constructed from the virtual resources offered by the layer below. Access to the resources of each layer is controlled through a set of Access Levels: in order for a process to use a resource at a particular access level, it must have an access key offering access to that level. The concept is similar to the "rings of protection" in Multics. The architecture allows 16 access levels, of which the outer 6 are reserved for user-level code.

Orthogonally to the access levels, the operating system makes resources available to applications in the form of a Virtual Machine. A Virtual Machine can run multiple processes. In practice, a VME Virtual Machine is closer to the concept of a process on other operating systems, while a VME process is more like a thread. The allocation of resources to a virtual machine uses a stack model: when the stack is popped, all resources allocated at that stack level are released. Calls from an application to the operating system are therefore made by a call that retains the same process stack, but with a change in protection level; the resulting efficiency of system calls is one of the features that makes the architecture competitive.

Communication between Virtual Machines is achieved by means of Events (named communication channels) and shared memory areas.

Files and other persistent objects are recorded in a repository called the Catalogue. Unlike other operating systems, the file naming hierarchy is independent of the location of a file on a particular tape or disk volume. In days where there was more need for offline storage, this made it easy to keep track of files regardless of their location, and to move files between locations without renaming them. As well as files, the Catalogue keeps track of users and user groups, volumes, devices, network connections, and many other resources. Metadata for files can be held in an object called a File Description.

Interrupts are handled by creating a new stack frame on the stack for the relevant process, handling the interrupt using this new environment, and then popping the stack to return to the interrupted process.

[edit] OMF

Loadable object code is maintained in a format called OMF (Object Module Format). Various compilers are available, as well as utilities, notably a Collector, which links the code in several OMF modules into a single module, for more efficient loading at run-time.

[edit] SCL

The command language for VME is known as SCL (System Control Language). This is much more recognizably a high-level programming language than the job control or shell languages found in most other operating systems: it can be likened to scripting languages such as JavaScript, though its surface syntax is derived from Algol 68. SCL is designed to allow both line-at-a-time interactive use from a console, and creation of executable scripts or programs. The declaration of a procedure within SCL also acts as the definition of a simple form or template allowing the procedure to be invoked from an interactive terminal. The language is compiled into object module format in the same way as any other VME programming language. SCL is block-structured, with begin/end blocks serving the dual and complementary roles of defining the lexical scope of variable declarations, and defining the points at which resources acquired from the operating system should be released. Variables in the language (which are accessible from applications in the form of environment variables) can have a number of simple types such as strings, superstrings (sequences of strings), booleans, and integers, and are also used to contain references to system resources such as files and network connections.

[edit] Series 39

The Series 39 range introduced Nodal Architecture, a novel implementation of distributed shared memory that can be seen as a hybrid of a multiprocessor system and a cluster design. Each machine consists of a number of nodes, and each node contains its own order-code processor and main memory. Virtual machines are typically located (at any one time) on one node, but have the capability to run on any node and to be relocated from one node to another. Discs and other peripherals are shared between nodes. Nodes are connected using a high-speed optical bus, which is used to provide applications with a virtual shared memory. Memory segments that are marked as shared (public or global segments) are replicated to each node, with updates being broadcast over the inter-node network. Processes which use unshared memory segments (nodal or local) run in complete isolation from other nodes and processes.


[edit] Development process

VME was originally written entirely in S3, a specially-designed system programming language based on Algol 68. Although a high-level language is used, the operating system is not designed to be independent of the underlying hardware architecture: on the contrary, the software and hardware architecture are closely integrated.

From the early 1990's onwards all entirely new VME subsystems were written in C.

From its earliest days, VME was developed with the aid of a software engineering repository known as CADES, built for the purpose using an underlying IDMS database. CADES is not merely a version control system for code modules: it manages all aspects of the software lifecycle from requirements capture through to field maintenance.

[edit] Application Development Tools

The application development tools offered with VME fall into two categories:

The toolset on VME is unusually homogeneous, with most customers using the same core set of languages and tools. As a result, the tools are also very well integrated. Third-party tools have made relatively little impression.

For many years the large majority of VME users wrote applications in COBOL, usually making use of the IDMS database and the TPMS transaction processing monitor. Other programming languages included FORTRAN, Pascal, ALGOL 68, CORAL66 and RPG2, but these served minority interests. Later, in the mid 1980s, a C compilers became available, both within and outside the Unix subsystem, largely to enable porting of software such as relational database systems. The compilers developed within ICL share a common architecture, and in some cases share components such as code-generators.

[edit] SFL

An assembly language SFL (System Function Language) is also available, but is not widely used (an exception is the VME version of the IDMS database engine).

[edit] Quickbuild

The QuickBuild application development environment on VME has been highly successful despite the fact that applications are largely locked in to the VME environment. This environment is centred on the Data Dictionary System (DDS, also called OpenDDS), an early and very successful attempt to build a comprehensive repository supporting all the other tools, with full support for the development lifecycle. As well as database schemas and file and record descriptions, the dictionary keeps track of objects such as reports and queries, screen designs, and 4GL code; it also supports a variety of models at the requirements capture level, such as entity-relationship models and process models.

The QuickBuild 4GL is packaged in two forms:

  • ApplicationMaster for the creation of online TP applications
  • ReportMaster for batch reporting.

Both are high-level declarative languages, using Jackson Structured Programming as their design paradigm. ApplicationMaster is unusual in its approach to application design in that it focuses on the user session as if it were running in a single conversational process, completely hiding the complexity of maintaining state across user interactions. Because the 4GL and other tools such as the screen designer work only with the DDS dictionary, which also holds the database schemas, there is considerable reuse of metadata that is rarely achieved with other 4GLs.

[edit] References

  1. ^ Comprehensive information on George 3

[edit] Sources

  • The Architecture of OpenVME. Nic Holt. ICL publication 55480001. Undated (probably around 1995)
In other languages