ICL VME
   HOME

TheInfoList



OR:

VME (''Virtual Machine Environment'') is a
mainframe A mainframe computer, informally called a mainframe or big iron, is a computer used primarily by large organizations for critical applications like bulk data processing for tasks such as censuses, industry and consumer statistics, enterprise ...
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
developed by the UK company
International Computers Limited International Computers Limited (ICL) was a British computer hardware, computer software and computer services company that operated from 1968 until 2002. It was formed through a merger of International Computers and Tabulators (ICT), English E ...
(ICL, now part of the
Fujitsu is a Japanese multinational information and communications technology equipment and services corporation, established in 1935 and headquartered in Tokyo. Fujitsu is the world's sixth-largest IT services provider by annual revenue, and the la ...
group). 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 Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, ...
subsystem, and runs on
ICL Series 39 The ICL Series 39 was a range of mainframe and minicomputer computer systems released by the UK manufacturer ICL in 1985. The original Series 39 introduced the "S3L" (whose corrupt pronunciation resulted in the name "Estriel") processors and mic ...
and Trimetra mainframe computers, as well as industry-standard
x64 x86-64 (also known as x64, x86_64, AMD64, and Intel 64) is a 64-bit version of the x86 instruction set, first released in 1999. It introduced two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging mod ...
servers.


Origins

The development program for the New Range system started on the merger of
International Computers and Tabulators International Computers and Tabulators or ICT was a British computer manufacturer, formed in 1959 by a merger of the British Tabulating Machine Company (BTM) and Powers-Samas. In 1963 it acquired the business computer divisions of Ferranti. I ...
(ICT) and English Electric Computers in 1968. One of the fundamental decisions was that it would feature a new operating system. A number of different feasibility and design studies were carried out within ICL, the three most notable being: * VME/B (originally System B), targeted at large processors such as the 2970/2980 and developed in
Kidsgrove Kidsgrove is a town in the borough of Newcastle-under-Lyme, Staffordshire, England, on the Cheshire border. It is part of the Potteries Urban Area, along with Stoke-on-Trent and Newcastle-under-Lyme. It has a population of 26,276 (2019 census) ...
,
Staffordshire Staffordshire (; postal abbreviation Staffs.) is a landlocked county in the West Midlands region of England. It borders Cheshire to the northwest, Derbyshire and Leicestershire to the east, Warwickshire to the southeast, the West Midlands C ...
and
West Gorton West or Occident is one of the four cardinal directions or points of the compass. It is the opposite direction from east and is the direction in which the Sun sets on the Earth. Etymology The word "west" is a Germanic word passed into some R ...
,
Manchester Manchester () is a city in Greater Manchester, England. It had a population of 552,000 in 2021. It is bordered by the Cheshire Plain to the south, the Pennines to the north and east, and the neighbouring city of Salford to the west. The ...
* VME/K (originally System T), targeted at the mid-range systems such as the 2960 and developed at Bracknell after the original design for these small processors, System D, was dropped. VME/K was developed and introduced to the market but was eventually replaced by VME/B * VME/T, which was never actually launched, but warrants a mention as it was conceived to support "fault tolerance", and predated the efforts of the successful American startup company
Tandem Computers Tandem Computers, Inc. was the dominant manufacturer of fault-tolerant computer systems for ATM networks, banks, stock exchanges, telephone switching centers, and other similar commercial transaction processing applications requiring maximum up ...
in this area. The chief architect of VME/B was
Brian Warboys Brian Warboys (born 30 April 1942), was a British Professor of Software Engineering at the University of Manchester from 1985 until he retired in September 2007. He was subsequently appointed as Professor Emeritus and continues to undertake res ...
, who subsequently became professor of software engineering at the
University of Manchester The University of Manchester is a public university, public research university in Manchester, England. The main campus is south of Manchester city centre, Manchester City Centre on Wilmslow Road, Oxford Road. The university owns and operates majo ...
. A number of influences can be seen in its design, for example
Multics Multics ("Multiplexed Information and Computing Service") is an influential early time-sharing operating system based on the concept of a single-level memory.Dennis M. Ritchie, "The Evolution of the Unix Time-sharing System", Communications of ...
and ICL's earlier
George 3 GEORGE was the name given to a series of operating systems released by International Computers and Tabulators (ICT) in the 1960s, for the ICT 1900 series of computers. These included GEORGE 1, GEORGE 2, GEORGE 3, and GEORGE 4. Initially the ...
operating system; however it was essentially designed from scratch. VME/B was viewed as primarily competing with the
System/370 The IBM System/370 (S/370) is a model range of IBM mainframe computers announced on June 30, 1970, as the successors to the System/360 family. The series mostly maintains backward compatibility with the S/360, allowing an easy migration path ...
IBM mainframe IBM mainframes are large computer systems produced by IBM since 1952. During the 1960s and 1970s, IBM dominated the large computer market. Current mainframe computers in IBM's line of business computers are developments of the basic design of th ...
as a commercial operating system, and adopted the
EBCDIC Extended Binary Coded Decimal Interchange Code (EBCDIC; ) is an eight- bit character encoding used mainly on IBM mainframe and IBM midrange computer operating systems. It descended from the code used with punched cards and the corresponding ...
character encoding Character encoding is the process of assigning numbers to graphical characters, especially the written characters of human language, allowing them to be stored, transmitted, and transformed using digital computers. The numerical values tha ...
.


History

When New Range was first launched in October 1974, its operating system was referred to as "System B". By the time it was first delivered it had become "VME/B". VME/K was developed independently (according to Campbell-Kelly, "on a whim of Ed Mack"), and was delivered later with the smaller mainframes such as the 2960. At the time VME/B was still plagued with performance and reliability problems, and the mainly American management team had misgivings about it. ICL had sold a large system to the
European Space Agency , owners = , headquarters = Paris, Île-de-France, France , coordinates = , spaceport = Guiana Space Centre , seal = File:ESA emblem seal.png , seal_size = 130px , image = Views in the Main Control Room (120 ...
to process data from
Meteosat The Meteosat series of satellites are geostationary meteorological satellites operated by EUMETSAT under the Meteosat Transition Programme (MTP) and the Meteosat Second Generation (MSG) program. The MTP program was established to ensure the ope ...
at its operation centre in
Darmstadt Darmstadt () is a city in the state of Hesse in Germany, located in the southern part of the Rhine-Main-Area (Frankfurt Metropolitan Region). Darmstadt has around 160,000 inhabitants, making it the fourth largest city in the state of Hesse ...
. A bespoke variant of VME/K, known as VME/ESA was developed on-site to meet the customer's requirements. Following a financial crisis in 1980, new management was brought into ICL (Christopher Laidlaw as chairman, and Robb Wilmot as managing director). An early decision of the new management was to drop VME/K. Thus in July 1981 "VME2900" was launched: although presented to the customer base as a merger of VME/B and VME/K, it was in reality the VME/B base with a few selected features from VME/K grafted on. This provided the opportunity to drop some obsolescent features, which remained available to customers who needed them in the form of the "BONVME" option. The "2900" suffix was dropped at System Version 213 (SV213) when ICL launched Series 39 in 1985 as the successor to the original 2900 series; and the "Open" prefix was added after SV294. VME became capable of hosting applications written originally for
Unix Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, ...
through a UNIX System V Release 3 based subsystem, called VME/X, adapted to run under VME and using the
ASCII ASCII ( ), abbreviated from American Standard Code for Information Interchange, is a character encoding standard for electronic communication. ASCII codes represent text in computers, telecommunications equipment, and other devices. Because ...
character encoding. In 2007 Fujitsu announced a VME version run as a hosted subsystem, called ''superNova'', within
Microsoft Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ...
, or
SUSE SUSE ( , ) is a German-based multinational open-source software company that develops and sells Linux products to business customers. Founded in 1992, it was the first company to market Linux for enterprise. It is the developer of SUSE Linux Ent ...
or
Red Hat Enterprise Linux Red Hat Enterprise Linux (RHEL) is a commercial open-source Linux distribution developed by Red Hat for the commercial market. Red Hat Enterprise Linux is released in server versions for x86-64, Power ISA, ARM64, and IBM Z and a desktop ...
on
x86-64 x86-64 (also known as x64, x86_64, AMD64, and Intel 64) is a 64-bit version of the x86 instruction set, first released in 1999. It introduced two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging ...
hardware. In 2012 the VME user group, AXiS, announced that after almost 40 years it would be disbanding because of the reduced user base. Fujitsu intended to support VME on customer computers until 2020. In 2020 Fujitsu transferred 13
HM Revenue and Customs HM Revenue and Customs (His Majesty's Revenue and Customs, or HMRC) is a non-ministerial government department, non-ministerial Departments of the United Kingdom Government, department of the His Majesty's Government, UK Government responsible fo ...
applications from their computers onto Fujitsu's virtual managed VME hosting platform. As of 2022, the
Department for Work and Pensions , type = Department , seal = , logo = Department for Work and Pensions logo.svg , logo_width = 166px , formed = , preceding1 = , jurisdiction = Government of the United Kingdom , headquarters = Caxton House7th Floor6–12 Tothill Stree ...
was still using VME based systems to support
state pension A pension (, from Latin ''pensiō'', "payment") is a fund into which a sum of money is added during an employee's employment years and from which payments are drawn to support the person's retirement from work in the form of periodic payment ...
payments.


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 Multics ("Multiplexed Information and Computing Service") is an influential early time-sharing operating system based on the concept of a single-level memory.Dennis M. Ritchie, "The Evolution of the Unix Time-sharing System", Communications of ...
. 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. The hardware architecture also provides
semaphore Semaphore (; ) is the use of an apparatus to create a visual signal transmitted over distance. A semaphore can be performed with devices including: fire, lights, flags, sunlight, and moving arms. Semaphores can be used for telegraphy when arr ...
instructions INCT (increment-and-test) and TDEC (test-and-decrement). 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. The Catalogue was probably the first example of what would later be called an entity-relationship database.
Interrupt In digital computers, an interrupt (sometimes referred to as a trap) is a request for the processor to ''interrupt'' currently executing code (when permitted), so that the event can be processed in a timely manner. If the request is accepted, ...
s 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. Run-time exceptions, referred to as ''contingencies'', are captured by the Object Program Error Handler (OPEH), which can produce a report (equivalent to a
stack trace In computing, a stack trace (also called stack backtrace or stack traceback) is a report of the active stack frames at a certain point in time during the execution of a program. When a program is run, memory is often dynamically allocated in two ...
), either interactively or written to a journal.


OMF

Compiled object code is maintained in a format called OMF (Object Module Format). Unlike in many other operating systems, this is also the format used by the loader. Various compilers are available, as well as utilities, notably the Collector, which links the code in several OMF modules into a single module, for more efficient loading at run-time, and the Module Amender, which allows patching of the instructions in an OMF module to fix bugs, using assembly language syntax.


SCL

The command language for VME is known as SCL (System Control Language). This is much more recognizably a typed
high-level programming language In computer science, a high-level programming language is a programming language with strong abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language ''elements'', be easier to u ...
than the job control or shell languages found in most other operating systems: it can be likened to scripting languages such as
JavaScript JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of websites use JavaScript on the client side for webpage behavior, of ...
, though its surface syntax is derived from
Algol 68 ALGOL 68 (short for ''Algorithmic Language 1968'') is an imperative programming language that was conceived as a successor to the ALGOL 60 programming language, designed with the goal of a much wider scope of application and more rigorously d ...
. SCL is designed to allow both line-at-a-time interactive use from a console or from a command file, and creation of executable scripts or programs (when the language is compiled into object module format in the same way as any other VME programming language). 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, with fields validated according to the data types of the underlying procedure parameters or using the default procedure parameter values. The built-in command vocabulary uses a consistent naming convention with an imperative verb followed by a noun: for example DELETE_FILE or DISPLAY_LIBRARY_DETAILS. The command can be written in full, or in an abbreviated form that combines standard abbreviations for the verb and noun: for example XF (X for DELETE, F for FILE) or DLBD (D for DISPLAY, LB for LIBRARY, D for DETAILS). 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 variable An environment variable is a dynamic-named value that can affect the way running processes will behave on a computer. They are part of the environment in which a process runs. For example, a running process can query the value of the TEMP envi ...
s) 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. It is possible to "disassemble" an SCL program from OMF back into SCL source code using the READ_SCL (or RSCL) command. However the output is not always perfect, and will often include errors that would stop re-compilation without user intervention. A simple code example can be seen on the
99 bottles of beer "99 Bottles of Beer" or "100 Bottles of Pop on the Wall" is a song dating to the mid-20th century. It is a traditional reverse counting song in both the United States and Canada. It is popular to sing on road trips, as it has a very repetitive ...
website. A more realistic example, where SCL is used to compile a program written in S3, is shown below. This example is taken from the
Columbia University Columbia University (also known as Columbia, and officially as Columbia University in the City of New York) is a private research university in New York City. Established in 1754 as King's College on the grounds of Trinity Church in Manhatt ...
Archive of implementations of Kermit.
BEGIN
   WHENEVER
      RESULT GT 0 +_
      THEN        +_
         SEND_RESULT_MESSAGE (RES = RESULT,
                              ACT = "QUIT()")
   FI
 
   INT KMT_SRC, KMT_OMF, KMT_REL
 
   ASSIGN_LIBRARY (NAM = KERMIT.SOURCE,
                   LNA = KMT_SRC)
   ASSIGN_LIBRARY (NAM = KERMIT.OMF,
                   LNA = KMT_OMF)
   ASSIGN_LIBRARY (NAM = KERMIT.REL,
                   LNA = KMT_REL)
 
   BEGIN
      DELETE_FILE (NAM = *KMT_OMF.KMT_DATA_MODULE(101))
      DELETE_FILE (NAM = *KMT_OMF.KMT_DH_MODULE(101))
      DELETE_FILE (NAM = *KMT_OMF.KMT_EH_MODULE(101))
      DELETE_FILE (NAM = *KMT_OMF.KMT_FH_MODULE(101))
      DELETE_FILE (NAM = *KMT_OMF.KMT_HELP_MTM(101))
      DELETE_FILE (NAM = *KMT_OMF.KMT_MAIN_MODULE(101))
      DELETE_FILE (NAM = *KMT_OMF.KMT_PH_MODULE(101))
      DELETE_FILE (NAM = *KMT_OMF.KMT_PP_MODULE(101))
      DELETE_FILE (NAM = *KMT_OMF.KMT_SP_MODULE(101))
      DELETE_FILE (NAM = *KMT_OMF.KMT_SP_MTM(101))
      DELETE_FILE (NAM = *KMT_OMF.KMT_UI_MODULE(101))
 
      DELETE_FILE (NAM = *KMT_REL.KERMIT(101))
      DELETE_FILE (NAM = *KMT_REL.KERMIT_MODULE(101))
   END
 
   S3_COMPILE_DEFAULTS (LIS = OBJECT & XREF,
                        DIS = ERRORLINES)
 
   S3_COMPILE (INP = *KMT_SRC.KMT_DATA_MODULE(101),
               OMF = *KMT_OMF.KMT_DATA_MODULE(101))
 
   S3_COMPILE (INP = *KMT_SRC.KMT_DH_MODULE(101),
               OMF = *KMT_OMF.KMT_DH_MODULE(101))
 
   S3_COMPILE (INP = *KMT_SRC.KMT_EH_MODULE(101),
               OMF = *KMT_OMF.KMT_EH_MODULE(101))
 
   S3_COMPILE (INP = *KMT_SRC.KMT_FH_MODULE(101),
               OMF = *KMT_OMF.KMT_FH_MODULE(101))
 
   NEW_MESSAGE_TEXT_MODULE (CON = *KMT_SRC.KMT_HELP_MTM(101),
                            OMF = *KMT_OMF.KMT_HELP_MTM(101))
 
   S3_COMPILE (INP = *KMT_SRC.KMT_MAIN_MODULE(101),
               OMF = *KMT_OMF.KMT_MAIN_MODULE(101))
 
   S3_COMPILE (INP = *KMT_SRC.KMT_PH_MODULE(101),
               OMF = *KMT_OMF.KMT_PH_MODULE(101))
 
   S3_COMPILE (INP = *KMT_SRC.KMT_PP_MODULE(101),
               OMF = *KMT_OMF.KMT_PP_MODULE(101))
 
   S3_COMPILE (INP = *KMT_SRC.KMT_SP_MODULE(101),
               OMF = *KMT_OMF.KMT_SP_MODULE(101))
 
   NEW_MESSAGE_TEXT_MODULE (CON = *KMT_SRC.KMT_SP_MTM(101),
                            OMF = *KMT_OMF.KMT_SP_MTM(101))
 
   S3_COMPILE (INP = *KMT_SRC.KMT_UI_MODULE(101),
               OMF = *KMT_OMF.KMT_UI_MODULE(101))
 
   COLLECT ()
----
      INPUT(*KMT_OMF.KMT_DATA_MODULE(101)      &
            *KMT_OMF.KMT_DH_MODULE(101)        &
            *KMT_OMF.KMT_EH_MODULE(101)        &
            *KMT_OMF.KMT_FH_MODULE(101)        &
            *KMT_OMF.KMT_HELP_MTM(101)         &
            *KMT_OMF.KMT_MAIN_MODULE(101)      &
            *KMT_OMF.KMT_PH_MODULE(101)        &
            *KMT_OMF.KMT_PP_MODULE(101)        &
            *KMT_OMF.KMT_SP_MODULE(101)        &
            *KMT_OMF.KMT_SP_MTM(101)           &
            *KMT_OMF.KMT_UI_MODULE(101))
      NEWMODULE(*KMT_REL.KERMIT_MODULE(101))
      SUPPRESS
      RETAIN(KERMIT_THE_FROG)
      LISTMODULE
      PERFORM
++++
 
COMPILE_SCL (INP = *KMT_SRC.KERMIT(101),
             OUT = *KMT_REL.KERMIT(101),
             COD = NOTIFWARNINGS,
             OPT = FIL)
 
END
Commands illustrated in this fragment include WHENEVER (declares error handling policy), ASSIGN_LIBRARY (binds a local name for a file directory), DELETE_FILE (Makes a permanent file temporary, and it is then deleted at the END of the block), S3_COMPILE (compiles a program written in S3: this command breaks the usual verb-noun convention), NEW_MESSAGE_TEXT_MODULE (creates a module containing parameterized error messages suitable for localization) and COMPILE_SCL, which compiles an SCL program into object code. The COLLECT command combines different object code modules into a single module, and is driven by its own local command file which is incorporated inline in the SCL between the delimiters "----" and "++++". The sub-commands INPUT and NEWMODULE identify the names of the input and output modules; SUPPRESS and RETAIN determine the external visibility of named procedures within the collected module; and LISTMODULE requests a report describing the output module. Note that "." is used to separate the parts of a hierarchic file name. A leading asterisk denotes a local name for a library, bound using the ASSIGN_LIBRARY command. The number in parentheses after a file name is a generation number. The operating system associates a generation number with every file, and requests for a file get the latest generation unless specified otherwise. Creating a new file will by default create the next generation and leave the previous generation intact; this program however is deliberately choosing to create generation 101, to identify a public release.


Enhanced security variants

As a result of ICL's heavy involvement with delivery of computer services to the UK Public Sector, in particular those with special security requirements such as
OPCON CCIS OPCON, or more fully the Operational Control Command Control and Information System (OPCON CCIS) was a long term computer project run by the Ministry of Defence in the United Kingdom. History It started to be developed in 1974, and was initially us ...
, it was an early entrant into the market for Secure Systems. VME formed a core of ICL's activities in the Secure Systems arena. It had the advantage that as the last large-scale operating system ever designed, and one built from scratch, its underlying architecture encompassed many of the primitives needed to develop a Secure System, in particular the hardware assisted Access Control Registers (ACR) to limit to privileges that could be taken by any process (including Users). This led to the UK Government's Central Computing and Telecommunications Agency ( CCTA) funding ''Project Spaceman'' in the mid 1980s for ICL Defence Technology Centre (DTC) to develop an enhanced security variant of VME. ICL launched this as a pair of complementary products, with the commercial release being called High Security Option (HSO), and the public sector release, including Government Furnished Encryption (GFE) technologies, being called Government Security Option (GSO). HSO and GSO were formally tested under the CESG UK (Security) Evaluation Scheme, one of the predecessors to
ITSEC The Information Technology Security Evaluation Criteria (ITSEC) is a structured set of criteria for evaluating computer security within products and systems. The ITSEC was first published in May 1990 in France, Germany, the Netherlands, and the Unit ...
and
Common Criteria The Common Criteria for Information Technology Security Evaluation (referred to as Common Criteria or CC) is an international standard ( ISO/IEC 15408) for computer security certification. It is currently in version 3.1 revision 5. Common Criteria ...
, and in doing so became the first mainstream operating system to be formally Certified.


Series 39

The Series 39 range introduced Nodal Architecture, a novel implementation of
distributed shared memory In computer science, distributed shared memory (DSM) is a form of memory architecture where physically separated memories can be addressed as a single shared address space. The term "shared" does not mean that there is a single centralized memor ...
that can be seen as a hybrid of a
multiprocessor Multiprocessing is the use of two or more central processing units (CPUs) within a single computer system. The term also refers to the ability of a system to support more than one processor or the ability to allocate tasks between them. There ar ...
system and a
cluster may refer to: Science and technology Astronomy * Cluster (spacecraft), constellation of four European Space Agency spacecraft * Asteroid cluster, a small asteroid family * Cluster II (spacecraft), a European Space Agency mission to study th ...
design. Each machine consists of a number of nodes, and each node contains its own order-code processor (CPU) 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.


Development process

VME was originally written almost entirely in S3, a specially-designed system programming language based on
Algol 68R ALGOL (; short for "Algorithmic Language") is a family of imperative computer programming languages originally developed in 1958. ALGOL heavily influenced many other languages and was the standard method for algorithm description used by the ...
(however, VME/K was written primarily in the SFL assembly language). Although a
high-level language In computer science, a high-level programming language is a programming language with strong abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language ''elements'', be easier to use, ...
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 1990s onwards, some entirely new VME subsystems were written partly or wholly in the
C programming language ''The C Programming Language'' (sometimes termed ''K&R'', after its authors' initials) is a computer programming book written by Brian Kernighan and Dennis Ritchie, the latter of whom originally designed and implemented the language, as well a ...
. From its earliest days, VME was developed with the aid of a
software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term '' ...
repository system known as CADES, originally designed and managed by David Pearson (computer scientist) and built for the purpose using an underlying
IDMS The Integrated Database Management System (IDMS) is a network model (CODASYL) database management system for mainframes. It was first developed at B.F. Goodrich and later marketed by Cullinane Database Systems (renamed Cullinet in 1983). Sinc ...
database. CADES is not merely a
version control system In software engineering, version control (also known as revision control, source control, or source code management) is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections ...
for code modules: it manages all aspects of the software lifecycle from requirements capture, design methodology and specification through to field maintenance. CADES was used in VME module development to hold separate definitions of data structures (Modes), constants (Literals), procedural interfaces and the core algorithms. Multiple versions ('Lives') of each of these components could exist. The algorithms were written in System Development Language (SDL), which was then converted to S3 source by a pre-processor. Multiple versions of the same modules could be generated.


Application development tools

The application development tools offered with VME fall into two categories: *
third-generation programming language A third-generation programming language (3GL) is a high-level computer programming language that tends to be more machine-independent and programmer-friendly than the machine code of the first-generation and assembly languages of the second-gene ...
s * fourth-generation QuickBuild toolset. 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 COBOL (; an acronym for "common business-oriented language") is a compiled English-like computer programming language designed for business use. It is an imperative, procedural and, since 2002, object-oriented language. COBOL is primarily u ...
, usually making use of the
IDMS The Integrated Database Management System (IDMS) is a network model (CODASYL) database management system for mainframes. It was first developed at B.F. Goodrich and later marketed by Cullinane Database Systems (renamed Cullinet in 1983). Sinc ...
database and the TPMS
transaction processing Transaction processing is information processing in computer science that is divided into individual, indivisible operations called ''transactions''. Each transaction must succeed or fail as a complete unit; it can never be only partially compl ...
monitor. Other programming languages included Fortran,
Pascal Pascal, Pascal's or PASCAL may refer to: People and fictional characters * Pascal (given name), including a list of people with the name * Pascal (surname), including a list of people and fictional characters with the name ** Blaise Pascal, Frenc ...
,
ALGOL 68RS ALGOL 68RS is the second ALGOL 68 compiler written by I. F. Currie and J. D. Morrison, at the Royal Signals and Radar Establishment (RSRE). Unlike the earlier ALGOL 68-R, it was designed to be portable, and implemented the language of the Revise ...
,
Coral 66 Corals are marine invertebrates within the class Anthozoa of the phylum Cnidaria. They typically form compact colonies of many identical individual polyps. Coral species include the important reef builders that inhabit tropical oceans and sec ...
and RPG2, but these served minority interests. Later, in the mid 1980s, compilers for C became available, both within and outside the Unix subsystem, largely to enable porting of software such as
relational database A relational database is a (most commonly digital) database based on the relational model of data, as proposed by E. F. Codd in 1970. A system used to maintain relational databases is a relational database management system (RDBMS). Many relati ...
systems. It is interesting that a
PL/I PL/I (Programming Language One, pronounced and sometimes written PL/1) is a procedural, imperative computer programming language developed and published by IBM. It is designed for scientific, engineering, business and system programming. I ...
subset compiler was written by the EEC, to assist in porting programs from IBM to ICL hardware. The compilers developed within ICL share a common architecture, and in some cases share components such as code-generators. Many of the compilers used a module named ALICE ssembly Language Internal Common Environmentand produced an early form of precompiled code (P-Code) termed ROSE, making compiled Object Module Format (OMF) libraries loadable on any machine in the range. .


System Programming Languages: S3 and SFL

The primary language used for developing both the VME operating system itself and other system software such as compilers and transaction processing monitors is S3. This is a high level language based in many ways on
Algol 68 ALGOL 68 (short for ''Algorithmic Language 1968'') is an imperative programming language that was conceived as a successor to the ALGOL 60 programming language, designed with the goal of a much wider scope of application and more rigorously d ...
, but with data types and low-level functions and operators aligned closely with the architecture of the 2900 series. An
assembly language In computer programming, assembly language (or assembler language, or symbolic machine code), often referred to simply as Assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence b ...
SFL (System Function Language) is also available. This was used for the development of VME/K, whose designers were not confident that a high-level language could give adequate performance, and also for the
IDMS The Integrated Database Management System (IDMS) is a network model (CODASYL) database management system for mainframes. It was first developed at B.F. Goodrich and later marketed by Cullinane Database Systems (renamed Cullinet in 1983). Sinc ...
database system on account of its origins as a third-party product. SFL was originally called Macro Assembler Programming LanguagE (MAPLE), but as the 2900 architecture was being positioned as consisting of high level language machines the name was changed at the request of ICL Marketing. It had been developed as a part of the toolkit for System D, which was subsequently cancelled. Related families of assemblers for other architectures (CALM-xx running under VME, PALM-xx developed in Pascal and running on various hosts) were developed for internal use. Neither S3 nor SFL was ever promoted as a commercial development tool for end-user applications, as neither were normally delivered as a standard part of the operating system, nor were they explicitly marketed as products in their own right. Both SFL and S3 were however available as options to user organisations and third parties who had a specific need for them.


QuickBuild

The QuickBuild application development environment on VME has been highly successful despite the fact that applications are largely locked into 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.


References


Sources


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


External links


VME - Into the Future
Fujitsu UK. {{DEFAULTSORT:Icl Vme Virtual Machine Environment Computer-related introductions in 1974 Multics-like