Last updated
Developer IBM Cambridge Scientific Center
OS family VM
Working stateHistoric
Source modelSource code (see text for details)
Initial releaseMay 1968;51 years ago (1968-05)
Latest release 3.2 / 1972;47 years ago (1972)
Available in English
Platforms IBM System/360-67; also System/370 with virtual memory hardware (not present in original S/370 models); also used on experimental hardware
Default user interface Command-line interface
License IBM Type-III Library (free in source code form at no charge to IBM customers, without support)

CP/CMS (Control Program/Cambridge Monitor System) is a discontinued time-sharing operating system of the late 60s and early 70s, known for its excellent performance and advanced features. [1] [2] It had three distinct versions:

In computing, time-sharing is the sharing of a computing resource among many users by means of multiprogramming and multi-tasking at the same time.

Operating system Software that manages computer hardware resources

An operating system (OS) is system software that manages computer hardware and software resources and provides common services for computer programs.


CP-40 was a research precursor to CP-67, which in turn was part of IBM's then-revolutionary CP[-67]/CMS – a virtual machine/virtual memory time-sharing operating system for the IBM System/360 Model 67, and the parent of IBM's VM family. CP-40 ran multiple instances of client operating systems – particularly CMS, the Cambridge Monitor System, built as part of the same effort. Like CP-67, CP-40 and the first version of CMS were developed by IBM's Cambridge Scientific Center (CSC) staff, working closely with MIT researchers at Project MAC and Lincoln Laboratory. CP-40/CMS production use began in January 1967. CP-40 ran on a unique, specially modified IBM System/360 Model 40.

In computing, a virtual machine (VM) is an emulation of a computer system. Virtual machines are based on computer architectures and provide functionality of a physical computer. Their implementations may involve specialized hardware, software, or a combination.

CP-67 was the control program portion of CP/CMS, a virtual machine operating system developed for the IBM System/360-67 by IBM's Cambridge Scientific Center. It was a reimplementation of their earlier research system CP-40, which ran on a one-off customized S/360-40. CP-67 was later reimplemented (again) as CP-370, which IBM released as VM/370 in 1972, when virtual memory was added to the System/370 series. Details on the development and circumstances of CP-67 can be found in the article History of CP/CMS.

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).

The IBM M44/44X was an experimental computer system from the mid-1960s, designed and operated at IBM's Thomas J. Watson Research Center at Yorktown Heights, New York. It was based on an IBM 7044, and simulated multiple 7044 virtual machines, using both hardware and software. Key team members were Dave Sayre and Rob Nelson. This was a groundbreaking machine, used to explore paging, the virtual machine concept, and computer performance measurement. It was purely a research system, and was cited in 1981 by Peter Denning as an outstanding example of experimental computer science.

Full virtualization

In computer science, virtualization is a modern technique developed in late 1990s and is different from simulation and emulation. Virtualization employs techniques used to create instances of an environment, as opposed to simulation, which models the environment; or emulation, which replicates the target environment such as certain kind of virtual machine environment. Full virtualization requires that every salient feature of the hardware be reflected into one of several virtual machines – including the full instruction set, input/output operations, interrupts, memory access, and whatever other elements are used by the software that runs on the bare machine, and that is intended to run in a virtual machine. In such an environment, any software capable of execution on the raw hardware can be run in the virtual machine and, in particular, any operating systems. The obvious test of full virtualization is whether an operating system intended for stand-alone use can successfully run inside a virtual machine.

In addition to its role as 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.

Free software movement Social and political movement

The free software movement (FSM) or free/open-source software movement (FOSSM) or free/libre open-source software movement (FLOSSM) is a social movement with the goal of obtaining and guaranteeing certain freedoms for software users, namely the freedom to run the software, to study and change the software, and to redistribute copies with or without changes. Although drawing on traditions and philosophies among members of the 1970s hacker culture and academia, Richard Stallman formally founded the movement in 1983 by launching the GNU Project. Stallman later established the Free Software Foundation in 1985 to support the movement.


> IBM M44/44X
>> CP-40/CMS CP[-67]/CMS  VM/370 → VM/SE versions → VM/SP versions → VM/XA versions → VM/ESAz/VM
> TSS/360
> TSO for MVT → for OS/VS2 → for MVS → ... → for z/OS
>> MULTICS and most other time-sharing platforms

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 OSes of its day and from other large IBM projects. It 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.

The IBM Cambridge Scientific Center was a company research laboratory established in February 1964 in Cambridge, Massachusetts. Situated at 545 Technology Square, in the same building as MIT's Project MAC, it was later renamed the IBM Scientific Center. It is most notable for creating the CP-40 and the control program portions of CP/CMS, a virtual machine operating system developed for the IBM System/360-67.

Research and development General term for activities in connection with corporate or governmental innovation

Research and development, known in Europe as research and technological development (RTD), refers to innovative activities undertaken by corporations or governments in developing new services or products, or improving existing services or products. Research and development constitutes the first stage of development of a potential new service or the production process.

Robert Jay Creasy was the project leader of the first full virtualization hypervisor, the IBM CP-40, which later developed into IBM's highly successful line of mainframe VM operating systems.

CP/CMS consisted of two main components:

In computer science, bare machine refers to a computer executing instructions directly on logic hardware without an intervening operating system. Modern operating systems evolved through various stages, from elementary to the present day complex, highly sensitive systems incorporating many services. After the development of programmable computers but prior to the development of operating systems, sequential instructions were executed on the computer hardware directly using machine language without any system software layer. This approach is termed the "bare machine" precursor to modern operating systems. Today it is mostly applicable to embedded systems and firmware generally with time-critical latency requirements, while conventional programs are run by a runtime system overlaid on an operating system.

The Conversational Monitor System is a simple interactive single-user operating system. CMS was originally developed as part of IBM's CP/CMS operating system, which went into production use in 1967. CMS is part of IBM's VM family, which runs on IBM mainframe computers. VM was first announced in 1972, and is still in use today as z/VM.

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 was added to the S/370 series. VM/370's successors (such as z/VM) remain in wide use today. (It is important to note that 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 as free software

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 a vendor-supplied operating system was unusual.

In the CP/CMS era many vendors distributed operating systems in machine-readable source code[ clarification needed ]. It is possible that OS/360, DOS/360, and a number of later "mainstream" IBM operating systems were distributed in this way. 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 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 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 (SCP) software, eventually in "object code only" form, but still at no additional charge.

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, a collection of software contributed by IBM personnel (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 the public domain) since they were arguably published without a copyright notice before 1978. [4] [5] However, the unsupported status of CP/CMS placed different pressures on its user community and created the need for source code distribution.

Curiously, 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 surprising decision has been described as a form of "collusion" to outmaneuver the IBM political forces opposed to time-sharing[ citation needed ]. It may also reflect the amount of formal and informal input from MIT and Union Carbide that was 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 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 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. [6] [7] ) The VM user community continued to make important contributions to 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.


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 a complex political and technical milieu, discussed at some length and supported by first-hand quotes in the Wikipedia article History of CP/CMS.

In a nutshell:


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 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 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 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), 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 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 the subsequent S/370 design (although missing from the initial S/370 series) reflects, at least in part, the success of the CP/CMS approach. In turn the survival and success of IBM's VM operating system family, and of virtualization technology in general, owe much to the S/360-67.

In many respects, IBM's CP-67 and CP/CMS products anticipated (and heavily influenced) contemporary virtualization software, such as VMware Workstation, Xen, and Microsoft Virtual PC.

See also


  1. Stuart E. Madnick (1969) "Time-Sharing Systems: Virtual Machine Concept vs. Conventional Approach" (PDF). Retrieved 2012-09-13. Modern Data Systems, Vol. 2, No. 3, pp. 34-36.
  2. Stuart Madnick (1976) "Virtual Machine Advantages in Security, Integrity, and Decision Support Systems" (PDF). Retrieved 2012-09-13. IBM Systems Journal, Vol. 15, No. 3.
  3. Creasy, op. cit., p. 488 "Console Monitor System"
  4. cf. Hercules emulator, which is apparently used to run these historic systems without raising complaints from IBM; the systems can be argued to have been "published" by IBM perhaps as machine readable source code, certainly as microfiche
  5. public domain: "Until the Berne Convention Implementation Act of 1988, the lack of a proper copyright notice would force an otherwise copyrightable work into the public domain...."
  6. Pugh et al., p. 737, note 166 citing the C. H. Reynolds August 1965 PL/I policy statement" mandating use of PL/I
  7. W. R. Brittenham, The development of PL/S, IBM Tchnical Report (1974) cited in Pugh


Primary CP/CMS sources

Additional CP/CMS sources

  • R. J. Adair, R. U. Bayles, L. W. Comeau and R. J. Creasy, A Virtual Machine System for the 360/40, IBM Corporation, Cambridge Scientific Center Report No. 320‐2007 (May 1966)
    ― a seminal paper describing implementation of the virtual machine concept, with descriptions of the customized CSC S/360-40 and the CP-40 design
  • International Business Machines Corporation, CP-67/CMS, Program 360D-05.2.005, IBM Program Information Department (June 1969)
    ― IBM's reference manual
  • R. A. Meyer and L. H. Seawright, "A virtual machine time-sharing system," IBM Systems Journal, Vol. 9, No. 3, pp. 199–218 (September 1970)
    ― describes the CP-67/CMS system, outlining features and applications
  • R. P. Parmelee, T. I. Peterson, C. C. Tillman, and D. J. Hatfield, "Virtual storage and virtual machine concepts," IBM Systems Journal, Vol. 11, No. 2 (June 1972)

Background CP/CMS sources

  • F. J. Corbató, et al., The Compatible Time-Sharing System, A Programmer’s Guide, M.I.T. Press, 1963
  • F. J. Corbató, M. Merwin-Daggett, and R. C. Daley, "An Experimental Time-sharing System," Proc. Spring Joint Computer Conference (AFIPS) 21, pp. 335–44 (1962) — description of CTSS
  • F. J. Corbató and V. A. Vyssotsky, "Introduction and Overview of the MULTICS System", Proc. Fall Joint Computer Conference (AFIPS) 27, pp. 185–96 (1965)
  • P. J. Denning, "Virtual Memory", Computing Surveys Vol. 2, pp. 153–89 (1970)
  • J. B. Dennis, "Segmentation and the Design of Multi-Programmed Computer Systems," JACM Vol. 12, pp. 589–602 (1965)
    ― virtual memory requirements for Project MAC, destined for GE 645
  • C. A. R. Hoare and R. H. Perrott, Eds., Operating Systems Techniques, Academic Press, Inc., New York (1972)
  • T. Kilburn, D. B. G. Edwards, M. J. Lanigan, and F. H. Sumner, "One-Level Storage System", IRE Trans. Electron. Computers EC-11, pp. 223–35 (1962)
    ― Manchester/Ferranti Atlas
  • R. A. Nelson, "Mapping Devices and the M44 Data Processing System," Research Report RC 1303, IBM Thomas J. Watson Research Center (1964)
    ― about the IBM M44/44X
  • R. P. Parmelee, T. I. Peterson, C. C. Tillman, and D. J. Hatfield, "Virtual Storage and Virtual Machine Concepts", IBM Systems Journal, Vol. 11, pp. 99–130 (1972)

Additional on-line CP/CMS resources

Detailed citations for points made in this article can be found in History of CP/CMS.

Related Research Articles

IBM mainframes are large computer systems produced by IBM since 1952. During the 1960s and 1970s, IBM dominated the large computer market. Current mainframe computer in IBM's line of business computers are developments of the basic design of the IBM System/360.

VM (operating system) Family of IBM operating systems

VM 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.

z/VM is the current version in IBM's VM family of virtual machine operating systems. z/VM was first released in October 2000 and remains in active use and development as of 2019. It is directly based on technology and concepts dating back to the 1960s, with IBM's CP/CMS on the IBM System/360-67. z/VM runs on IBM's System z family of computers. It can be used to support large numbers (thousands) of Linux virtual machines.

A hypervisor or virtual machine monitor (VMM) is computer software, firmware or hardware that creates and runs virtual machines. A computer on which 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. Multiple instances of a variety of operating systems may share 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 must share a single kernel, though the guest operating systems can differ in user space, such as different Linux distributions with the same kernel.

VP/CSS was a time-sharing operating system developed by National CSS. It began life in 1968 as a copy of IBM's CP/CMS, which at the time was distributed to IBM customers at no charge, in source code form, without support, as part of the IBM Type-III Library. Through extensive in-house development, in what today would be termed a software fork, National CSS took VP/CSS in a different direction from CP/CMS. Although the two systems would eventually share many capabilities, their technical implementations diverged in substantive ways.

TSS (operating system) 1960s era timesharing operating system for IBM mainframes; generally considered a failure, although was used by a small number of customers through the 1970s

The IBM Time Sharing System TSS/360 is a discontinued early time-sharing operating system designed exclusively for a special model of the System/360 line of mainframes, the Model 67. Made available on a trial basis to a limited set of customers in 1967, it was never officially released as a supported product by IBM. TSS pioneered a number of novel features, some of which later appeared in more popular systems such as MVS. TSS was migrated to System/370 and 303x systems, but despite its many advances and novel capabilities, TSS failed to meet expectations and was eventually canceled. TSS/370 was used as the basis for a port of UNIX to the IBM mainframe. TSS/360 also inspired the development of the TSS-8 operating system.

IBM System/360 Model 67 1967 IBM mainframe model with virtual memory and 32-bit addressing

The IBM System/360 Model 67 (S/360-67) was an important IBM mainframe model in the late 1960s. Unlike the rest of the S/360 series, it included features to facilitate time-sharing applications, notably a Dynamic Address Translation unit, the "DAT box", to support virtual memory, 32-bit addressing and the 2846 Channel Controller to allow sharing channels between processors. The S/360-67 was otherwise compatible with the rest of the S/360 series.

This article covers the History of CP/CMS — the historical context in which the IBM time-sharing virtual machine operating system was built.

Hardware virtualization is the virtualization of computers as complete hardware platforms, certain logical abstractions of their componentry, or only the functionality required to run various operating systems. Virtualization hides the physical characteristics of a computing platform from the users, presenting instead an abstract computing platform. At its origins, the software that controlled virtualization was called a "control program", but the terms "hypervisor" or "virtual machine monitor" became preferred over time.

Operating System/Virtual Storage 1, or OS/VS1, is a discontinued IBM mainframe computer operating system designed to be run on IBM System/370 hardware. It was the successor to the Multiprogramming with a Fixed number of Tasks (MFT) option of System/360's operating system OS/360. OS/VS1, in comparison to its predecessor, supported virtual memory. OS/VS1 was generally available during the 1970s and 1980s, and it is no longer supported by IBM.

The history of operating systems running on IBM mainframes is a notable chapter of history of mainframe operating systems, because of IBM's long-standing position as the world's largest hardware supplier of mainframe computers.

In computing, a system virtual machine is a virtual machine provides a complete system platform which supports the execution of a complete operating system (OS). These usually emulate an existing architecture, and are built with the purpose of either providing a platform to run programs where the real hardware is not available for use, or of having multiple instances of virtual machines leading to more efficient use of computing resources, both in terms of energy consumption and cost effectiveness, or both. A VM was originally defined by Popek and Goldberg as "an efficient, isolated duplicate of a real machine".