Jump to content

CP/CMS

From Alfawiki
CP/CMS (Control Program/Cambridge Monitor System)
Company typeOperating system
IndustryComputer software
Founded1967; 59 years ago (1967)
FounderRobert Creasy
Headquarters
Cambridge
,
United States
ProductsCP-40/CMS, CP-67/CMS, CP-370/CMS

CP/CMS (Control Program/Cambridge Monitor System) was a time-sharing operating system developed in the late 1960s and early 1970s, renowned for its superior performance and sophisticated virtualization capabilities. Its development included three principal iterations: CP-40/CMS, an innovative experimental system that laid the groundwork for the CP/CMS virtual machine architecture; CP-67/CMS, a reengineered version tailored for the IBM System/360-67 and the main subject of this discussion; and CP-370/CMS, designed for the System/370. Although CP-370 never saw an official release, it served as the basis for IBM's VM/370, which debuted in 1972.

Each release marked a major redesign and technological advancement. CP-67/CMS was notable as the first broadly accessible virtual machine system, building upon IBM’s earlier experimental platforms such as M44/44X (which provided partial virtualization) and CP-40 (offering full virtualization).

Besides being the direct predecessor to VM, CP/CMS contributed significantly to operating system theory, influenced the architectural design of IBM's System/370, propelled advancements in time-sharing technologies, and nurtured a self-sustaining user base that anticipated aspects of the modern free software movement.

History

The foundational architectural concepts and strategic direction of CP/CMS were set during the development of CP-40, which entered operational use at IBM's Cambridge Scientific Center in early 1967.

A concise historical outline:

  • During the early 1960s, IBM sought to assert dominance in scientific computing amid growing time-sharing initiatives such as CTSS and MIT’s Project MAC. However, IBM’s emphasis shifted toward the System/360 line.
  • The absence of native time-sharing support on the S/360 disappointed significant clients, resulting in lost sales opportunities with Project MAC and Bell Laboratories. IBM’s Cambridge Scientific Center (CSC), initially collaborating with Project MAC, developed a time-sharing operating system tailored for the S/360 platform—this eventually became CP/CMS. In parallel, IBM released the S/360-67 model featuring time-sharing capabilities alongside the TSS/360 operating system. While TSS did not succeed commercially, both the S/360-67 hardware and CP/CMS software gained traction despite internal resistance.
  • Production deployment began in 1967 with CSC’s CP-40, followed by CP-67 implementations at Lincoln Laboratories and other locations. Distributed through IBM’s Type-III Library starting in 1968, by 1972 CP/CMS was stable on approximately 44 installations, supporting up to 60 concurrent users on S/360-67 systems. Commercial entities such as National CSS and IDC leveraged CP/CMS technology to offer S/360-67 time-sharing services.
  • With the advent of virtual memory in IBM’s S/370 series in 1972, IBM introduced VM/370—a reengineered version of CP/CMS adapted for S/370 hardware. This marked the cessation of new CP/CMS releases; nonetheless, it continued to be used independently for some time. VM distributions included source code and maintained an engaged user community.

Overview

The development of CP/CMS took place at IBM’s Cambridge Scientific Center (CSC), closely affiliated with MIT, under the leadership of Robert Creasy. Its objectives, development process, release strategy, and technological innovations set it apart from other IBM projects and operating systems of its era. Distributed as open-source software, CP/CMS was freely available in source code form to all IBM customers through the unsupported IBM Type-III Library, fostering a collaborative user support network.

CP/CMS consisted of two primary components:

  • CP (Control Program) was responsible for creating a virtual machine environment. The widely deployed CP-67 operated on S/360-67 hardware; its architectural foundation was established by CP-40; and CP-370 evolved into VM/370. Instead of conventional resource partitioning methods, CP simulated an entire System/360 computer instance for each user—effectively providing isolated virtual machines.
  • CMS (Cambridge Monitor System), later renamed Conversational Monitor System within VM environments, functioned as a lightweight single-user operating system optimized for interactive time-sharing sessions. Running multiple CMS instances within virtual machines managed by CP significantly reduced overhead compared to traditional multitasking OS designs, enabling numerous users to operate simultaneously on a single S/360 machine.

The introduction of the CP/CMS virtual machine paradigm advanced operating system design by:

  • Providing user isolation that improved both system reliability and security.
  • Enabling execution of any System/360 software within a multi-user time-sharing context.
  • Utilizing a streamlined CMS OS that delivered enhanced performance along with simplified user interface enhancements.

In 1972, IBM reengineered CP/CMS into VM/370 concurrent with introducing virtual memory support on S/370 systems. Successors to VM/370—such as z/VM—continue to be actively used today. Though VM originated from CP-67's architecture, CP/CMS operated autonomously for several years and is regarded as a separate operating system from the later VM family.

CP/CMS as Free Software

CP/CMS was distributed with its source code openly available, encouraging many users to examine and alter it—an uncommon degree of direct user engagement for operating systems provided by vendors.

In the era of CP/CMS, it was common for vendors to supply operating systems in machine-readable source code form. IBM, for example, offered optional source code for systems including OS/360, DOS/360, and subsequent IBM operating systems. The system generation process required familiarity with portions of the system source code, resembling modern kernel build workflows. Presently, emulators such as the Hercules emulator can run these legacy systems using publicly accessible source code.

Following IBM unbundled software from hardware in 1969, when software sales were separated from hardware, the availability of OS source code changed significantly. IBM began distributing its operating system software mainly as object code only (OCO).

Unlike standard releases, CP/CMS was distributed through the unsupported IBM Type-III Library, a repository of software contributed by IBM employees and provided "as is" without official IBM support. This absence of formal backing compelled users to rely on self-support and fostered a culture of modification and collaboration, positioning CP/CMS as an early example of free software.

Other IBM operating systems such as OS/360, DOS/360, DOS/VSE, MVS, and TSS/370 were also made available in source code form and are generally considered public domain today due to their publication before 1978 without copyright notices. However, CP/CMS’s unsupported status uniquely encouraged its community to share source code actively.

Though developed at IBM's Cambridge Scientific Center, CP/CMS was contributed to the Type-III Library by MIT's Lincoln Laboratory, not IBM itself. This approach is seen as a means to circumvent internal IBM resistance to time-sharing initiatives and underscores substantial contributions from MIT and Union Carbide in the development of CP-40, S/360-67, CP-67, and CMS.

Users frequently customized their CP/CMS installations and shared enhancements that influenced the core system’s evolution. Certain organizations, including National CSS and academic institutions, chose to develop CP/CMS independently rather than adopt VM/370, resulting in a divergence of the software base.

Even after IBM introduced VM/370, source code distribution persisted across several releases. The VM project deliberately avoided adopting PL/S, an internal programming language that would have limited access to source code. Although IBM increased PL/S usage in systems like MVS by 1969, this language remained proprietary and inaccessible to customers for a considerable time. The active involvement of the VM user community in development contrasted with most other OS or DOS environments and helped sustain CP/CMS concepts despite VM’s relatively low priority within IBM.

Architecture

The architecture of CP/CMS was groundbreaking, featuring a control program (CP) that virtualized hardware to create multiple isolated virtual machines (VMs). This virtualization capability relied on two critical features of the IBM System/360-67:

  • Distinction between privileged "supervisor state" instructions and standard "problem state" instructions
  • Hardware support for address translation

Programs executing in "problem state" would trigger hardware exceptions if they attempted privileged instructions or accessed invalid memory locations. CP intercepted these exceptions to emulate functions such as I/O operations or paging. Operating systems running under CP—normally executed in "supervisor state" on physical hardware—operated instead in "problem state."

This mechanism enabled fully virtualized environments where each VM possessed its own virtual devices mapped onto real hardware components—for instance, a dial-up teletype appeared as a virtual console within a VM.

Certain model-specific and diagnostic instructions, particularly DIAG, were not initially virtualized in CP-67. Subsequently, DIAG evolved into a non-virtualized interface allowing guest operating systems to interact directly with the control program. This effectively turned CP into a hypervisor and significantly enhanced performance.

While any S/360 OS could run under CP, most users operated Cambridge Monitor System (CMS), a straightforward single-user OS that managed programs and virtual devices. Early versions of CP-67 did not provide virtual memory within VMs; this capability was introduced in version 3, enabling complete CP/CMS instances to operate inside a single VM. Some development efforts, including CP-370 and MVS testing, involved running multiple nested simulations of hardware and operating systems.

CP/CMS separated complex system-level functions—such as task dispatching and hardware management—from user-level activities like application execution and file input/output. This isolation reduced bug impact and anticipated principles found later in microkernel designs.

IBM’s later adoption of virtualization and virtual memory in S/370 models reflected the success of CP/CMS concepts. The lasting impact of IBM's VM family and virtualization technologies originates from innovations first demonstrated on the S/360-67.

Both CP-67 and CP/CMS served as forerunners influencing contemporary virtualization solutions such as VMware Workstation, Xen, and Microsoft Virtual PC.

Related terminology

  • CP: stands for Control Program. CP-40 and CP-67 refer to versions developed for the customized S/360-40 at CSC and the standard S/360-67, correspondingly.
  • CMS: short for Cambridge Monitor System. This component of the CP/CMS suite was renamed Conversational Monitor System when IBM introduced VM/370. Unlike the reimplementation from CP to VM, much of CMS was incorporated into VM/370 without alteration.
  • VM: means Virtual Machine, originally termed pseudo-machine before adopting the term virtual machine from the IBM M44/44X initiative. IBM firmly established this terminology within CP/CMS by launching VM/370.
  • hypervisor: a term describing a paravirtualization method, first used by IBM during the redevelopment of CP-67 into VM/370.

See also

Citations

Primary CP/CMS references
  • R. J. Creasy, "The origin of the VM/370 time-sharing system", IBM Journal of Research & Development, Vol. 25, No. 5 (September 1981), pp. 483–90 ― insights on CP/CMS and VM history from the CP-40 project leader and a CTSS contributor
  • E.W. Pugh, L.R. Johnson, and John H. Palmer, IBM's 360 and early 370 systems, MIT Press ― comprehensive coverage of IBM systems from that era; limited discussion of CP/CMS highlights its niche role
  • Melinda Varian, VM and the VM community, past present, and future, SHARE 89 Sessions 9059–61, 1997 ― excellent resource on CP/CMS and VM history
  • Bitsavers, Index of /pdf/ibm/360/cp67


Additional CP/CMS literature
  • R. J. Adair et al., A Virtual Machine System for the 360/40, IBM Cambridge Scientific Center Report No. 320‐2007 (May 1966) ― foundational document detailing virtual machine implementation on CSC’s customized S/360-40 and design of CP-40
  • International Business Machines Corporation, CP-67/CMS, Program 360D-05.2.005 (June 1969) ― IBM’s official reference guide
  • 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 practical uses
  • R. P. Parmelee et al., "Virtual storage and virtual machine concepts," IBM Systems Journal, Vol. 11, No. 2 (June 1972)


Foundational CP/CMS background
  • 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) — 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 prerequisites for Project MAC
  • 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 RC1303 (1964) ― concerning 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 materials


For comprehensive citations supporting this article’s content see History of CP/CMS.

External links