# Z/VM

z/VM ist ein Betriebssystem für z Systems. Es dient dazu, virtuelle Maschinen auf dem Großrechner zu erzeugen, zu verwalten und parallel zu betreiben. Die Ahnenreihe von z/VM reicht über eine erste offizielle Veröffentlichung für S/370 im August 1972 bis zum CP/CMS der 1960er Jahre zurück. Der Hypervisor in z/VM heißt Control Program (CP). Mit ihm erfolgte die erste Implementierung virtueller Maschinen.
z/VM ist für ein breites Nutzungsspektrum geeignet:
* Endanwender mit einem textorientieren Arbeitsplatz;
* Systementwickler mit einer breiten Palette von Entwicklungswerkzeugen von Assembler bis zu Hochsprachen;
* Dienstleister, da die heutigen Großrechner ein paar hundert bis tausend virtuelle Maschinen gleichzeitig bereitstellen können. Unter z/VM kann eine (fast) beliebige Anzahl von Linux-Instanzen auf einem Großrechner betrieben werden.

## Konzept von VM

VM (ein Akronym für Virtual Machine) hat bereits 1964 konzeptionell mit einer vollständigen Emulation der Hardware in ebendieser VM das Konzept heutiger virtueller Maschinen vorweggenommen (Varian). In einer VM kann jedes Betriebssystem emuliert werden (damals z. B. MVS, DOS/360, UNIX). Sie konnten damals wie heute daher einen Personalcomputer (zunächst CMS) oder einen Server (zunächst RSCS, VTAM/VSCS, TCP/IP, UNIX) bereitstellen. Virtuelle Kommunikation konnte auf reale Kommunikation abgebildet werden und somit reale Kommunikation ermöglichen. Wenn VMs Informationen austauschen sollten, wurden virtuelle Kanäle geschaltet. Mit der Emulation Hercules kann eine 360/370/390/z-Emulation auf jedem Windows/Linux-PC installiert werden.
In der Auslieferung des Systems VM/370 war das Entwicklungssystem CMS (Conversational Monitoring System) als Standard mitgeliefert. Die meisten übrigen Systeme (RSCS, VTAM/VSCS, SQL etc.) waren lizenziert.
Die Entwicklung von VM im akademischen Umfeld brachte Konkurrenz zum DOS/360 (später auch dem OS/360 das über die OS/VS Weiterentwicklung OS/VS2 zu MVS, dem Vorläufer des z/OS wurde) mit sich und führte auch innerhalb der IBM zu Konkurrenz im Geschäft mit Großkunden, sodass das Konzept der virtuellen Maschine nicht von IBM propagiert wurde.

## VM und Open Source

VM wurde bis ca. Mitte der 1980er Jahre komplett im Quelltext (fast durchweg Assembler) ausgeliefert. Bedeutende Teile dieses Systems wurden zudem aus Verbesserungen der Benutzergemeinschaft übernommen. Bis zumindest Ende der 1990er Jahre hat sich daran nichts geändert, wenn auch einige wenige Teile von VM nicht mehr im Quelltext ausgeliefert wurden, das begann mit den Komponenten GCS (Group Control System) sowie VTAM (Virtual Telecommunications Access Method) der für IBMs Netzwerkarchitektur SNA (Systems Network Architecture) erforderliche Teil von VM.

## Geschichte von VM

* ca. Ende 1950er bis Anfang der 1960er Jahre: Das Compatible Time-Sharing System (CTSS) wird am MIT konzipiert und implementiert. Der Zentralrechner war von mehreren Benutzern interaktiv bedienbar (Time-Sharing). Das steht damals in starkem Gegensatz zu der sogenannten Stapelverarbeitung, bei der man einen Stapel Lochkarten mit Programmanweisungen im Rechenzentrum abgibt und nach deren Abarbeitung die Ergebnisse – meist in langen Papierlisten – wieder abholt.
* ca. 1965: Das CTSS wird für die IBM/360 Modell 40 umgeschrieben. Dabei wird der Hypervisor für die Steuerung und Bereitstellung der virtuellen Maschinen von dem interaktiv bedienbaren Betriebssystem dieser virtuellen Maschinen getrennt. Der Hypervisor wurde fortan CP (Control Program) genannt. Das interaktive Betriebssystem für die virtuelle Maschine wurde als CMS (Conversational Monitor System oder Cambridge Monitor System) bezeichnet.
* ca. 1968: CP-67 wird für die IBM/360-67 umgeschrieben. VM ist zu dieser Zeit ein zwar von der IBM unterstütztes, aber immer noch auf dem Engagement der University of Cambridge basierendes Produkt.
* ca. 1970/71: IBM benutzt VM als Entwicklungsplattform für OS/370, da VM die IBM/370 als Emulation auf einer IBM/360 darstellen kann. Seit dieser Zeit wird VM von IBM auch vermarktet, jedoch zu keiner Zeit als Primärsystem, sondern immer nur als Trägersystem für andere Betriebssysteme.
* bis ca. 1985: Umstellung von Fernschreiberkonsolen auf Bildschirmterminals, Erweiterung der Netzwerkfähigkeiten, Einführung eines vollständig programmierbaren Full-Screen-Editors und einer daraus abgeleiteten rudimentären Menüunterstützung, Einführung der Prozedursprachen EXEC-2 und REXX etc. Ableitung der „hardwarebasierten“ logischen Partitionierung von Großrechnern aus VM.
* bis ca. 1990: Erweiterungen an VM und der IBM/370 mit deren Nachfolger IBM/370-XA mit der Erweiterung von 24-Bit-Adressen zu 31-Bit-Adressen führen zu zueinander inkompatiblen VM-Versionen (VM/SP, VM/HPO und VM/XA). Die 370/ESA-Architektur wird zum Nachfolger der gesamten IBM/370- und IBM/370-XA-Linien. VM wird einer Konsolidierung und Generalüberholung unterzogen und zu VM/ESA.
* bis ca. 2005: Weitere Änderungen und Erweiterungen der Großrechnerarchitektur zu Serie Z erfordern auch Anpassungen an VM, das zu z/VM wird. Etwa 1998 wurde – eher aus Übermut als einer ökonomischen Vision folgend – versucht, auch Linux unter VM zum Laufen zu bringen. Das stellte sich als unerwartet einfach heraus und wird inzwischen auch vermarktet.

## Nähere Informationen zu CP und CMS

* CP/Control Program stellt als Hypervisorprogramm virtuelle Maschinen bereit. Es ist selbst nur über eine virtuelle Maschine zu steuern. Die virtuellen Maschinen erhalten bei ihrer Definition unter anderem bestimmte Rechte gegenüber dem CP. Durch konstruktive Eigenschaften der IBM-Großrechner auf Hardwareebene sind diese Berechtigungen praktisch auch nicht zu umgehen.
* CMS/Conversational Monitor System hatte bereits in der ersten Implementation in der Mitte der 1960er Jahre folgende Eigenschaften:
** Dateinamen mit je 8-stelligen Dateinamen und Dateitypen
** Sogenannte Dateimodi (Filemodes) von A bis Z, die jeweils eine Festplatte im Direktzugriff halten. Diese Festplatten werden unter VM als MiniDisk bezeichnet und sind mit den heutigen Laufwerksbuchstaben unter PC-Betriebssystemen vergleichbar.
** Ein Dateisystem (OS/360 und DOS, die zur selben Zeit für den Großrechner entstanden, hatten so etwas nicht in diesem Umfang, dort musste man den Plattenplatz für Dateien weitgehend manuell zuweisen).
** eine zeilenorientierte Oberfläche, auf der über Fernschreibkonsolen gearbeitet wird, z. B. IBM-3270-Terminals – im Gegensatz zu den bis in die 1980er stark verbreiteten Lochkarten.
** Zudem verfügt der Editor XEDIT schon in den 1970er Jahren über ein sehr leistungsfähiges System zur Änderungsverfolgung von Programmquelltexten.
Mehr als 10 Jahre später übernahmen die Vorläufer der heutigen PC-Betriebssysteme viele dieser Konzepte, die heute als selbstverständlich gelten.

## Leistungsfähigkeit und typische Nutzungsszenarien für VM

Die typische Nutzung von VM ist
* Als Online-System mit E-Mail und weiteren Informationsanwendungen für bis zu mehrere tausend Benutzer.
* Als Trägersystem für Online-Verarbeitung unter z/VSE oder z/OS mit Datenbanken.
* Als Entwicklungs- und Testsystem für VM selbst, z/VSE, Linux for z Systems, z/OS und TPF.
* Als Trägersystem für bis zu mehreren tausend Linux-Server auf einem einzigen Großrechner.
* Als quelloffenes Ausbildungssystem für Programmierer und Informatiker.
All diese Anwendungsszenarien können auch nebeneinander beim selben Anwender vorhanden sein. Hierbei ist VM sehr effizient bei der Verwendung der vorhandenen Ressourcen. Speziell die Bereitstellung des virtuellen Hauptspeichers kann aus Erfahrung leicht bis zum achtfachen des real vorhandenen Speichers getrieben werden. Ein auch im Jahr 2006 kaum von anderen Systemen erreichbarer Wert.

## Versionen
### Virtual Machine/370

* 1972: VM/370 – für S/370

### Virtual Machine/Extended Architecture

* 1989: VM/XA SP R2.1

### Virtual Machine/Enterprise Systems Architecture

* 1990: VM/ESA Version 1 Release 1.0
* 19. März 1991: VM/ESA Version 1 Release 1.1
* 16. Juni 1992: VM/ESA Version 1 Release 2
* 20. Mai 1993: VM/ESA Version 1 Release 2.1
* 6. April 1994: VM/ESA Version 1 Release 2.2
* 12. Juni 1995: VM/ESA Version 2 Release 1.0

### z/VM

* 12. September 2008: z/VM V5.4
* 23. Oktober 2010: z/VM V6.1
* 2. Dezember 2011: z/VM 6.2
* 26. Juli 2013: z/VM 6.3
* 11. November 2016: z/VM 6.4
* 21. September 2018: z/VM 7.1
* 18. September 2020: z/VM 7.2
* 16. September 2022: z/VM 7.3
* 20. September 2024: z/VM 7.4