Jump to content

VM/XA

From Alfawiki
Adapted from the English Wikipedia article VM/XA, available under CC BY-SA 4.0Updated 9 August 2025
VM
Company typeOperating system suite
IndustryComputer software
Founded1972
Headquarters
United States
ProductsVM/CMS, VM/370, VM/SP, VM/XA, VM/ESA, z/VM

VM (commonly referred to as VM/CMS) represents a suite of IBM virtual machine operating systems designed for IBM mainframe platforms, including System/370, System/390, zSeries, and System z. It also supports compatible environments such as the Hercules emulator on personal computers.

Design

At the heart of VM lies the Control Program, also known as the hypervisor, designated CP or VM-CP. This component operates directly on physical hardware to generate virtual machines. VM-CP provides comprehensive virtualization of the underlying system by managing shared resources like device control, task scheduling, and virtual memory. Each user is allocated an independent virtual machine with its own isolated address space and virtualized devices, capable of executing any software intended for a standalone computer. It is common for a single VM mainframe to host hundreds or even thousands of such virtual machines. The CP-370, a reengineered version of earlier IBM virtualization solutions, served as the foundation for VM-CP.

Inside every virtual machine runs a guest operating system, which can be:

  • CMS (Conversational Monitor System), a streamlined single-user OS offering an interactive environment complete with file management, development tools, and device access; it remains the most widely used guest OS.
  • GCS (Group Control System), which emulates the MVS API to support VTAM functionality without requiring a separate OS/VS1 virtual machine.
  • Standard IBM operating systems such as MVS, DOS/VSE, OS/VS1, or even another VM instance. The hypervisor treats these guests like privileged applications by emulating privileged instructions to maintain system security and stability. It accommodates various console terminal types, including IBM 3270 terminals.
  • Nested VM instances utilized for development and testing purposes, enabling multiple layers of virtualization. This approach not only aids hardware development but can extend up to five nested virtualization levels.
  • Mainframe editions of IBM AIX or Linux, which commonly operate as guest systems under VM but also have native execution capabilities.
  • Dedicated VM subsystems running in separate virtual machines that deliver services such as spooling, networking, security enforcement, and database management without complicating the hypervisor itself. Examples include:
    • RSCS (Remote Spooling and Communication Subsystem) facilitating communication between VMs and external systems
    • RACF (Resource Access Control Facility) handling security administration
    • Shared File System (SFS) managing shared file organization
    • VTAM (Virtual Telecommunications Access Method) supporting Systems Network Architecture communications
    • PVM (VM/Pass-Through Facility), which allows remote connections to other VM environments
    • TCP/IP-related services that provide networking functionalities within VM/CMS setups
    • Db2 Server for VM delivering SQL database capabilities
    • DIRMAINT simplifying user directory administration
    • MUMPS/VM, an implementation of the MUMPS database language discontinued in 1991
  • Customized or adapted operating systems developed by organizations or users, such as National CSS's CSS or Boston University's VPS/VM.

This structural design promotes versatile virtualization and extensive support for a wide range of workloads on IBM mainframe systems.

Versions

The known iterations include:

Virtual Machine Facility/370
Released in 1972, VM/370 is a System/370-based reimplementation of the earlier CP/CMS operating system.
VM/370 Basic System Extensions Program Product
VM/BSE (BSEPP) extends VM/370 by adding support for extra hardware devices such as 3370-type DASD drives, enhancing the CMS environment with improvements like a more advanced editor, and addressing stability issues.
VM/370 System Extensions Program Product
VM/SE (SEPP) builds upon VM/BSE by incorporating additional corrections and new capabilities.
Virtual Machine/System Product
VM/SP succeeded VM/370, VM/BSE, and VM/SE. Its initial release introduced EXEC2 and the XEDIT editor, while Release 3 brought in REXX scripting, and Release 6 added a shared file system.
Virtual Machine/System Product High Performance Option
VM/SP HPO introduced expanded device compatibility and features, allowing certain S/370 systems to access up to 64 MB of physical memory, designed for environments running multiple S/370 guest systems concurrently.
Virtual Machine/Extended Architecture Migration Aid
VM/XA MA enabled simultaneous operation of MVS/370 and MVS/XA on a single processor complex.
Virtual Machine/Extended Architecture System Facility
VM/XA SF offered enhanced functionality and improved performance relative to VM/XA MA.
Virtual Machine/Extended Architecture System Product
VM/XA SP further advanced VM/XA SF, replacing VM/SP HPO on S/370-XA hardware and including a CMS version compatible with both S/370 and S/370-XA modes.
Virtual Machine/Enterprise Systems Architecture
VM/ESA merged features from VM/SP, VM/SP HPO, and VM/XA SP. Version 1 supported S/370, ESA/370, or ESA/390 modes but excluded S/370 XA; Version 2 operated solely in ESA/390 mode. Versions compatible with S/370 were derived from the older VM/SP HPO codebase, whereas ESA/390 versions originated from the newer VM/XA codebase.
z/VM
z/VM continues as a leading full virtualization platform within the mainframe sector. z/VM 4.4 was the final release supporting ESA/390 mode; subsequent releases operate exclusively under z/Architecture.

The CMS component—Conversational Monitor System—is a single-user operating system running inside a virtual machine that delivers interactive time-sharing capabilities within the VM environment.

Hypervisor interface

IBM first introduced the term hypervisor with the 360/65 and later applied it to the DIAG handler in CP-67.

The Diagnose instruction ('83'x), a privileged instruction initially created for internal diagnostics, was repurposed by IBM to facilitate communication between virtual machines and CP. This instruction includes two four-bit register identifiers (Rx and Ry) along with a two-byte code that CP interprets to determine the requested operation. Important diagnose functions include:

Hexadecimal code Function
0000 Store Extended-Identification Code
0004 Examine Real Storage
0008 Virtual Console Function—Execute a CP command
0018 Standard DASD I/O
0020 General I/O—Perform any valid CCW chain on tape or disk devices
003C Update the VM/370 directory
0058 3270 Virtual Console Interface—Handle full-screen I/O on an IBM 3270 terminal
0060 Determine Virtual Machine Storage Size
0068 Virtual Machine Communication Facility (VMCF)

Originally capable of running directly on hardware as a standalone OS, CMS now functions solely as a guest operating system under VM. This change is due to CMS’s dependence on the hypervisor interface provided by VM-CP for file system management and other services. This paravirtualization interface:

  • Offers a high-speed communication path to VM-CP, minimizing overhead compared to complete emulation.
  • Was introduced as a performance optimization in CP/CMS release 2.1, greatly enhancing efficiency.
  • Utilizes the non-virtualized, model-specific DIAG instruction as a signaling mechanism between CMS and CP.

Minidisks

CMS and various other operating systems frequently require DASD capacities smaller than the total physical volume. CP enables the creation of virtual disks, known as minidisks, which can be sized anywhere up to the maximum capacity of the physical device. For CKD formatted volumes, minidisks must be allocated in complete cylinder units. These minidisks inherit characteristics from their parent disk but are typically smaller, with their starting point mapped to cylinder or block zero. They can be accessed through the same channel programs used for physical disks.

When a minidisk is formatted with a CMS file system, it is referred to as a CMS minidisk, although other operating systems may also utilize minidisks.

It is standard practice to allocate full-volume minidisks for guest operating systems such as z/OS, rather than assigning volumes directly via DEDICATE. Furthermore, "full-pack links" owned by the MAINT user ID are commonly established for each DASD device to support system backups using DASD Dump/Restore utilities, which copy entire DASD contents to tape or alternate DASDs.

Shared File System

Contemporary VM versions permit most system components to reside on the Shared File System (SFS), leaving only essential minidisks for startup processes and filepool server ownership.

Introduced in VM/SP Release 6, SFS significantly advanced CMS file storage capabilities by incorporating directory structures and more detailed security controls. Unlike CMS minidisks—where access permissions apply solely at the disk level—SFS provides file-level permission granularity and enhanced performance.

SFS functions through dedicated service virtual machines: VMSERVR (recovery server), VMSERVS (managing the VMSYS filepool), and VMSERVU (handling the VMSYSU user filepool). These servers oversee multiple minidisks including A-disks (virtual device 191) that contain configuration files, control disks, log disks, and data disks which store user information.

Users configured exclusively for SFS have A-disks named FILEPOOL:USERID, with directories organized as FILEPOOL:USERID.DIR1.DIR2, analogous to UNIX paths such as /dir1/dir2. The directory structure within SFS offers more refined access controls compared to minidisks and prevents disk corruption problems caused by simultaneous writes from multiple CMS instances.

Additionally, the file pool servers support the Byte File System (BFS), which utilizes a UNIX-style filesystem primarily intended for the VM OpenExtensions POSIX environment within CMS. Communication between CMS virtual machines and SFS servers is conducted via the IUCV protocol.

History

VM/370, a reimplementation of CP/CMS, was launched in 1972 alongside IBM's System/370 Advanced Function announcement, which introduced virtual memory hardware and operating systems into the System/370 line. Initial VM versions up to VM/370 Release 6 were distributed as open source until 1981 and have since entered the public domain. This open policy concluded with chargeable upgrades such as VM/SE and VM/BSE in 1977 and VM/System Product (VM/SP) in 1980. IBM continued to provide source code updates for existing releases; however, enhancements beyond the free base required licensing. Similar to CP-67, privileged instructions executed within a virtual machine trigger interrupts that CP intercepts and simulates.

Within IBM, VM played a significant role in OS development and time-sharing but was strategically secondary compared to OS and DOS product lines. While not broadly promoted for customer adoption, those who utilized VM formed tight-knit communities supporting its ecosystem. Internal IBM politics influenced resource distribution for VM development. A major challenge was that VM/CMS reduced hardware requirements for time-sharing users, conflicting with IBM’s business focus on hardware sales.

Melinda Varian observed VM’s unexpected market penetration:

Marketing forecasts predicted no more than one System/168 would run VM during its lifetime. In reality, a decade later, ten percent of large processors shipped from Poughkeepsie operated VM, alongside numerous mid-range machines from Endicott. Within fifteen years, VM licenses surpassed those of MVS.

IBM released a PC DOS version named VM/PC for executing CMS on XT/370 and AT/370 personal computers, based on VM/SP release 3. With P/370 and P/390 processor cards installed, PCs could run full VM systems—VM/370, VM/SP, VM/XA, and VM/ESA—compatible with S/370 and S/390 mainframes and their 31-bit operating systems like MVS/ESA.

The High Performance Option (HPO) was introduced as an enhancement to VM/SP to boost system capabilities. It expanded usable RAM beyond 16 MB up to 64 MB on supported models such as the IBM 4381, increased spool filesystem capacity per user, and allowed user-specific access controls for vector facilities.

Multiprocessor support has been included since VM/SP Release 1. System/370 models supported up to two processors functioning in uniprocessor (UP), multiprocessor (MP), or attached processor (AP) modes—the latter lacking I/O capabilities on the secondary processor. System/370-XA versions like VM/XA raised this processor limit; System/390 iterations such as VM/ESA further relaxed it. Current z/VM implementations can accommodate up to 80 processors per system, with individual virtual machines limited to 64 defined processors.

To facilitate running production MVS/370 alongside MVS/XA on System/370 Extended Architecture hardware such as the IBM 3081, IBM developed the VM/XA Migration Aid utilizing the Start Interpretive Execution (SIE) instruction for virtualization purposes. SIE either handled privileged instructions internally or passed them back to CP for processing. Subsequent platforms like the IBM 3090’s PR/SM also incorporated SIE technology. Eventually, VM/XA was succeeded by VM/ESA and z/VM.

Networking capabilities available for VM included RSCS and ACF/VTAM (compatible with MVS and VSE), both operating under a specialized GCS OS within the VM environment. Additionally, TCP/IP stacks were introduced during the late 1980s for VM/SP and VM/XA systems supporting IPv4 networks via interfaces such as channel-to-channel links or IBM RT PC gateways connecting Token Ring or Ethernet networks. This TCP/IP implementation supported Telnet sessions using line-mode or terminal emulators and provided FTP server functionality. IBM offered an optional NFS server for VM that evolved into more advanced solutions over time.

Another networking feature was the VM/Pass-Through Facility (PVM), which enabled connectivity between remote VM/CMS installations and other IBM platforms through channel-to-channel or bisync links—including dial-up modems or leased lines. Users could remotely log into systems by issuing "DIAL PVM" at login or utilize the PASSTHRU program to connect without logging off. PVM also accommodated non-VM systems via emulation methods and later supported SNA network connections.

VM was instrumental in BITNET, leveraging RSCS as a straightforward network connecting sites globally. Users exchanged messages, files, and batch jobs; email addressed in user at node format was routed through RSCS to destination systems. With TCP/IP installed, RSCS interfaced with SMTP servers enabling email delivery both within BITNET and across Internet domains.

As hardware transitioned toward 64-bit architectures like the zSeries, virtualization techniques embodied by VM gained prominence within IBM’s mainframe portfolio—which emphasizes backward compatibility tracing back to System/360. This trend increased demand for efficient virtualization supporting diverse workloads including DOS/VSE migrations to MVS environments as well as running mainframe versions of AIX and Linux. The modern z/VM platform has become recognized within IBM for its scalability—some installations operate thousands of concurrent virtual machines on a single host. Released in October 2000, z/VM continues active development.

IBM along with third-party vendors have provided numerous applications tailored for VM environments including RAMIS, FOCUS, SPSS, NOMAD, DB2, REXX, RACF, and OfficeVision. Current offerings encompass mainframe solutions spanning HTTP servers, database management systems, analytics tools, engineering software suites, and financial applications.

CP commands

Beginning with release 6, the VM/370 Control Program provides a set of commands enabling General Users to define and manage their virtual machines. Portions of commands shown in lower-case letters are optional.

Command Description
#CP Execute a CP command from within a command environment or another virtual machine after pressing the break key (default PA1)
ADSTOP Establish an address stop to pause the virtual machine at a designated instruction
ATTN Initiate an attention interruption to allow CP control within a command environment
Begin Resume or continue execution of the virtual machine, optionally starting at a specified address
CHange Adjust attributes of spool files, including output class or printer-specific parameters
Close Close and release an open printer, punch, reader, or console file back to the spooling system
COUPLE Link virtual channel-to-channel adapters (CTCA) or simulated QDIO Ethernet cards to a virtual switch
CP Run a CP command inside a CMS environment
DEFine Modify virtual machine configuration by adding devices or altering storage capacity
DETach Disconnect a virtual device or channel from the configuration
DIAL Connect your terminal at logon to simulated terminals of a logged-on multi-access VM
DISConn Disconnect your terminal while allowing the virtual machine to remain active
Display Present virtual machine storage contents or hardware register values
DUMP Output a snapshot dump of the current VM to the virtual spooled printer
ECHO Activate echoing of typed input lines within the virtual machine
EXTernal Generate an external interrupt directed at the virtual machine
INDicate Show system load statistics or resource utilization information
Ipl Initiate an IPL (boot) process for an OS on your virtual machine
LINK Attach a device from another VM if sharing permissions allow it
LOADVFCB Define a forms control buffer (FCB) for use with a virtual printer
LOGoff
LOGout
End and disconnect the current session of the virtual machine
Logon
Login
Authenticate and sign into the system
Message
MSG
Transmit a single-line message to another user or the system operator
NOTReady Set a virtual device's status to appear not ready
ORDer Rearrange closed spool files by ID or class order
PURge Remove closed spool files by class, ID, or all files collectively
Query Display status details for your VM, including message of the day and logged-in users
READY Initiate a device end interrupt for a specified device
REQuest Generate an interrupt on your virtual console device
RESET Clear all outstanding interrupts associated with a device
REWind Rewind an actual (non-virtual) magnetic tape unit
SET Configure various VM settings, such as messaging options or terminal function keys
SLeep Suspend your VM indefinitely or for a defined period of time
SMsg Send a one-line special message to another VM (commonly used with RSCS)
SPool Manage spooled virtual devices such as printers, readers, and punches
STore Modify values in registers or storage locations within your VM
SYStem Reset, restart, or clear storage areas in your VM environment
TAg Assign identification tags to spooled devices or files for RSCS purposes
TERMinal Configure terminal characteristics and behavior
TRace Begin or halt tracing of specified activities within the VM
TRANsfer Move spool files between different users
VMDUMP Produce a dump of your VM formatted for use with Interactive Problem Control System (IPCS) software


OpenEdition enhancements

With the release of VM/ESA Version 2, IBM launched a paid add-on called OpenEdition for VM/ESA Shell and Utilities Feature, designed to bring POSIX compliance to CMS. A central element of this offering was a UNIX-like shell tailored for CMS users. The C compiler compatible with this setting is provided through C/370 or C for VM/ESA. Since neither the CMS file system nor the conventional VM Shared File System supports UNIX-style file structures and paths, the Byte File System (BFS) serves as the underlying file system. After allocating a BFS extent within an SFS file pool, users mount it using the command OPENVM MOUNT /../VMBFS:fileservername:filepoolname /path/to/mount/point. The root filesystem is accessed by mounting with OPENVM MOUNT /../VMBFS:VMSYS:ROOT/ /, followed by launching the shell via OPENVM SHELL. Unlike standard SFS, BFS enforces file access permissions through POSIX standards, utilizing commands such as chmod and chown.

Starting with z/VM Version 3, IBM incorporated OpenEdition directly into z/VM, rebranding it as OpenExtensions. Both frameworks adhere to POSIX.2 standards for CMS compatibility. Applications compiled under OpenExtensions maintain the same executable format as typical CMS programs. Due to constraints of the 3270 terminal interface, graphical editors like vi are unavailable; consequently, users depend on text editors such as ed or XEDIT.

Marketing

During the early 1980s, the VM user group within SHARE, IBM’s user organization, aimed to establish a mascot that would strengthen community identity. This effort was partly motivated by IBM’s MVS user group adopting a turkey as their symbol. In 1983, at SHARE 60, teddy bears emerged as VM’s unofficial mascot when bear stickers were used to mark experienced members who could assist newcomers. These bears quickly became popular tokens and were subsequently presented to members inducted into the "Order of the Knights of VM," an honor recognizing notable contributions to the VM community.

See also

Further reading

Key CP/CMS sources


Additional CP/CMS references
  • R. J. Adair et al., A Virtual Machine System for the 360/40, IBM Corporation, Cambridge Scientific Center Report No. 320‐2007 (May 1966) ― foundational document detailing virtual machine implementation and the customized CSC S/360-40 alongside CP-40 design
  • International Business Machines Corporation, CP-67/CMS, Program 360D-05.2.005, IBM Program Information Department (June 1969) ― official IBM manual
  • R. A. Meyer and L. H. Seawright, "A virtual machine time-sharing system," IBM Systems Journal, Vol. 9, No. 3 (September 1970) ― description of CP-67/CMS features and use cases
  • R. P. Parmelee et al., "Virtual storage and virtual machine concepts," IBM Systems Journal, Vol. 11, No. 2 (June 1972)


Background CP/CMS literature
  • F. J. Corbató et al., The Compatible Time-Sharing System, A Programmer’s Guide, M.I.T. Press, 1963
  • F. J. Corbató et al., "An Experimental Time-sharing System," Proc. Spring Joint Computer Conference (AFIPS) 21 (1962) — detailed overview of CTSS
  • F. J. Corbató and V. A. Vyssotsky, "Introduction and Overview of the MULTICS System", Proc. Fall Joint Computer Conference (AFIPS) 27 (1965)
  • P. J. Denning, "Virtual Memory", Computing Surveys Vol. 2 (1970)
  • J. B. Dennis, "Segmentation and the Design of Multi-Programmed Computer Systems," JACM Vol. 12 (1965) ― virtual memory considerations for Project MAC targeting GE 645
  • C. A. R. Hoare and R. H. Perrott, Eds., Operating Systems Techniques, Academic Press (1972)
  • T. Kilburn et al., "One-Level Storage System", IRE Trans. Electron. Computers EC-11 (1962) ― Manchester/Ferranti Atlas
  • R. A. Nelson, "Mapping Devices and the M44 Data Processing System," IBM Research Report RC 1303 (1964) ― details on the IBM M44/44X
  • R. P. Parmelee et al., "Virtual Storage and Virtual Machine Concepts", IBM Systems Journal, Vol. 11 (1972)


Additional online CP/CMS resources

External links

de:Z/VM it:VM/CMS