Vollständige Virtualisierung - Full virtualization

Screenshot einer Virtualisierungsumgebung

In der Informatik ist Virtualisierung eine moderne Technik, die Ende der 1990er Jahre entwickelt wurde und sich von Simulation und Emulation unterscheidet . Virtualisierung verwendet Techniken, die verwendet werden, um Instanzen einer Umgebung zu erstellen, im Gegensatz zur Simulation, die die Umgebung modelliert; oder Emulation, die die Zielumgebung repliziert, z. B. bestimmte Arten von Umgebungen mit virtuellen Maschinen . Die vollständige Virtualisierung erfordert, dass jedes herausragende Merkmal der Hardware in einer von mehreren virtuellen Maschinen widergespiegelt wird – einschließlich des vollständigen Befehlssatzes, der Eingabe-/Ausgabeoperationen , Interrupts, des Speicherzugriffs und aller anderen Elemente, die von der Software verwendet werden, die auf der nackten Maschine ausgeführt wird , und das soll in einer virtuellen Maschine ausgeführt werden. In einer solchen Umgebung kann jede beliebige Software, die auf der Rohhardware ausgeführt werden kann, in der virtuellen Maschine ausgeführt werden und insbesondere beliebige Betriebssysteme. Der offensichtliche Test einer vollständigen Virtualisierung besteht darin, ob ein Betriebssystem, das für den eigenständigen Einsatz gedacht ist, erfolgreich in einer virtuellen Maschine ausgeführt werden kann.

Der Eckpfeiler der vollständigen Virtualisierung oder Typ-1-Virtualisierung ist ein Hypervisor oder Super Operating System, das auf einer höheren Berechtigungsebene als das Betriebssystem arbeitet. Dieser Hypervisor oder Super OS erfordert zwei Schlüsselfunktionen, um virtualisierte Umgebungen bereitzustellen und zu schützen. Diese beiden Funktionen sind:

  1. Betriebssystemunabhängiges Speichermanagement, um Ressourcen für alle unterstützten virtuellen Umgebungen wie Linux, Microsoft Windows oder eingebettete Umgebungen bereitzustellen und diese Umgebungen vor unbefugtem Zugriff zu schützen und
  2. Wechsel von virtualisierten Umgebungen, um virtuellen Umgebungen physische Computerressourcen zuzuweisen.

Eine detaillierte Beschreibung der Berechtigungsstufen für Hypervisor, Betriebssystem und Benutzermodi, VMCS, VM-Exit und VM-Entry finden Sie unter Intel VT-x oder AMD-V. Diese Virtualisierung darf nicht mit IBM Virtual Machine-Implementierungen der späten 60er und frühen 70er Jahre verwechselt werden, da die IBM-Systemarchitektur nur zwei Modi von Supervisor und Program unterstützte, die keine Sicherheit oder Trennung der virtuellen Maschinen boten.

Andere Formen der Plattformvirtualisierung erlauben nur die Ausführung bestimmter oder modifizierter Software innerhalb einer virtuellen Maschine. Das Konzept der vollständigen Virtualisierung ist in der Literatur gut etabliert, wird jedoch nicht immer mit diesem speziellen Begriff bezeichnet; Terminologie finden Sie unter Plattformvirtualisierung.

Ein wichtiges Beispiel für virtuelle Maschinen, das nicht mit einer durch Emulation implementierten Virtualisierung zu verwechseln ist, war das Steuerungsprogramm des CP/CMS- Betriebssystems von IBM . Es wurde erstmals 1967 mit dem CP-40- Forschungssystem von IBM demonstriert , dann 1967–1972 über Open Source in CP/CMS verteilt und von 1972 bis heute in der VM-Familie von IBM neu implementiert . Jedem CP/CMS-Benutzer wurde ein simulierter, eigenständiger Computer zur Verfügung gestellt. Jede dieser virtuellen Maschinen verfügte über die vollständigen Fähigkeiten der zugrunde liegenden Maschine, und (für ihren Benutzer) war die virtuelle Maschine nicht von einem privaten System zu unterscheiden. Diese Simulation war umfassend und basierte auf dem Handbuch Principles of Operation für die Hardware. Es umfasste daher Elemente wie einen Befehlssatz, Hauptspeicher, Interrupts, Ausnahmen und Gerätezugriff. Das Ergebnis war eine einzelne Maschine, die unter vielen Benutzern gemultiplext werden konnte.

Eine vollständige Virtualisierung ist nur mit der richtigen Kombination von Hardware- und Softwareelementen möglich . Zum Beispiel war dies mit den meisten System/360- Serien von IBM mit Ausnahme des IBM System/360-67 nicht möglich ; Auch mit dem frühen System/370- System von IBM war dies nicht möglich . IBM fügte der System/370-Serie 1972 virtuelle Speicherhardware hinzu, die nicht mit Intel VT-x Rings identisch ist und Hypervisor eine höhere Berechtigungsebene bietet, um virtuelle Maschinen richtig zu steuern, die vollen Zugriff auf den Supervisor- und Programm- oder Benutzermodus erfordern.

Ebenso war eine vollständige Virtualisierung mit der x86-Plattform bis zum Hinzufügen der AMD-V- und Intel VT-x- Erweiterungen von 2005 bis 2006 nicht möglich (siehe x86-Virtualisierung ). Viele Plattform-Hypervisoren für die x86-Plattform kamen dem sehr nahe und beanspruchten bereits vor den Ergänzungen von AMD-V und Intel VT-x vollständige Virtualisierung. Beispiele sind Adeos , Mac-on-Linux, Parallels Desktop für Mac , Parallels Workstation , VMware Workstation , VMware Server (ehemals GSX Server), VirtualBox , Win4BSD und Win4Lin Pro . VMware verwendet zum Beispiel eine Technik namens Binärübersetzung , um x86-Software im laufenden Betrieb automatisch zu modifizieren, um Anweisungen, die "die virtuelle Maschine durchbohren", durch eine andere, für die virtuelle Maschine sichere Abfolge von Anweisungen zu ersetzen; Diese Technik bietet den Anschein einer vollständigen Virtualisierung.

Eine zentrale Herausforderung für die vollständige Virtualisierung ist das Abfangen und Simulieren von privilegierten Operationen, wie z. B. E/A-Anweisungen. Die Auswirkungen jeder Operation, die innerhalb einer bestimmten virtuellen Maschine ausgeführt wird, müssen innerhalb dieser virtuellen Maschine gehalten werden – virtuelle Operationen dürfen den Zustand einer anderen virtuellen Maschine, des Steuerungsprogramms oder der Hardware nicht ändern. Einige Maschinenbefehle können direkt von der Hardware ausgeführt werden, da ihre Auswirkungen vollständig in den vom Steuerungsprogramm verwalteten Elementen enthalten sind, wie beispielsweise Speicherplätze und arithmetische Register. Aber andere Befehle, die "die virtuelle Maschine durchbohren" würden, dürfen nicht direkt ausgeführt werden; sie müssen stattdessen eingefangen und simuliert werden. Solche Anweisungen greifen entweder auf Zustandsinformationen zu, die sich außerhalb der virtuellen Maschine befinden, oder wirken sich darauf aus.

Vollvirtualisierung hat sich als sehr erfolgreich erwiesen für:

  • gemeinsame Nutzung eines Computersystems durch mehrere Benutzer;
  • Isolieren der Benutzer voneinander (und vom Steuerungsprogramm);
  • Emulieren neuer Hardware, um eine verbesserte Zuverlässigkeit, Sicherheit und Produktivität zu erreichen.

Siehe auch

Verweise

Siehe spezifische Quellen unter Plattformvirtualisierung und (für historische Quellen) CP/CMS .

Externe Links