VM (often: VM/CMS ) is a family of IBM virtual machine operating systems used on IBM mainframes System/370 , System/390 , zSeries , System z and compatible systems, including the Hercules emulator for personal computers.
85-606: The heart of the VM architecture is the Control Program or hypervisor abbreviated CP, VM-CP and sometimes, ambiguously, VM. It runs on the physical hardware, and creates the virtual machine environment. VM-CP provides full virtualization of the physical machine – including all I/O and other privileged operations. It performs the system's resource-sharing, including device management, dispatching, virtual storage management, and other traditional operating system tasks. Each VM user
170-662: A S/360-40 modified at the Cambridge Scientific Center to support dynamic address translation , a feature that enabled virtualization. Prior to this time, computer hardware had only been virtualized to the extent to allow multiple user applications to run concurrently, such as in CTSS and IBM M44/44X . With CP-40, the hardware's supervisor state was virtualized as well, allowing multiple operating systems to run concurrently in separate virtual machine contexts. Programmers soon implemented CP-40 (as CP-67 ) for
255-540: A Starter Set . (Forty years later, the Hercules emulator can be used to run fossilized versions of these systems, based on source code that is now treated as part of the public domain .) The importance of operating system source code has changed over time. Before IBM unbundled software from hardware in 1969, the OS (and most other software) was included in the cost of the hardware. Each vendor had complete responsibility for
340-410: A CMS A-disk (virtual device address 191, containing the file pool configuration files), a control disk, a log disk, and any number of data disks that actually store user files. If a user account is configured to only use SFS (and does not own any minidisks), the user's A-disk will be FILEPOOL:USERID. and any subsequent directories that the user creates will be FILEPOOL:USERID.DIR1.DIR2.DIR3 where
425-611: A TCP/IP stack for VM/SP and VM/XA. The stack supported IPv4 networks, and a variety of network interface systems (such as inter-mainframe channel-to-channel links, or a specialized IBM RT PC that would relay traffic out to a Token Ring or Ethernet network). The stack provided support for Telnet connections, from either simple line-mode terminal emulators or VT100-compatible emulators, or proper IBM 3270 terminal emulators. The stack also provided an FTP server. IBM also produced an optional NFS server for VM; early versions were rather primitive, but modern versions are much more advanced. There
510-457: A bare machine, was run in "problem state" under CP. The result was a fully virtualized environment. Each virtual machine had its own set of virtual devices, mapped from the system's real hardware environment. Thus a given dial-up teletype was presented to its VM instance as its virtual console . Note that, in CP-67, certain model-dependent and diagnostic instructions were not virtualized, notably
595-681: A collection of software contributions from IBM staff members (similarly software contributed by customers formed the Type-IV Library). IBM distributed this library to its customers for use 'as is'. The lack of direct IBM support for such products forced active users to support themselves and encouraged modifications and mutual support. CP/CMS and other Type-III products were early forms of free software . Source code distribution of other IBM operating systems may have continued for some time (e.g. OS/360 , DOS/360 , DOS/VSE , MVS , and even TSS/370 , which all today are generally considered to be in
680-574: A complex political and technical milieu , discussed at some length and supported by first-hand quotes in the Misplaced Pages article History of CP/CMS . In a nutshell: CP/CMS was built by IBM's Cambridge Scientific Center (CSC), a research and development lab with ties to MIT , under the leadership of Robert Creasy . The system's goals, development process, release, and legacy of breakthrough technology, set this system apart from other operating systems of its day and from other large IBM projects. It
765-508: A component that could accept connections from a SNA network. VM was also the cornerstone operating system of BITNET , as the RSCS system available for VM provided a simple network that was easy to implement, and somewhat reliable. VM sites were interlinked by means of an RSCS VM on each VM system communicating with one another, and users could send and receive messages, files, and batch jobs through RSCS. The "NOTE" command used XEDIT to display
850-492: A dialog to create an email, from which the user could send it. If the user specified an address in the form of user at node , the email file would be delivered to RSCS, which would then deliver it to the target user on the target system. If the site has TCP/IP installed, RSCS could work with the SMTP service machine to deliver notes (emails) to remote systems, as well as receive them. If the user specified user at some.host.name ,
935-554: A form of collusion to outmaneuver the IBM political forces opposed to time-sharing . It is thought that it may also reflect the amount of formal and informal input from MIT and Union Carbide that contributed to the design and implementation of CP-40, the S/360-67, CP-67, and CMS. See History of CP/CMS (historical notes) for further insights and references on this topic. Many CP/CMS users made extensive modifications to their own copies of
SECTION 10
#17327907784351020-699: A further requirement for small memory-size and low overhead. Finally, in contrast to the ubiquity of the x86 architecture in the PC world, the embedded world uses a wider variety of architectures and less standardized environments. Support for virtualization requires memory protection (in the form of a memory management unit or at least a memory protection unit) and a distinction between user mode and privileged mode , which rules out most microcontrollers . This still leaves x86 , MIPS , ARM and PowerPC as widely deployed architectures on medium- to high-end embedded systems. As manufacturers of embedded systems usually have
1105-413: A global view of scheduling and power management, and fine-grained control of information flows. The use of hypervisor technology by malware and rootkits installing themselves as a hypervisor below the operating system, known as hyperjacking , can make them more difficult to detect because the malware could intercept any operations of the operating system (such as someone entering a password) without
1190-421: A hypervisor runs one or more virtual machines is called a host machine , and each virtual machine is called a guest machine . The hypervisor presents the guest operating systems with a virtual operating platform and manages the execution of the guest operating systems. Unlike an emulator , the guest executes most instructions on the native hardware. Multiple instances of a variety of operating systems may share
1275-466: A maximum of two processors, with the system operating in either UP (uniprocessor) mode, MP (multiprocessor) mode, or AP (attached processor) mode. AP mode is the same as MP mode, except the second processor lacks I/O capability. System/370-XA releases of VM (such as VM/XA) supported more. System/390 releases (such as VM/ESA) almost removed the limit entirely, and some modern z/VM systems can have as many as 80 processors. The per-VM limit for defined processors
1360-494: A series of disputed and bitter battles , time-sharing lost out to batch processing through IBM political infighting, and VM remained IBM's "other" mainframe operating system for decades, losing to MVS . It enjoyed a resurgence of popularity and support from 2000 as the z/VM product, for example as the platform for Linux on IBM Z . As mentioned above, the VM control program includes a hypervisor-call handler that intercepts DIAG ("Diagnose", opcode x'83') instructions used within
1445-645: A shell can then be started with OPENVM SHELL . Unlike the normal SFS, access to BFS filesystems is controlled by POSIX permissions (with chmod and chown ). Starting with z/VM Version 3, IBM integrated OpenEdition into z/VM and renamed it OpenExtensions. OpenEdition and OpenExtensions provide POSIX.2 compliance to CMS. Programs compiled to run under the OpenExtensions shell are stored in the same format as standard CMS executable modules. Visual editors, such as vi are unavailable, as 3270 terminals are not capable. Users can use ed or XEDIT instead of vi. In
1530-515: A simple, single-user operating system. CMS allowed users to run programs and manage their virtual devices. CP-67 versions 1 and 2 did not support virtual memory inside a virtual machine. This was added in version 3. At that point, testing and development of CP itself could be done by running a full copy of CP/CMS inside a single virtual machine. Some CP/CMS operating system work, such as CP-370 development and MVS testing, ran four- or five-level deep stacks of hardware and OS simulations. The CP/CMS design
1615-520: A single system. z/VM was first released in October 2000 and remains in active use and development. IBM and third parties have offered many applications and tools that run under VM. Examples include RAMIS , FOCUS , SPSS , NOMAD , DB2 , REXX , RACF , and OfficeVision . Current VM offerings run the gamut of mainframe applications, including HTTP servers, database managers, analysis tools, engineering packages, and financial systems. As of release 6,
1700-540: A vendor-supplied operating system was unusual. In the CP/CMS era, many vendors distributed operating systems in machine-readable source code . IBM provided optional source code for, e.g., OS/360 , DOS/360 , and several later mainstream IBM operating systems. With all these systems, some awareness of system source code was also involved in the SYSGEN process, comparable to a kernel build in modern systems also in installing
1785-463: A virtual machine. This provides fast-path non-virtualized execution of file-system access and other operations (DIAG is a model-dependent privileged instruction, not used in normal programming, and thus is not virtualized. It is therefore available for use as a signal to the "host" operating system). When first implemented in CP/CMS release 3.1, this use of DIAG provided an operating system interface that
SECTION 20
#17327907784351870-574: Is 64. When IBM introduced the System/370 Extended Architecture on the 3081 , customers were faced with the need to run a production MVS/370 system while testing MVS/XA on the same machine. IBM's solution was VM/XA Migration Aid, which used the new Start Interpretive Execution (SIE) instruction to run the virtual machine. SIE automatically handled some privileged instructions and returned to CP for cases that it couldn't handle. The Processor Resource/System Manager (PR/SM) of
1955-580: Is a privileged instruction originally intended by IBM to perform "built-in diagnostic functions, or other model-dependent functions." IBM repurposed DIAG for "communication between a virtual machine and CP." The instruction contains two four-bit register numbers, called Rx and Ry, which can "contain operand storage addresses or return codes passed to the DIAGNOSE interface," and a two-byte code "that CP uses to determine what DIAGNOSE function to perform." The available diagnose functions include: At one time, CMS
2040-544: Is a microkernel implementing virtualization infrastructure that must run in kernel-space for technical reasons, such as Intel VMX . Microkernels implementing virtualization mechanisms are also referred to as microhypervisor . Applying this terminology to Linux , KVM is a hypervisor and QEMU or Cloud Hypervisor are VMMs utilizing KVM as hypervisor. In his 1973 thesis, "Architectural Principles for Virtual Computer Systems," Robert P. Goldberg classified two types of hypervisor: The distinction between these two types
2125-471: Is a variant of supervisor , a traditional term for the kernel of an operating system : the hypervisor is the supervisor of the supervisors, with hyper- used as a stronger variant of super- . The term dates to circa 1970; IBM coined it for software that ran OS/360 and the 7090 emulator concurrently on the 360/65 and later used it for the DIAG handler of CP-67. In the earlier CP/CMS (1967) system,
2210-557: Is another operating system, a guest operating system . This might be: The following versions are known: The CMS in the name refers to the Conversational Monitor System, a component of the product that is a single-user operating system that runs in a virtual machine and provides conversational time-sharing in VM. IBM coined the term hypervisor for the 360/65 and later used it for the DIAG handler of CP-67. The Diagnose instruction ('83'x—no mnemonic)
2295-492: Is different from IBM's previous monolithic operating systems , it separates complex "big system" (dispatching, hardware management, mass storage) from "little system" (application program execution, file I/O, console input/output). The re-categorization of both systems into their own entities prevents a bug in one users' system from affecting both. This is a model feature in microkernel operating systems. IBM's decision to implement virtualization and virtual memory features in
2380-722: Is heavily discouraged, because Integrity VM implements its own memory management, scheduling and I/O policies that are tuned for virtual machines and are not as effective for normal applications. HPE also provides more rigid partitioning of their Integrity and HP9000 systems by way of VPAR and nPar technology, the former offering shared resource partitioning and the latter offering complete I/O and processing isolation. The flexibility of virtual server environment (VSE) has given way to its use more frequently in newer deployments. IBM provides virtualization partition technology known as logical partitioning (LPAR) on System/390 , zSeries , pSeries and IBM AS/400 systems. For IBM's Power Systems,
2465-550: Is known for its excellent performance and advanced features. Among its three versions, CP-40 /CMS was an important 'one-off' research system that established the CP/CMS virtual machine architecture. It was followed by CP-67 /CMS, a reimplementation of CP-40/CMS for the IBM System/360-67 , and the primary focus of this article. Finally, CP-370 /CMS was a reimplementation of CP-67/CMS for the System/370 . While it
2550-516: Is not always clear. For instance, KVM and bhyve are kernel modules that effectively convert the host operating system to a type-1 hypervisor. The first hypervisors providing full virtualization were the test tool SIMMON and the one-off IBM CP-40 research system, which began production use in January 1967 and became the first version of the IBM CP/CMS operating system. CP-40 ran on
2635-628: Is provided by either C/370 or C for VM/ESA. Neither the CMS filesystem nor the standard VM Shared File System has any support for UNIX-style files and paths; instead, the Byte File System is used. Once a BFS extent is created in an SFS file pool, the user can mount it using the OPENVM MOUNT /../VMBFS:fileservername:filepoolname /path/to/mount/point . The user must also mount the root filesystem, done with OPENVM MOUNT /../VMBFS:VMSYS:ROOT/ / ,
VM (operating system) - Misplaced Pages Continue
2720-412: Is provided with a separate virtual machine having its own address space , virtual devices, etc., and which is capable of running any software that could be run on a stand-alone machine. A given VM mainframe typically runs hundreds or thousands of virtual machine instances. VM-CP began life as CP-370, a reimplementation of CP-67 , itself a reimplementation of CP-40 . Running within each virtual machine
2805-473: The IBM System/360-67 , the first production computer system capable of full virtualization. IBM shipped this machine in 1966; it included page-translation-table hardware for virtual memory and other techniques that allowed a full virtualization of all kernel tasks, including I/O and interrupt handling. (Note that the "official" operating system, the ill-fated TSS/360 , did not employ full virtualization.) Both CP-40 and CP-67 began production use in 1967. CP/CMS
2890-583: The POWER6 processor. LPAR and MSPP capacity allocations can be dynamically changed. Memory is allocated to each LPAR (at LPAR initiation or dynamically) and is address-controlled by the POWER Hypervisor. For real-mode addressing by operating systems ( AIX , Linux , IBM i ), the Power processors ( POWER4 onwards) have designed virtualization capabilities where a hardware address-offset is evaluated with
2975-560: The XT/370 (and later on the AT/370) is called VM/PC. VM/PC 1.1 was based on VM/SP release 3. When IBM introduced the P/370 and P/390 processor cards, a PC could now run full VM systems, including VM/370, VM/SP, VM/XA, and VM/ESA (these cards were fully compatible with S/370 and S/390 mainframes, and could run any S/370 operating system from the 31-bit era, e.g., MVS/ESA, VSE/ESA). In addition to
3060-524: The public domain ) since they were arguably published without a copyright notice before 1978. } However, the unsupported status of CP/CMS placed different pressures on its user community and created the need for source code distribution. CP/CMS was contributed to the Type-III Library by MIT's Lincoln Laboratory and not by IBM, despite the fact that the system was built by IBM's Cambridge Scientific Center . This decision has been described as
3145-413: The public domain . This policy ended in 1977 with the chargeable VM/SE and VM/BSE upgrades and in 1980 with VM/System Product (VM/SP). However, IBM continued providing updates in source form for existing code for many years, although the upgrades to all but the free base required a license. As with CP-67, privileged instructions in a virtual machine cause a program interrupt, and CP simulated the behavior of
3230-696: The 1960s-era IBM S/360 line. The 1972 announcement also included VM/370 , a reimplementation of CP/CMS for the S/370. Unlike CP/CMS , IBM provided support for this version (though it was still distributed in source code form for several releases). VM stands for Virtual Machine , emphasizing that all, not just some, of the hardware interfaces are virtualized. Both VM and CP/CMS enjoyed early acceptance and rapid development by universities, corporate users, and time-sharing vendors, as well as within IBM. Users played an active role in ongoing development, anticipating trends seen in modern open source projects. However, in
3315-606: The CMS VM performing the writes may be unaware that another CMS instance is also writing to the minidisk). The file pool server machines also serve a closely related filesystem: the Byte File System. BFS is used to store files on a UNIX-style filesystem. Its primary use is for the VM OpenExtensions POSIX environment for CMS. The CMS user virtual machines themselves communicate with the SFS server virtual machines through
3400-442: The DIAG instruction. Ultimately, in later development at IBM and elsewhere, DIAG instructions were used to create a non-virtualized interface, to what became called a hypervisor . Client operating systems could use this mechanism to communicate directly with the control program; this offered dramatic performance improvements. Any S/360 operating system could in fact be run under CP, but normal users ran Cambridge Monitor System (CMS),
3485-500: The IUCV mechanism. The early history of VM is described in the articles CP/CMS and History of CP/CMS . VM/370 is a reimplementation of CP/CMS, and was made available in 1972 as part of IBM's System/370 Advanced Function announcement (which added virtual memory hardware and operating systems to the System/370 series). Early releases of VM through VM/370 Release 6 continued in open source through 1981, and today are considered to be in
VM (operating system) - Misplaced Pages Continue
3570-541: The Integrity VM hypervisor layer that allows for many important features of HP-UX to be taken advantage of and provides major differentiation between this platform and other commodity platforms - such as processor hotswap, memory hotswap, and dynamic kernel updates without system reboot. While it heavily leverages HP-UX, the Integrity VM hypervisor is really a hybrid that runs on bare-metal while guests are executing. Running normal HP-UX applications on an Integrity VM host
3655-573: The NOTE program would deliver the email to the SMTP service machine, which would then route it out to the destination site on the Internet. VM's role changed within IBM when hardware evolution led to significant changes in processor architecture. Backward compatibility remained a cornerstone of the IBM mainframe family, which still uses the basic instruction set introduced with the original System/360 ; but
3740-857: The OS address-offset to arrive at the physical memory address. Input/Output (I/O) adapters can be exclusively "owned" by LPARs or shared by LPARs through an appliance partition known as the Virtual I/O Server (VIOS). The Power Hypervisor provides for high levels of reliability, availability and serviceability (RAS) by facilitating hot add/replace of many parts (model dependent: processors, memory, I/O adapters, blowers, power units, disks, system controllers, etc.) Similar trends have occurred with x86/x86-64 server platforms, where open-source projects such as Xen have led virtualization efforts. These include hypervisors built on Linux and Solaris kernels as well as custom kernels. Since these technologies span from large systems down to desktops, they are described in
3825-483: The POWER Hypervisor (PHYP) is a native (bare-metal) hypervisor in firmware and provides isolation between LPARs. Processor capacity is provided to LPARs in either a dedicated fashion or on an entitlement basis where unused capacity is harvested and can be re-allocated to busy workloads. Groups of LPARs can have their processor capacity managed as if they were in a "pool" - IBM refers to this capability as Multiple Shared-Processor Pools (MSPPs) and implements it in servers with
3910-474: The VM login screen, then entering the system node name (or choosing it from a list of available nodes). Alternatively, a user running CMS could use the PASSTHRU program that was installed alongside PVM, allowing for quick access to remote systems without having to log out of the user's session. PVM also supported accessing non-VM systems, by utilizing a 3x74 emulation technique. Later releases of PVM also featured
3995-529: The VM/370 Control Program has a number of commands for General Users, concerned with defining and controlling the user's virtual machine. Lower-case portions of the command are optional Starting with VM/ESA Version 2, IBM introduced the chargeable optional feature OpenEdition for VM/ESA Shell and Utilities Feature , which provides POSIX compatibility for CMS. The stand-out feature was a UNIX shell for CMS. The C compiler for this UNIX environment
4080-533: The anti-malware software necessarily detecting it (since the malware runs below the entire operating system). Implementation of the concept has allegedly occurred in the SubVirt laboratory rootkit (developed jointly by Microsoft and University of Michigan researchers ) as well as in the Blue Pill malware package. However, such assertions have been disputed by others who claim that it would be possible to detect
4165-449: The base VM/SP releases, IBM also introduced VM/SP HPO (High Performance Option). This add-on (which is installed over the base VM/SP release) improved several key system facilities, including allowing the usage of more than 16 MB of storage (RAM) on supported models (such as the IBM 4381). With VM/SP HPO installed, the new limit was 64 MB; however, a single user (or virtual machine) could not use more than 16 MB. The functions of
4250-557: The early 1980s, the VM group within SHARE (the IBM user group) sought a mascot or logo for the community to adopt. This was in part a response to IBM's MVS users selecting the turkey as a mascot (chosen, according to legend, by the MVS Performance Group in the early days of MVS, when its performance was a sore topic). In 1983, the teddy bear became VM's de facto mascot at SHARE 60, when teddy bear stickers were attached to
4335-482: The entire life of the product. In fact, the first 168 delivered to a customer ran only CP and CMS. Ten years later, ten percent of the large processors being shipped from Poughkeepsie would be destined to run VM, as would a very substantial portion of the mid-range machines that were built in Endicott. Before fifteen years had passed, there would be more VM licenses than MVS licenses. A PC DOS version that runs CMS on
SECTION 50
#17327907784354420-436: The entire system, hardware and software. This made the distribution medium relatively unimportant. After IBM's unbundling, OS software was delivered as IBM System Control Program software IBM System Control Program (SCP) software , eventually in object code only (OCO) form. For complicated reasons, CP/CMS was not released in the normal way. It was not supported by IBM, but was made part of the unsupported IBM Type-III Library ,
4505-405: The equivalent UNIX file path is /dir1/dir2/dir3 . SFS directories can have much more granular access controls when compared to minidisks (which, as mentioned above, can often only have a read password, a write password, and a multi-write password). SFS directories also solve the issues that may arise when two users write to the same CMS minidisk at the same time, which may cause disk corruption (as
4590-490: The filepool server machines. VM/SP Release 6 introduced the Shared File System which vastly improved CMS file storage capabilities. The CMS minidisk file system does not support directories (folders) at all, however, the SFS does. SFS also introduces more granular security. With CMS minidisks, the system can be configured to allow or deny users read-only or read-write access to a disk, but single files cannot have
4675-818: The hypervisor (and can all run simultaneously on the same processor, as fully virtualized independent guest OSes). Wind River "Carrier Grade Linux" also runs on Sun's Hypervisor. Full virtualization on SPARC processors proved straightforward: since its inception in the mid-1980s Sun deliberately kept the SPARC architecture clean of artifacts that would have impeded virtualization. (Compare with virtualization on x86 processors below.) HPE provides HP Integrity Virtual Machines (Integrity VM) to host multiple operating systems on their Itanium powered Integrity systems. Itanium can run HP-UX , Linux, Windows and OpenVMS , and these environments are also supported as virtual servers on HP's Integrity VM platform. The HP-UX operating system hosts
4760-818: The hypervisor simulates. This is called paravirtualization in Xen , a "hypercall" in Parallels Workstation , and a "DIAGNOSE code" in IBM VM . Some microkernels, such as Mach and L4 , are flexible enough to allow paravirtualization of guest operating systems. Embedded hypervisors , targeting embedded systems and certain real-time operating system (RTOS) environments, are designed with different requirements when compared to desktop and enterprise systems, including robustness, security and real-time capabilities. The resource-constrained nature of many embedded systems, especially battery-powered mobile systems, imposes
4845-420: The later 3090 also used SIE. There were several VM/XA products before it was eventually supplanted by VM/ESA and z/VM. In addition to RSCS networking, IBM also provided users with VTAM networking. ACF/VTAM for VM was fully compatible with ACF/VTAM on MVS and VSE. Like RSCS, VTAM on VM ran under the specialized GCS operating system. However, VM also supported TCP/IP networking. In the late 1980s, IBM produced
4930-590: The meantime, the system struggled with political infighting within IBM over what resources should be available to the project, as compared with other IBM efforts. A basic problem with the system was seen at IBM's field sales level: VM/CMS demonstrably reduced the amount of hardware needed to support a given number of time-sharing users. IBM was, after all, in the business of selling computer systems. Melinda Varian provides this fascinating quote, illustrating VM's unexpected success: The marketing forecasts for VM/370 predicted that no more than one 168 would ever run VM during
5015-474: The multimillion-dollar range at the high end), although virtualization has also been available on some low- and mid-range systems, such as IBM pSeries servers, HP Superdome series machines, and Sun / Oracle T-series CoolThreads servers. Although Solaris has always been the only guest domain OS officially supported by Sun/Oracle on their Logical Domains hypervisor, as of late 2006 , Linux (Ubuntu and Gentoo), and FreeBSD have been ported to run on top of
5100-560: The nametags of "cuddlier oldtimers" to flag them for newcomers as "friendly if approached". The bears were a hit and soon appeared widely. Bears were awarded to inductees of the "Order of the Knights of VM", individuals who made "useful contributions" to the community. Hypervisor A hypervisor , also known as a virtual machine monitor ( VMM ) or virtualizer , is a type of computer software , firmware or hardware that creates and runs virtual machines . A computer on which
5185-455: The need for efficient use of the 64-bit zSeries made the VM approach much more attractive. VM was also utilized in data centers converting from DOS/VSE to MVS and is useful when running mainframe AIX and Linux , platforms that were to become increasingly important. The current z/VM platform has finally achieved the recognition within IBM that VM users long felt it deserved. Some z/VM sites run thousands of simultaneous virtual machine users on
SECTION 60
#17327907784355270-509: The next section. X86 virtualization was introduced in the 1990s, with its emulation being included in Bochs . Intel and AMD released their first x86 processors with hardware virtualisation in 2005 with Intel VT-x (code-named Vanderpool) and AMD-V (code-named Pacifica). An alternative approach requires modifying the guest operating system to make a system call to the underlying hypervisor, rather than executing machine I/O instructions that
5355-528: The predecessor of the VM family, CP/CMS played an important role in the development of operating system (OS) theory, the design of IBM 's System/370, the time-sharing industry, and the creation of a self-supporting user community that anticipated today's free software movement . Fundamental CP/CMS architectural and strategic parameters were established in CP-40, which began production use at IBM's Cambridge Scientific Center in early 1967. This effort occurred in
5440-414: The presence of a hypervisor-based rootkit. In 2009, researchers from Microsoft and North Carolina State University demonstrated a hypervisor-layer anti-rootkit called Hooksafe that can provide generic protection against kernel-mode rootkits . CP/CMS CP/CMS ( Control Program/Cambridge Monitor System ) is a discontinued time-sharing operating system of the late 1960s and early 1970s. It
5525-417: The privileged instruction. VM remained an important platform within IBM, used for operating system development and time-sharing use; but for customers it remained IBM's "other operating system". The OS and DOS families remained IBM's strategic products, and customers were not encouraged to run VM. Those that did formed close working relationships, continuing the community-support model of early CP/CMS users. In
5610-451: The same channel programs as the real disk. A minidisk that has been initialized with a CMS file system is referred to as a CMS minidisk, although CMS is not the only system that can use them. It is common practice to define full volume minidisks for use by such guest operating systems as z/OS instead of using DEDICATE to assign the volume to a specific virtual machine. In addition, "full-pack links" are often defined for every DASD on
5695-537: The same security. SFS alleviates this, and vastly improves performance. The SFS is provided by service virtual machines. On a modern VM system, there are usually three that are required: VMSERVR, the "recovery machine" that does not actually serve any files; VMSERVS, the server for the VMSYS filepool; and VMSERVU, the server for the VMSYSU (user) filepool. The file pool server machines own several minidisks, usually including
5780-405: The sizes of actual volumes. For this reason CP allows an installation to define virtual disks of any size up to the capacity of the device. For CKD volumes, a minidisk must be defined in full cylinders. A minidisk has the same attributes as the underlying real disk, except that it is usually smaller and the beginning of each minidisk is mapped to cylinder or block 0. The minidisk may be accessed using
5865-569: The software, as it had during the CP/CMS Type-III period. Few OS or DOS sites exhibited active user involvement in deep operating system internals, but this was found at many VM sites. This reverse support helped CP/CMS concepts survive and evolve, despite VM's second class citizen status at IBM. The CP/CMS architecture was revolutionary for its time. The system consisted of a virtualizing control program (CP) which created multiple independent virtual machines (VMs). Platform virtualization
5950-662: The source code to their operating systems, they have less need for full virtualization in this space. Instead, the performance advantages of paravirtualization make this usually the virtualization technology of choice. Nevertheless, ARM and MIPS have recently added full virtualization support as an IP option and has included it in their latest high-end processors and architecture versions, such as ARM Cortex-A15 MPCore and ARMv8 EL2. Other differences between virtualization in server/desktop and embedded environments include requirements for efficient sharing of resources across virtual machines, high-bandwidth, low-latency inter-VM communication,
6035-501: The source code. Much of this work was shared among sites, and important changes found their way back into the core system. Other users, such as National CSS and some academic sites, continued independent development of CP/CMS, rather than switching to VM/370 when it became available. These efforts diverged from the community, in what today would be termed a software fork . After IBM released VM/370, source code distribution of VM continued for several releases. (The VM project did not adopt
6120-580: The spool filesystem were also improved, allowing 9900 spool files to be created per user, rather than 9900 for the whole system. The architecture of the spool filesystem was also enhanced, each spool file now had a unique user ID associated with it, and reader file control blocks were now held in virtual storage. The system could also be configured to deny certain users access to the vector facility (by means of user directory entries). Releases of VM since VM/SP Release 1 supported multiprocessor systems. System/370 versions of VM (such as VM/SP and VM/SP HPO) supported
6205-489: The stable main production system, and without requiring costly additional development systems. IBM announced its System/370 series in 1970 without the virtual memory feature needed for virtualization, but added it in the August 1972 Advanced Function announcement. Virtualization has been featured in all successor systems, such that all modern-day IBM mainframes, including the zSeries line, retain backward compatibility with
6290-523: The system, and are owned by the MAINT userid. These are used for backing up the system using the DASD Dump/Restore program, where the entire contents of a DASD are written to tape (or another DASD) exactly. With modern VM versions, most of the system can be installed to SFS, with the few remaining minidisks being the ones absolutely necessary for the system to start up, and the ones being owned by
6375-402: The term Control Program was used instead. Some literature, especially in microkernel contexts, makes a distinction between hypervisor and virtual machine monitor (VMM). There, both components form the overall virtualization stack of a certain system. Hypervisor refers to kernel-space functionality and VMM to user-space functionality. Specifically in these contexts, a hypervisor
6460-602: The use of PL/S , an internal systems programming language mandated for use within IBM on many comparable projects. The use of PL/S would have made source code distribution impossible. IBM attempted to turn away from assembly language to higher level languages as early as 1965, and was making substantial use of PL/S by 1969, e.g. in MVS. PL/S was considered a trade secret at the time and was not available to customers. IBM apparently made exceptions to this policy much later. ) The VM user community continued to make important contributions to
6545-425: The virtualized hardware resources: for example, Linux , Windows , and macOS instances can all run on a single physical x86 machine. This contrasts with operating-system–level virtualization , where all instances (usually called containers ) must share a single kernel, though the guest operating systems can differ in user space , such as different Linux distributions with the same kernel. The term hypervisor
6630-554: Was added to the S/370 series. VM/370's successors (such as z/VM ) remain in wide use today. (IBM reimplemented CP-67, as it had CP-40, and did not simply rename and repackage it. VM coexisted with CP/CMS and its successors for many years. It is thus appropriate to view CP/CMS as an independent OS, distinct from the VM family.) CP/CMS was distributed in source code form, and many CP/CMS users were actively involved in studying and modifying that source code. Such direct user involvement with
6715-406: Was also a fourth networking option, known as VM/Pass-Through Facility (or more commonly called, PVM). PVM, like VTAM, allowed for connections to remote VM/CMS systems, as well as other IBM systems. If two VM/CMS nodes were linked together over a channel-to-channel link or bisync link (possibly using a dialup modem or leased line), a user could remotely connect to either system by entering "DIAL PVM" on
6800-579: Was an open-source system, made available in source code form to all IBM customers at no charge – as part of the unsupported IBM Type-III Library . CP/CMS users supported themselves and each other. Unusual circumstances, described in the History section below, led to this situation. CP/CMS consisted of two main components: The CP/CMS virtual machine concept was an important step forward in operating system design. IBM reimplemented CP/CMS as its VM/370 product line, released in 1972 when virtual memory
6885-716: Was analogous to the System/360 Supervisor Call instruction (SVC), but that did not require altering or extending the system's virtualization of SVC. In 1985 IBM introduced the PR/SM hypervisor to manage logical partitions (LPAR). Several factors led to a resurgence around 2005 in the use of virtualization technology among Unix , Linux , and other Unix-like operating systems: Major Unix vendors, including HP , IBM , SGI , and Sun Microsystems , have been selling virtualized hardware since before 2000. These have generally been large, expensive systems (in
6970-577: Was available to IBM customers from 1968 to early 1970s, in source code form without support. CP/CMS formed part of IBM's attempt to build robust time-sharing systems for its mainframe computers. By running multiple operating systems concurrently, the hypervisor increased system robustness and stability: Even if one operating system crashed, the others would continue working without interruption. Indeed, this even allowed beta or experimental versions of operating systems—or even of new hardware —to be deployed and debugged, without jeopardizing
7055-407: Was capable of running on a bare machine , as a true operating system (though such a configuration would be unusual). It now runs only as a guest OS under VM. This is because CMS relies on a hypervisor interface to VM-CP, to perform file system operations and request other VM services. This paravirtualization interface: CMS and other operating systems often have DASD requirements much smaller than
7140-461: Was never released as such, it became the foundation of IBM 's VM/370 operating system, announced in 1972. Each implementation was a substantial redesign of its predecessor and an evolutionary step forward. CP-67/CMS was the first widely available virtual machine architecture. IBM pioneered this idea with its research systems M44/44X (which used partial virtualization ) and CP-40 (which used full virtualization ). In addition to its role as
7225-488: Was possible because of two elements of the IBM System/360-67: When a program was running in "problem state," using a privileged instruction or an invalid memory address would cause the hardware to raise an exception condition. By trapping these conditions, CP could simulate the appropriate behavior, e.g. performing I/O or paging operations. A guest operating system, which would run in "supervisor state" on
#434565