# CP/CMS

| Beteilige dich an der Diskussion! | Dieser Artikel wurde wegen inhaltlicher Mängel auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf mit, die inhaltlichen Mängel dieses Artikels zu beseitigen, und beteilige dich an der Diskussion! (+) |
CP/CMS (Control Program/Cambridge Monitor System) war ein Time-Sharing-Betriebssystem der späten 1960er und frühen 1970er Jahre und für seine hervorragende Leistung und erweiterte Funktionen bekannt. Es hatte drei verschiedene Versionen:
* CP-40/CMS, ein wichtiger „Spin-Off“ des Forschungssystems, das in CP/CMS die Architektur der virtuellen Maschine etablierte
* CP-67/CMS, eine Neuimplementierung CP-40/CMS für die IBM System/360-67
* CP-370/CMS, eine Neuimplementierung CP-67/CMS für das System/370 – nie als solche veröffentlicht, wurde aber zur Grundlage das IBM VM/370 -Betriebssystem 1972
Jede Implementierung war eine wesentliche Neugestaltung der Vorgänger. CP-67/CMS war die erste weithin erhältliche Virtuelle-Maschine-Architektur.
Zusätzlich zu seiner Rolle als Vorläufer der VM-OS-Familie, spielte CP/CMS eine wichtige Rolle in der Entwicklung der Betriebssystem-Theorie, der Gestaltung der IBM System/370, der Time-Sharing-Computersysteme und der Schaffung eines selbsttragenden Nutzergemeinschaft, die heutigen freien Software-Bewegung.

## Geschichte

CP/CMS wurde von IBMs Cambridge Scientific Center (CSC), einem Forschungs- und Entwicklungslabor mit Verbindungen zum MIT, unter der Leitung von Robert Creasy entwickelt. Ziel der Systementwicklung war die Nutzung von neuen Betriebssystemen-Technologien und anderen großen IBM-Projekten.
Es war ein Open-Source-System und war kostenlos in Form von Quellcode für alle IBM-Kunden – im Rahmen der nicht unterstützten IBM Typ-III-Bibliothek erhältlich. Die CP/CMS-Anwender unterstützten sich selbst und untereinander.

## Aufbau

CP/CMS besteht aus zwei Hauptkomponenten:
* CP das Steuerprogramm, erstellt die virtuelle Maschinenumgebung. Die weit verbreitete Version CP-67, lief auf der S/360-67. (Das Forschungssystem CP-40 gründete die Architektur. Eine dritte Version, CP-370, wurde VM/370). Statt einer expliziten Aufteilung des Speichers und anderer Ressourcen unter den Nutzern, was der traditionelle Ansatz gewesen war, simulierte CP einen Stand-alone-System/360-Computer für jeden Benutzer.
* CMS, das Cambridge Monitor System (und auch Console Monitor System oder Conversational Monitor System, später umbenannt in VM) war ein einfaches Single-User-Betriebssystem für interaktive Time-Sharing-Anwendung. Indem viele Kopien von CMS in virtuellen Maschinen anstatt mehrere Kopien von großen, traditionellen Multi-Tasking-Betriebssystem liefen, war der Aufwand pro Nutzer geringer. Dies erlaubte einer großen Anzahl von gleichzeitigen Benutzern, sich ein einzelnes S/360 teilen.
Jedes System war in der Lage, jede S/360-Software, die auf dieser Maschine lief, zu nutzen und es gab jedem Benutzer „sein eigenes EDV-System“.
Das virtuelle CP/CMS-Maschinenkonzept war ein wichtiger Schritt im Betriebssystem-Design.
Durch die Isolierung der Benutzer voneinander, hat sich die Zuverlässigkeit und Sicherheit von CP/CMS-Systemen stark verbessert. Durch die Simulation eines vollen, eigenständigen Computers für jeden Benutzer, konnte CP/CMS jede S/360-Software in einer Time-Sharing-Umgebung ausführen und nicht nur Anwendungen, die speziell für Time-Sharing konzipiert waren. Durch die Verwendung von CMS als primäre Benutzerschnittstelle von CP/CMS erreichte man eine beispiellose Time-Sharing-Leistung. Darüber hinaus ist es durch die Einfachheit des CMS leichter, eine verbesserte Benutzeroberfläche zu implementieren als mit damals herkömmlichen Betriebssystemen.
IBM hatte CP/CMS in die VM/370-Produktlinie implementiert und im Jahr 1972 freigegeben. VM/370s Nachfolger (wie z/VM) waren weit verbreitet.
CP/CMS wurde als das "andere Betriebssystem von IBM" für Batch-orientierte Prozesse angesehen. Bis vor kurzem behielt VM diese Rolle. Aber CP/CMS überwand die begrenzten Ressourcen und konnte das technische Erbe der noch vorhandenen Nutzer bewahren. Es wurde das Hauptderivat für die ehemals erstellen Systeme in der Time-Sharing-Computerindustrie und letztlich eines der wichtigsten Produkte von IBM im 21. Jahrhundert.
Die CP/CMS-Architektur war für seine Zeit revolutionär. Das System bestand aus einem virtualisierenden Steuerprogramm (CP), das mehrere unabhängige virtuelle Maschinen (VMs) erstellt.
Die Virtualisierung bestand aus zwei Elementen des möglichen IBM System/360-67:
* Trennung von privilegierten "Supervisor"-Anweisungen von normalen "Problemzustand" Anweisungen
* Adressübersetzungs-Hardware
Ein Programm kann im "Problemzustand" laufen, wenn mit einem privilegierten Befehl oder einer ungültigen Speicheradresse die Hardware eine Ausnahmebedingung erfordert. Durch Abfangen dieser Bedingungen konnte CP das angemessene Verhalten simulieren, z. B. Durchführung einer Ein-/Ausgabe oder eines Seitenwechsels. Ein Host-Betriebssystem, das als "Supervisor" auf einer bloßen Maschine laufen würde, würde im "Problemzustand" von CP laufen.
In einer vollständig virtualisierten Umgebung hat jede virtuelle Maschine seinen eigenen Satz von virtuellen Geräten, die von der realen Hardwareumgebung des Systems abgebildet wird. So wird ein DFÜ-Fernschreiber in seiner VM-Instanz als virtuelle Konsole verwaltet.
Im CP-67 waren modellabhängig einige Diagnoseanweisungen nicht virtualisiert. Letztlich wurden in der späteren Entwicklung bei IBM DIAG-Anweisungen verwendet, um eine nicht-virtualisierten Schnittstelle zu schaffen, welche Hypervisor genannt wurde. Client-Betriebssysteme können diesen Mechanismus verwenden, um direkt mit dem Steuerprogramm zu kommunizieren; diese Möglichkeit bot dramatische Leistungsverbesserungen.
Jedes S/360-Betriebssystem konnte in der Tat unter CP ausgeführt werden. Aber der normale Benutzer lief im Cambridge Monitor System (CMS), als ein einfaches Einbenutzer-Betriebssystem. CMS erlaubt es Benutzern, Programme auszuführen und deren virtuelle Geräte zu verwalten. Die CP-67-Versionen 1 und 2 unterstützen nicht den virtuellen Speicher in einer virtuellen Maschine. Dies wurde in Version 3 hinzugefügt. Ab diesem Zeitpunkt konnte CP die Prüfung und Entwicklung selbst durchführen, indem sie eine vollständige Kopie von CP/CMS in einer einzigen virtuellen Maschine bereithält. Einige CP/CMS-Betriebssystem arbeiten, wie CP-370 in der Entwicklung und Erprobung von MVS, in der Hardware und OS-Simulationen.
Das CP/CMS-Design war eine Abkehr von anderen monolithischen Betriebssystemen von IBM. CP/CMS trennt den Komplex "großes System". Alle Probleme wie Disposition, Hardwaremanagement, Massenspeicher können von "kleinen System"-Funktionen für die Anwendung der Programmausführung, Datei-I/O, Konsolen-Eingang/Ausgang für einen einzigen Benutzer ersetzt werden. Jede Komponente konnte damit vereinfacht werden. Voneinander getrennte Benutzer verbessern die Systemstabilität, als wenn ein Fehler in der Software einen anderen Benutzer das CMS eines anderen Benutzers oder die noch die zugrunde liegenden CP nicht abstürzen lassen. Diese Architektur erreicht ihre Blüte in Microkernel-Betriebssystemen.
IBMs Entscheidung für die Virtualisierung und für virtuellen Speicherfunktionen in dem nachfolgenden S/370-Design (obwohl noch in der ersten Serie S/370 fehlend) spiegelt, zumindest zum Teil, den Erfolg des CP/CMS-Ansatzes wider. Im Gegenzug ist das Überleben und den Erfolg der IBM VM-Betriebssystemfamilie und der Virtualisierungstechnologie im Allgemeinen der S/360-67 zu verdanken.
In vielerlei Hinsicht haben IBM CP-67 und die CP/CMS-Produkte Virtualisierungssoftware wie VMware Workstation, Xen und Microsoft Virtual PC stark beeinflusst.