-
STAND DER
TECHNIK
-
Eine
Ausführungsform
der Erfindung betrifft im allgemeinen Computersysteme und insbesondere Virtualisierungstechniken,
die gestatten, daß sich mehrere
Programme eine physikalische Vorrichtung gemeinsam teilen.
-
Mit
der Verbreitung unterschiedlicher Computerbetriebssystem(OS)programme
(z.B. LINUX, MACINTOSH, MICROSOFT-WINDOWS) wird den Konsumenten
ein weites Feld von unterschiedlichen Arten von Anwendungsprogrammen
angeboten, die unglücklicherweise
nicht zum Laufen über
das gleiche Betriebssystem gestaltet sind. Die Virtualisierungstechnologie
ermöglicht,
daß ein
einzelner Host-Rechner, auf dem ein Virtual-Machine-Monitor läuft ("VMM"), mehrere Abstraktionen
des Host-Rechners bietet, damit die zugrundeliegende Hardware des
Host-Rechners als eine oder mehrere unabhängig tätige virtuelle Maschinen ("VMs") erscheinen. Jede
VM kann als eine in sich geschlossene Plattform funktionieren, die
ihr eigenes Betriebssystem ("OS") und/oder eine oder
mehrere Softwareanwendungen betreibt. Die VMM verwaltet die Verteilung
der Betriebsmittel am Host-Rechner und führt nach Notwendigkeit eine
wie erforderliche Kontextumschaltung durch, um gemäß eines
Rundrufs (round-robin) oder eines anderen vorbestimmten Schemas
zwischen verschiedenen virtuellen Maschinen zu multiplexieren. Zum
Beispiel hat in einer VM-Umgebung jedes OS die Vorstellung, daß es auf seiner
eigenen Hardwareplattform oder seinem "bloßen
Metall" läuft. Jedes
OS "sieht" einen vollen Satz von
verfügbaren
Ein-/Ausgabe-Vorrichtungen wie etwa eine Tastatursteuerung, eine
Festplattenlaufwerksteuerung, eine Netzwerkschnittstellensteuerung,
und einen Grafikanzeigeadapter.
-
Die
folgenden Techniken werden verwendet, wenn ein Betriebssystem mit
einer Ein-/Ausgabe-Vorrichtung
kommunizieren soll. Wenn das OS tatsächlich auf dem bloßen Metall
läuft,
ist eine Hardware-Client-Schnittstelle einer physikalischen Ein-/Ausgabe-Vorrichtung
auf einem Bus bloßgelegt. Die
Client-Schnittstelle kann ein Satz von speicherabgebildeten Registern (speicherabgebildeter Ein-/Ausgabe,
MMEA) oder ein Ein-/Ausgabe-Anschluß (IOP) sein, und kann durch
einen speicherabgebildeten Ein-/Ausgabe-Adressenraum bzw. durch einen
Ein-/Ausgabe-Adressenraum
des Computersystems adressiert werden. Ein Prozessor kann dann durch
das Ausgeben von OS-Vorgängen
auf dem Bus, die auf den zugeteilten Adressenraum abzielen, Stellen
in der physikalischen Vorrichtung lesen oder beschreiben.
-
Andererseits
können
mit einer Virtualisierung mehrere VMs vorhanden sein (um mehrere Gast-OSs zu betreiben).
In diesem Fall werden zwei grundlegende Techniken verwendet, um
den Gästen eine
Ein-/Ausgabe-Fähigkeit
bereitzustellen. Bei der ersten wird der VM ein exklusiver Zugriff
auf die Vorrichtung gegeben. Die VMM sorgt dafür, daß der gesamte Zugriff durch
die VM auf MMEAs oder IOPs direkt zu der Ein-/Ausgabe-Vorrichtung
gesendet wird, auf die abgezielt wird. Auf diese Weise verfügt die VM über den
Weg mit der höchsten
Leistung, um mit der Vorrichtung zu kommunizieren. Diese Technik
wird manchmal als "Vorrichtungszuteilung" bezeichnet. Ihre
Hauptbeschränkung
ist, daß die
Ein-/Ausgabe-Vorrichtung nur einer einzelnen VM zugeteilt werden
kann.
-
Wenn
gewünscht
ist, daß eine
Ein-/Ausgabe-Vorrichtung auf irgendeine Weise durch mehrere VMs
gemeinsam benutzt wird, ist es eine übliche Technik, daß die VMM
die physikalische Ein-/Ausgabe-Vorrichtung
als eine oder mehrere "virtuelle
Vorrichtungen" emuliert.
Vorgänge
von einem bestimmten OS, die auf die physikalische Vorrichtung abzielen,
werden dann durch die VMM abgefangen. Die VMM kann dann wählen, eine
Vorrichtung zu emulieren (zum Beispiel durch Simulieren eines seriellen Anschlusses
unter Verwendung einer Netzwerkschnittstelle), oder kann die Anforderungen
von verschiedenen Client-VMs auf eine einzelne Ein-/Ausgabe-Vorrichtung multiplexieren
(zum Beispiel ein Festlaufwerk in mehrere virtuelle Laufwerke teilen).
-
Eine
andere Weise, den Virtualisierungsprozeß zu sehen, lautet wie folgt.
Eine VM muß über einen
Zugriff auf einen Satz von Ein-/Ausgabe-Vorrichtungen verfügen, die
sowohl virtuelle als auch physikalische Vorrichtungen beinhalten
können.
Wenn eine physikalische Vorrichtung einer einzelnen VM zugeteilt
wird, ist sie für
die anderen virtuellen Maschinen nicht verfügbar. Demgemäß führt die
VMM typischerweise eine virtuelle Vorrichtung für jede VM aus, wenn eine physikalische
Vorrichtung durch mehr als eine VM gemeinsam benutzt werden muß. Die VMM
vermittelt dann den Zugriff auf die gleiche Hardware-Client-Schnittstelle
der physikalischen Vorrichtung durch die virtuellen Vorrichtungen.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
Ausführungsformen
der Erfindung sind in den Figuren der beiliegenden Zeichnungen,
in denen gleiche Bezugszeichen ähnliche
Elemente angeben, nur beispielhaft und nicht beschränkend veranschaulicht.
Es sollte bemerkt werden, daß sich
Bezugnahmen auf "eine" Ausführungsform
der Erfindung in dieser Offenbarung nicht notwendigerweise auf die
gleiche Ausführungsform
beziehen und "zumindest
eine" bedeuten.
-
1 veranschaulicht
ein Blockdiagramm einer physikalischen Vorrichtung, die "durch ihre Gestaltung
gemeinsam benutzbar" ist.
-
2 stellt
ein Blockdiagramm eines Computersystems dar, das eine gemeinsam
benutzbare Vorrichtung aufweist und einen Virtualisierungsprozeß betreibt.
-
3 zeigt
ein Ablaufdiagramm eines Virtualisierungsprozesses, der mit der
Feststellung einer gemeinsam benutzbaren Ein-/Ausgabe-Vorrichtung in
einem Computersystem verbunden ist.
-
AUSFÜHRLICHE
BESCHREIBUNG
-
1 veranschaulicht
ein Blockdiagramm einer physikalischen Vorrichtung, die "durch ihre Gestaltung
gemeinsam benutzbar" ist.
Diese gemeinsam benutzbare Vorrichtung 100 weist ein Kernfunktionsschaltungssystem 104 auf,
das in diesem Beispiel eine Kern-Ein-/Ausgabefunktion eines Computersystems
durchführen
soll. Beispiele für
die Kern-Ein-/Ausgabefunktion beinhalten das Bildrendern im Fall
eines Grafikadapters und die Transportkontrollprotokoll/Internetprotokoll(TCP/IP)-Paketabladung
für eine
Netzwerkschnittstellensteuerung. Das Kern-Ein-/Ausgabefunktionsschaltungssystem kann
als eine Kombination aus einer festverdrahteten und/oder einer programmierbaren
Logik und einem programmierten Prozessor oder jede beliebige andere
Technik, die einem Fachmann bekannt ist, ausgeführt sein.
-
Ein
Software-Client 108 einer virtuellen Maschine (VM) im System
muß über eine
beliebige von mehreren Client-Schnittstellenschaltungen 112 (oder einfach, "Client-Schnittstellen 112") auf das Kernfunktionsschaltungssystem 104 zugreifen.
Der VM-Client 108 kann ein Betriebssystem wie etwa MICROSOFT
WINDOWS oder LINUX sein, das einen Vorrichtungstreiber enthält. Die
Client-Schnittstellen 112 sind über ein Multiplexierungsschaltungssystem 116 mit
dem Kernfunktionsschaltungssystem gekoppelt, um das gemeinsame Teilen
der Kernfunktionalität
durch die VM-Client über
die Client-Schnittstellen zu ermöglichen.
Das Multiplexierungsschaltungssystem 116 kann sowohl eine
Multiplexiererlogik als auch Signalleitungen, die benötigt werden,
um das Kernfunktionsschaltungssystem zu einer Zeit mit irgendeiner
der Client-Schnittstellen 112 zu verbinden, beinhalten.
-
Jede
Client-Schnittstelle 112 zeigt sich einem Software-Client
im System wie etwa dem VM-Client 108 als
eine vollständige
und gesonderte Vorrichtung. Die Schnittstelle 112 kann
alle Gesichtspunkte der Funktionalität ausführen, die durch einen Bus,
auf dem sie sich befindet, benötigt
werden. Die Client-Schnittstelle 112 kann analoge Schaltungen beinhalten,
die zwischen der Logiksignalisierung in der Vorrichtung und der
externen Bussignalisierung übersetzen.
Wenn es sich beim externen Bus um die serielle Punkt-zu-Punkt-Abart
handelt, kann ein Multiplexierungsumschaltungsschaltkreis hinzugefügt werden,
um zu jeder beliebigen Zeit eines aus dem Satz von Registern mit
dem Übertragungsmedium
des Busses zu verbinden.
-
In
einigen Ausführungsformen
der Erfindung kann jede Client-Schnittstelle 112 den gleichen
peripheriekomponentenverbindungs (PCI)-kompatiblen Konfigurationsmechanismus
und den gleichen Funktionsfeststellungsmechanismus auf dem gleichen Bus
(mit dem die physikalische Vorrichtung verbunden ist) unterstützen. Doch
würde in
einer derartigen Ausführungsform
jede Client-Schnittstelle eine unterschiedliche PCI-Vorrichtungskennungsnummer
bereitstellen (da jede effektiv eine unterschiedliche Vorrichtung
darstellt). Zusätzlich
würde jede
Client-Schnittstelle
einen gesonderten Satz von PCI-kompatiblen Funktionen identifizieren.
Eine Client-Schnittstelle kann natürlich so gestaltet sein, daß sie anderen
Arten von Ein-/Aus- oder Buskommunikationsprotokollen entspricht,
die zum Beispiel beim Verbinden der Komponenten eines Computersystems
verwendet werden.
-
Jede
Client-Schnittstelle kann einen gesonderten Satz von Registern beinhalten,
die durch einen Software-Client verwendet werden sollen, um Informationen über die
Schnittstelle zu erhalten und diese zu konfigurieren. Jeder Satz
von Registern kann von außerhalb
der physikalischen Vorrichtung über
den gleichen Bus zugänglich
sein, sei er seriell oder parallel, mehrfachablegend oder Punkt-zu-Punkt.
Zum Beispiel kann ein Plug-and-Play-Untersystem PCI-Konfigurationsregister
verwenden, um die Basisadresse eines MMEA-Bereichs zu definieren.
Ein Satz von PCI-kompatiblen Konfigurationsregistern könnte einige
oder alle der folgenden wohlbekannten Register beinhalten: die Verkäuferkennung,
die Vorrichtungskennung (bestimmt den Versatz der Konfigurationsregisteradressen),
die Nachprüfungskennung,
den Klassencode, die Untersystem-Verkäuferkennung, und die Untersystemkennung).
Eine Kombination dieser Register wird typischerweise durch ein Betriebssystem
verwendet, um zu bestimmen, welcher Treiber für eine Vorrichtung geladen
werden soll. Bei einer Implementierung in der gemeinsam teilbaren Vorrichtung
kann sich jeder Satz von Registern (einer gegebenen Client-Schnittstelle)
mit Ausnahme eines unterschiedlichen Versatzes im gleichen Adressenbereich
befinden.
-
Das
Setzen eines Basisadressenregisters (BAR) kann verwendet werden,
um die Basisadresse, die durch eine Vorrichtung verwendet wird,
zu bestimmen. Wenn der Kunde versucht, ein BAR zu setzen, kann die
VMM dazu gestaltet sein, diese Anforderung abzufangen, und kann
sie sie abändern.
Dies erfolgt aus mehreren Gründen.
Erstens kann jeder von zwei VMs unwissentlich versuchen, die BARs
in einer Schnittstelle auf den gleichen Wert zu setzen. Die VMM
kann dazu gestaltet sein, sicherzustellen, daß dies nicht passiert. Zweitens
kann jede VM glauben, daß sie
in einem auf Null beruhenden Adressenraum (sogenannten physikalischen
Gast-Adressen oder GPAs) läuft.
Wenn das BAR durch einen Gast gesetzt werden soll, sollte die auf
Null beruhende GPA in die tatsächliche
physikalische Host-Adresse (HPA) übersetzt werden, bevor sie
in das BAR geladen wird. Darüber
hinaus sollte die VMM die Speicherverwaltungstabellen der Gast-VM
so abändern, daß sie diese Übersetzung
widerspiegeln.
-
Die
gemeinsam teilbare Vorrichtung kann eine sogar noch erwünschtere
Lösung
sein, wenn das Kernfunktionalitätsschaltungssystem 104 so
verhältnismäßig komplex
und/oder groß ist,
daß sein Duplizieren
zu teuer wäre
(und der parallele Verarbeitungsleistungsgewinn aus der Duplizierung
nicht benötigt
wird). Eine andere vorteilhafte Verwendung wäre in einer Ein-/Ausgabe-Virtualisierungs-Ausführungsform
(wie sich nachstehend unter Bezugnahme auf 2 beschrieben
ist). In diesem Fall gestattet die gemeinsam teilbare Vorrichtung 100,
daß der
Virtual-Machine-Monitor (VMM) nicht an jedem Vorgang beteiligt ist,
wodurch die Wartezeit für
Grafik- und Vernetzungsvorgänge
(die in Bezug auf die Wartezeit besonders empfindlich sind) verkürzt wird.
Zusätzlich könnten die
Gestaltung und die Ausführung
der VMM in einigen Ausführungsformen
weniger komplex sein, was zu einem stabileren Betrieb der Software
führt. Dies
kann daran liegen, daß das
Vorhandensein von mehreren Client-Schnittstellen die Notwendigkeit, daß die VMM
entsprechende virtuelle Vorrichtungen unterstützt, erübrigt (z.B. muß die VMM
weder die Vorrichtung selbst noch den PCI-Konfigurationsraum für jede virtuelle
Vorrichtung emulieren).
-
Ein
Software-Client kann jede beliebige der Client-Schnittstellen 112 verwenden,
um die gleiche Hauptfunktion der gemeinsam nutzbaren Vorrichtung aufzurufen.
Diese Hauptfunktion kann die einer Ein-/Ausgabe-Vorrichtung wie
etwa eines Anzeigegrafikadapters, z.B. ein Bildrendern, das das Bitmap-Anzeigebild
erzeugt, sein. In diesem Fall kann die gemeinsam nutzbare Vorrichtung
als Teil des Grafik-Ein-/Ausgabe-Abschnitts eines Computersystem-Chipsatzes
oder als einzelne Grafikadapterkarte ausgeführt sein. Die Client-Schnittstelle
kann im letzteren Fall auch einen elektrischen Steckverbinder zur
abnehmbaren Verbindung der Karte mit einem Bus des Computersystems
beinhalten. In diesem Fall könnte
durch den gleichen Steckverbinder auf alle Schnittstellen zugegriffen
werden.
-
Eine
andere Hauptfunktion kann die einer Netzwerkschnittstellensteuerung
(NIC) sein. In einer derartigen Ausführungsform kann jeder Software-Client
(z.B. der VM-Client 108) ein gesonderter Endknoten in einem
Netz sein. Der VM-Client 108 würde mit dem Netz über Hauptfunktionen
wie etwa die Transportkontrollprotokoll/Internetprotokoll(TCP/IP)-Paketabladung (die
abgehende Pakete erzeugt und ankommende Pakete decodiert) und die
Medienzugriffssteuerungs(MAC)-Adressenfilterung kommunizieren. In
diesem Fall kann die gemeinsam nutzbare Vorrichtung eine einzelne
Netzwerkschnittstellensteuerungskarte sein. Jede Client-Schnittstelle
bietet die Erscheinung einer vollständigen oder voll funktionsfähigen NIC,
einschließlich
einer gesonderten MAC-Adresse für
jede Client-Schnittstelle. Ankommende Pakete würden automatisch zur richtigen
Client-Schnittstelle und dann zum entsprechenden VM-Client weiter geroutet
werden. Dies würde
erreicht werden, ohne CPU-Zyklen (VMM) aufwenden zu müssen, um
jedes ankommende Paket zu bewerten, und ohne die Notwendigkeit,
die NIC in eine wahllose Betriebsart zu stellen, in der die CPU
jedes ankommende Paket ungeachtet dessen untersucht, ob das Paket
für eine
VM im System bestimmt ist, oder nicht.
-
Es
sollte bemerkt werden, daß die
Client-Schnittstellen der gemeinsam nutzbaren Vorrichtung 100,
obwohl sie sich einem Software-Client als vollständige, gesonderte Vorrichtungen
zeigen können,
keine identischen Vorrichtungen sein müssen. Allgemeiner kann die
gemeinsam nutzbare Vorrichtung 100 heterogene Schnittstellen
aufweisen, wenn eine oder mehrere ihrer Client-Schnittstellen 112 den VM-Client
einen unterschiedlichen Satz von Vorrichtungsfähigkeiten (in der Kernfunktionalität 104 ausgeführt) bieten.
Man betrachte zum Beispiel den Fall, wobei die gemeinsam nutzbare
Vorrichtung ein Anzeigegrafikadapter ist. Eine seiner Client-Schnittstellen
kann einem Software-Client als eine ältere Version einer bestimmten
Vorrichtung (z.B. eine Vorläufervorrichtung)
erscheinen, während
eine andere dem Software-Client
als eine neuere Version erscheint. Man betrachte als anderes Beispiel
einen Grafikadapter, dessen Kern-Ein-/Ausgangs-Funktionalität als eine
skalierbare Computerarchitektur mit mehreren programmierbaren Recheneinheiten
ausgeführt
ist. Eine der Client-Schnittstellen könnte dazu gestaltet oder programmiert
sein, auf einen größeren Untersatz
der Recheneinheiten als eine andere zuzugreifen, um die gleiche
Art, aber eine leistungsfähigere Ein-/Ausgangs-Funktionalität zu bieten.
-
In
einem anderen Beispiel kann die gemeinsam nutzbare Vorrichtung 100 einige
vollständigere Client-Schnittstellen
aufweisen, die zum Beispiel eine höhere Leistungsfähigkeit
(z.B. unterschiedliche Arten von Grafik-Rendering-Funktionen in
der Kernfunktionalität)
zeigen. Eine komplexere Schnittstelle würde höchstwahrscheinlich zu einem
entsprechend komplexeren Vorrichtungstreiberprogramm, das damit
verbunden ist, führen.
Da ein komplexerer Vorrichtungstreiber wahrscheinlicher Fehler oder Schlupflöcher aufweisen
wird und einer Sicherheitsanalyse gegenüber weniger zugänglich sein
wird, würde
er demgemäß als Angriffen
gegenüber
verwundbarer erachtet werden. Daher würde die Schnittstelle in diesem
Fall aufgrund ihrer Komplexität
als unzuverlässig
und unsicher bezeichnet werden. Gleichzeitig kann die gemeinsam
nutzbare Vorrichtung eine oder mehrere Client-Schnittstellen aufweisen,
die eine Version der Haupt-Ein-/Ausgabefunktion mit niedrigerer
Leistung zeigen (z.B. nur grundlegendes Bild-Rendern und -darstellen).
Die letzteren Schnittstellen würden
als Ergebnis als zuverlässiger
oder sicherer erachtet werden.
-
Zum
Beispiel kann eine Schnittstelle (aufgrund ihrer Komplexität oder ihrer
inhärenten
Gestaltung) als ausreichend zuverlässig erachtet werden, um sich
zum Schutz von geheimen Daten eines Benutzers (z.B. Daten, die vom
Benutzer des Systems stammen und von diesem "besessen" werden, wie etwa die Sozialversicherungsnummer
und finanzielle Informationen des Benutzers) auf sie zu verlassen. Diese
Schnittstelle (zu einer Grafikvorrichtung) kann verwendet werden,
um ausschließlich
den Ausgang bestimmter Anwendungsprogramme wie etwa der persönlichen
Buchhaltungs- und Steuererstellungssoftware darzustellen. Dies würde zum
Beispiel helfen, einen Angriff durch eine bösartige Softwarekomponente
einer dritten Partei, die das System infiltriert hat und danach
trachtet, vertrauliche persönliche
Informationen über
den Benutzer zu sammeln, zu vereiteln.
-
In
einem anderen Szenario könnte
eine weniger komplexe Schnittstelle für einen erhöhten Inhaltsschutz, z.B. das
Hindern des Benutzers des Systems, urheberrechtlich geschützte Daten
einer dritten Partei, die irgendwie am Ausgang der Kernfunktionalität erscheinen,
zu erfassen, verwendet werden. Zum Beispiel kann der Benutzer an
einem bestimmten VM-Client ein DVD-Spielanwendungsprogramm laufen lassen,
das nur mit einer inhaltsgeschützten
Schnittstelle verbunden ist, so daß der Filmdatenstrom durch
diese Schnittstelle nur wiedergegeben werden muß. Alternativ kann die inhaltsschützende Client-Schnittstelle
so gestaltet sein, daß durch
das Anwendungsprogramm ohne dazwischenliegende Vorrichtungstreiberschicht
direkt darauf zugegriffen werden kann. Diese Art von einfacherer Schnittstelle
könnte
die Gelegenheiten für
einen Angriff durch Bereitstellen von weniger Wegen zwischen dem
Anwendungsprogramm und der Kerngrafik-Render- und -anzeigefunktionalität weiter
verringern.
-
Eine
einzelne gemeinsam nutzbare Vorrichtung 100, die mehrere
Client-Schnittstellen aufweist, kann weiter verbessert werden, indem
ihr die Fähigkeit
hinzugefügt
wird, die Anzahl der aktiven Schnittstellen zu verändern. Diese
zusätzliche
Fähigkeit könnte dazu
gestaltet sein, einer bestimmten Software, die im System läuft, wie
etwa der Dienst-VM 130 oder der VMM 224 (nachstehend
in Verbindung mit 2 beschrieben), Zugriff auf
Konfigurationsregister zu geben, die einige der Client-Schnittstellen
aktivieren/deaktivieren, und andere nicht. Dies hilft, die Zuteilung
von Betriebsmitteln in der Ein-/Ausgabe-Vorrichtung zu steuern,
um zum Beispiel den Bedürfnissen
der VM-Clients, die im System laufen, besser zu entsprechen.
-
Die
in 1 gezeigte gemeinsam nutzbare Vorrichtung 100 kann
auch eine oder mehrere Weltschnittstellenschaltungen (oder einfach, "Weltschnittstellen") 120 aufweisen.
Wenn mehr als eine vorhanden sind, sind die Weltschnittstellen über ein
zusätzliches
Multiplex-Schaltungssystem 122 mit
dem Kernfunktionsschaltungssystem 104 gekoppelt. Jede Weltschnittstelle 120 kann
digitale und/oder analoge Schaltungen aufweisen, die dazu dienen,
zwischen der Signalisierung im Kernfunktionsschaltungssystem 104 und
der Signalisierung außerhalb
der Vorrichtung zu übersetzen.
Die Weltschnittstelle kann Steckverbinder und/oder andere Hardware
beinhalten, die nötig
sind bzw. ist, um über
eine verdrahtete oder eine drahtlose Verbindung mit einem Computersystemperipheriegerät wie etwa
einem Anzeigebildschirm oder einer Digitalkamera zu kommunizieren. Im
Fall einer Netzwerkschnittstellensteuerung kann die Weltschnittstelle
als Netzwerkzugang bezeichnet werden, der mit einem Knotenverbindungsmedium eines
lokalen Netzwerks (LAN) verbunden ist. Dieser Zugang kann Schaltungen
oder drahtlose Sender und Empfänger
aufweisen, die mit einem LAN-Kabel (z.B. einem Ethernet-Kabel) verbunden
sind oder zum Beispiel mit einem drahtlosen Zugangspunkt kommunizieren.
-
In
einigen Ausführungsformen
kann die gemeinsam nutzbare Vorrichtung 100 mit einer Steuerschnittstellenschaltung
(oder einfach, einer "Steuerschnittstelle") 126 ausgerüstet sein,
die durch Software im System, welche als Dienst-VM 130 bezeichnet
wird, verwendet werden soll. Die Steuerschnittstelle 126 kann
für eine
Vielfalt von unterschiedlichen Zwecken verwendet werden. Zum Beispiel
kann sie ein Mechanismus sein, um Daten von den verschiedenen Clients
zu kombinieren (z.B., um zu steuern, wo auf dem gleichen Anzeigebildschirm
die Ausgabe jeder VM dargestellt werden wird). Die Steuerschnittstelle
kann auch verwendet werden, um gegensätzliche Befehle von den mehreren
VM-Clients aufzulösen.
Zum Beispiel kann sie eine andere Weise bereitstellen, um den Zugriff
durch die VM-Clients 108 (über ihre jeweiligen Client-Schnittstellen 112)
auf die Kernfunktionalität
zu steuern. Als ein Beispiel kann die Steuerschnittstelle in einem
gemeinsam nutzbaren Grafikadapter dazu gestaltet sein, der Dienst-VM 130 zu
gestatten, die Vorrichtung mit einer bestimmten Ablaufplanungspolitik
zur Anzeige mehrerer Fenster zu programmieren, z.B. einer, die während eines
gegebenen Zeitintervalls nicht allen VM-Clients die gleiche Priorität verleiht;
einer die einige, aber nicht alle der Funktionsblöcke in der
Kernfunktionalität
einem bestimmten VM-Clients zuteilt. In einer derartigen Ausführungsform
kann die gemeinsam nutzbare Vorrichtung ferner mit Arbeitslast-Warteschlangen (nicht
gezeigt) ausgerüstet
sein, wobei für
jede Client-Schnittstelle 112 eine Schlange vorhanden ist und
zwischen der Client-Schnittstelle 112 und dem Kernfunktionsschaltungssystem 104 gekoppelt
ist. Die Steuerschnittstelle würde
der Dienst-VM gestatten, als eine Funktion des Warteschlangenzustands (z.B.
ihrer Tiefe, wie voll oder leer sie ist, ihrer Priorität usw.)
zu wählen,
welche Warteschlange Befehle zum Kernfunktionsschaltungssystem führt. Die
Steuerschnittstelle kann auch verwendet werden, um zu konfigurieren,
wie Grafiken gerendert und dargestellt werden sollen, z.B. als Mehrfachbildschirm,
wobei jede VM einem gesonderten Bildschirm zugeteilt wird, oder
als Mehrfachfenster auf dem gleichen Bildschirm. Der Leistungsverbrauch
des Grafikadapters kann ebenfalls über die Steuerschnittstelle
verwaltet werden. Es ist zu beachten, daß die gemeinsam nutzbare Vorrichtung
in manchen Fällen
ohne die Steuerschnittstelle auskommen kann. Zum Beispiel kann eine
gemeinsam verwendbare NIC einfach einmal mit einer Vermittlungspolitik
programmiert (oder vielleicht festverdrahtet) werden, um ihre verschiedenen
Client-Schnittstellen
gerecht, oder sogar ungerecht, zu bedienen, wenn dies passend ist.
-
Im
Fall einer NIC kann die Steuerschnittstelle der Dienst-VM gestatten,
die Bandbreite, die auf einer Pro-VM-Client-Basis zugeteilt oder
reserviert ist, zu verändern.
Im Fall einer Soundkarte kann die Steuerschnittstelle der Dienst-VM
gestatten, das Mischen des Tons von verschiedenen VM-Client-Quellen
zu steuern. Noch eine andere Möglichkeit
ist, die Steuerschnittstelle dazu zu verwenden, zu ermöglichen,
daß ein
Bild- und/oder Tonerfassungsstrom zu einem bestimmten VM-Client
geroutet wird. Zum Beispiel kann sich die Steuerschnittstelle dort
befinden, wo Software die Verbindung einer jeden von mehreren unterschiedlichen
Medienzugriffssteuerungen (MAC) mit ihren jeweiligen VM-Clients
angibt.
-
Unter
Hinwendung zu 2 ist ein Blockdiagramm eines
Computersystems, das eine gemeinsam nutzbare Vorrichtung 100 aufweist
und einen Virtualisierungsprozess betreibt, dargestellt. Die gemeinsam
nutzbare Vorrichtung 100 ist Teil der physikalischen Host-Rechner-Hardware 204 des
Systems, auch als das bloße
Metall bezeichnet. Die Host-Rechnerhardware 204 kann einen
Satz von verfügbaren
Ein-/Ausgabe-Vorrichtungen (nicht gezeigt) wie etwa eine Tastatursteuerung,
eine Festplattenlaufwerksteuerung, und einen Grafikanzeigeadapter beinhalten.
Diese dienen dazu, mit Peripheriegeräten wie etwa einer Benutzereingabe-Vorrichtung 208 (in diesem
Beispiel als eine Kombination aus Tastatur und Maus dargestellt),
einer nichtflüchtigen
Massenspeichervorrichtung (hier als Festplattenlaufwerk 212 dargestellt),
einem Anzeigebildschirm 214 und einer NIC-Adapterkarte 216 zu
kommunizieren.
-
Die
Virtualisierung wird hier unter Verwendung eines Programms erreicht,
das als ein Virtual-Machine-Monitor
(VMM) 224 bezeichnet wird. Die VMM 224 "teilt" die Host-Rechnerplattform 224 in mehrere
isolierte virtuelle Maschinen (VMs) 228. Jede VM 228 erscheint
für die
Software, die darin läuft,
als im wesentlichen vollständiges
Computersystem, das wie gezeigt Ein-/Ausgabe-Vorrichtungen und Peripheriegeräte beinhaltet.
Die VMM 224 ist für die
Bereitstellung der Umgebung, in der jede VM 228 läuft, verantwortlich
und kann verwendet werden, um die Isolation zwischen den VMs aufrechtzuerhalten (eine
Alternative wäre
hier die Verwendung von Hardware-CPU-Erweiterungen, um die Isolation
aufrechtzuerhalten). Die Software, die in jeder VM 228 läuft, kann
ein unterschiedliches Gast-OS 232 beinhalten. In einer
VM-Umgebung hat jedes Gast-OS 232 die Vorstellung, daß es auf
seiner eigenen Hardwareplattform läuft. Ein Gast-OS 232 kann
sich deshalb möglicherweise
nicht dessen bewußt
sein, daß ein anderes
Betriebssystem ebenfalls im gleichen System läuft, oder daß das zugrundeliegende
Computersystem geteilt ist.
-
Der
Virtualisierungsprozeß gestattet,
daß Anwendungsprogramme 236 in
unterschiedlichen VMs 228 an der Spitze ihrer jeweiligen
Gastbetriebssysteme 232 laufen. Die Anwendungsprogramme 236 können ihre
Informationen unter Verwendung gesonderter Fenster (zum Beispiel
eines für
jede VM) gleichzeitig auf einem einzelnen Anzeigebildschirm 214 darstellen.
Dies wird durch die gemeinsam nutzbare Vorrichtung 100,
die in diesem Beispiel ein Grafikadapter ist, möglich gemacht. Es ist zu beachten, daß die VMM 224 dazu
gestaltet ist, sich des Vorhandenseins einer solchen gemeinsam nutzbaren
Vorrichtung 100 bewußt
zu sein, und demgemäß die Fähigkeit
aufweist, sie zu verwalten (z.B. über eine Dienst-VM 130,
siehe 1). Es werden jedoch viele Nachteile einer reinen
Softwaretechnik zur gemeinsamen Benutzung einer physikalischen Vorrichtung vermieden.
Zum Beispiel kann möglicherweise
keine Notwendigkeit bestehen, eine ziemlich komplexe VMM zu gestalten
und auszuführen,
die verstehen muß,
wie die physikalische Vorrichtung im Einzelnen arbeitet, um fähig zu sein,
sie richtig gemeinsam zu teilen. Dies kann durch die Verfügbarkeit
von mehreren Client-Schnittstellen in der Hardware, die durch jedes
Gast-OS 232 leicht erkennbar sind, verhindert werden.
-
Einige
zusätzliche
Vorteile des Konzepts der gemeinsam benutzbaren Vorrichtung können durch die
folgenden Beispiele beschrieben werden. Man betrachte ein System
mit mehreren Prozessoren, oder eines mit einer Hyper-threaded zentralen
Verarbeitungseinheit (CPU), wobei eine einzelne CPU als zwei oder
mehr CPUs wirkt (nicht nur in einem Sinn der Ablaufplanung, sondern,
da genug Ausführungskapazität verbleibt).
Der Prozessor 1 führt
den Code für
eine VM0 aus, und der Prozessor 2 führt den Code für eine VM1
aus. Als nächstes
nehme man an, daß jede
VM gleichzeitig auf die gleiche Ein-/Ausgabe-Vorrichtung zugreifen
möchte.
Eine nicht gemeinsam benutzbare Ein-/Ausgabe-Vorrichtung kann zu jedem
beliebigen Zeitpunkt nur in einem Kontext tätig sein. Daher kann nur eine
der VMs auf die Vorrichtung zugreifen. Der Versuch der anderen VM,
auf die Vorrichtung zuzugreifen, würde dazu führen, daß sie im falschen Kontext auf
die Vorrichtung zugreift.
-
Eine
Ausführungsform
der Erfindung gestattet das Entkoppeln der "Unterhaltung" (zwischen einer VM und einer Hardware-Client-Schnittstelle)
und der "Arbeit" (die durch das Kernfunktionsschaltungssystem
ausgeführt
wird), so daß die
oben beschriebene Kontextumschaltung möglicherweise nicht benötigt wird.
Dies liegt daran, daß jeder
VM ihre gesonderte Hardware-Client-Schnittstelle
zugeteilt ist, so daß die
VMs die Ein-/Ausgabe-Anforderungen zu ihren jeweiligen Client-Schnittstellenschaltungen senden
können,
ohne daß eine
Kontextumschaltung der Ein-/Ausgabe-Vorrichtung benötigt wird.
Dies stellt eine Lösung
für das
oben beschriebene Zugriffsproblem bereit.
-
Als
anderes Beispiel betrachte man eine CPU, die sowohl die VM0 als
auch die VM1 ablaufen läßt. In der
VM0 macht die Anwendungssoftware verhältnismäßig starken Gebrauch von der
CPU (berechnet sie, z.B., die Konstante Pi), verlangt aber sehr
wenig vom Grafikadapter (z.B. das Aktualisieren der Uhr in einem
Anzeigefenster). Im anderen VM-Fenster wird ein Grafikmuster regelmäßig durch den
Grafikadapter aktualisiert, wenn auch unter geringer Verwendung
der CPU. Man nehme nun an, daß die
CPU und der Grafikadapter vom Kontext her zusammengeschaltet sind
(daß der
Grafikadapter und die CPU für
einen Teil der Zeit an die VM0 und für den Rest der Zeit an die
VM1 gegeben werden). In diesem Fall führt die verhältnismäßig leichte
Grafikanforderung durch die VM0 während eines Teils der Zeit
zu verschwendeten/Leerlauf-Grafikzyklen, während die leichte CPU-Anforderung
durch die VM1 für den
Rest der Zeit verschwendete/Leerlauf-CPU-Zyklen erzeugt. Dies liegt
daran, daß sich
sowohl die CPU als auch die Grafikadapter-Kernfunktionalität immer
im gleichen Kontext befinden. Diese nicht leistungsfähige Verwendung
der Systembetriebsmittel kann durch eine Ausführungsform der Erfindung, die gestattet,
daß die
Arbeitsbelastung der CPU unabhängig
von der Arbeitsbelastung des Grafikadapters geplant wird, verhindert
werden. Durch die Verfügbarkeit
von verschiedenen Hardware-Client-Schnittstellen im Grafikadapter
kann die CPU so geplant werden, daß sie den Großteil ihrer
Zeit mit der Ausführung
für die
VM0 verbringt, aber immer noch gelegentlich Zugriff auf den Grafikadapter
erhält.
Andererseits kann die Kernfunktionalität des Grafikadapters so eingeteilt
werden, daß sie
den Großteil
ihrer Zeit an der VM1 verbringt, und gelegentlich unterbrochen werden
kann, um die VM0 zu bedienen.
-
Unter
Hinwendung zu 3 ist ein Ablaufdiagramm eines
Virtualisierungsprozesses, der mit der Feststellung und der Teilung
einer gemeinsam benutzbaren Ein-/Ausgabe-Vorrichtung in einem Computersystems
verbunden ist, dargestellt. Das System kann das in 2 gezeigte
sein. Das Verfahren beginnt mit der Tätigkeit 304, in der
im System ein Plug-and-Play-Feststellungsprozeß durchgeführt wird. Als ein Beispiel
kann dies Teil eines herkömmlichen
PCI-Vorrichtungs-
und -Funktionsaufzählungsprozesses
(auch als "PCI-Konfigurationsprozeß" bezeichnet) sein.
Der Feststellungsprozeß kann
die mehreren Ein-/Ausgabe-Vorrichtungen als Ergebnis des Lesens
einer eindeutigen PCI-Vorrichtungskennungsnummer für jede Vorrichtung
von den verschiedenen Client-Schnittstellen einer einzelnen Grafikadapterkarte
feststellen. Dies kann nach dem Einschalten des Systems durch eine
Ein-/Ausgabe-Grundsystem-Firmware (BIOS) erfolgen, und/oder die
VMM wird durch einen Prozessor des Systems ausgeführt. Die
Adapterkarte ist ein Beispiel für
eine gemeinsam benutzbare Ein-/Ausgabe-Vorrichtung, deren Kern-Ein-/Ausgabefunktionalität durch
ihre mehreren Hardware-Client-Schnittstellen gemeinsam benutzt werden
wird. Der Feststellungsprozeß kann
auch eine andere Vorrichtung in der Form der Steuerschnittstelle 126 (siehe 2)
feststellen.
-
In
einer alternativen Ausführungsform
kann das BIOS während
des anfänglichen
Hochfahrens nur die Steuerschnittstelle feststellen. Einige Zeit später kann
die VMM die Steuerschnittstelle verwenden, um wie nötig eine
oder mehrere Client-Schnittstellen zu erzeugen. Diese Schnittstellen
könnten alle
auf einmal erzeugt werden, oder nach Bedarf erzeugt werden. Bei
der Erzeugung jeder Schnittstelle würde die VMM ein Ereignis des
Anschließens
bei laufendem Betrieb (hot plug event) erkennen, das die "Einfügung" der neu erzeugten
Schnittstelle angibt. Siehe zum Beispiel die mit "Method, Apparatus
and System for Dynamically Reassigning a Physical Device from One
Virtual Machine to Another" betitelte US-Patentanmeldung
mit der Seriennummer 10/794,469 von Lantz et al., die am 5. März 2004
eingereicht wurde und dem gleichen Übertragungsempfänger wie
jenem der vorliegenden Anmeldung übertragen ist.
-
Das
Verfahren setzt mit Tätigkeit 308 fort,
bei der die VMM, oder die Dienst-VM, eine oder mehrere VMs erzeugt
und ihnen eine oder mehrere der festgestellten Ein-/Ausgabe-Vorrichtungen zuteilt.
In diesem Beispiel ist jede festgestellte Vorrichtung der Grafikadapter
einer jeweiligen VM im System. Die Dienst-VM kann dann verwendet
werden, um den Adapter über
seine Steuerschnittstelle zu konfigurieren, so daß seine
Kern-Ein-/Ausgabefunktionalität gemäß, zum Beispiel,
einer Prioritätspolitik,
die einer VM Priorität
vor einer anderen gibt (Tätigkeit 312), gemeinsam
benutzt wird. Danach kann die VMM in den Hintergrund treten, sobald
die VMs laufen, und sich im wesentlichen selbst nicht mit Ein-/Ausgabe-Vorgängen befassen,
da jede VM nun ihre OS-Anrufe, die auf die Anzeige von Grafiken
abzielen, leicht abändern
oder erfassen kann (z.B. durch Hinzufügen eines Adressenversatzes,
um auf ihre zugeteilte HardwareClient-Schnittstelle zu zeigen).
-
Einige
Ausführungsformen
der Erfindung können
als ein Computerprogrammprodukt oder Software bereitgestellt werden,
das bzw. die eine Maschine oder ein computerlesbares Medium beinhalten
kann, auf der bzw. dem Befehle gespeichert sind, die verwendet werden
können,
um einen Computer (oder eine andere elektronische Vorrichtung) zur Durchführung eines
Prozesses nach einer Ausführungsform
der Erfindung zu programmieren. In anderen Ausführungsformen könnten Tätigkeiten
durch bestimmte Hardwarekomponenten, die Mikrocodes oder festverdrahtete
Logik enthalten, oder durch jede beliebige Kombination von programmierten
Computerkomponenten und maßgeschneiderten
Hardwarekomponenten durchgeführt
werden.
-
Ein
maschinenlesbares Medium kann jeder beliebige Mechanismus sein,
der Informationen in einer Form bereitstellt, d. h., speichert oder
sendet, die für
eine Maschine (z.B. einen Satz aus einem oder mehreren Prozessoren,
einen Tischcomputer, einen tragbaren Computer, ein Herstellungswerkzeug,
oder jede beliebige andere Vorrichtung, die einen Prozessor aufweist)
zugänglich
ist, wie z.B. beschreibbare/nicht beschreibbare Medien wie etwa
Nurlesespeicher (ROM), Direktzugriffsspeicher (RAM), magnetische
rotierende Plattenspeichermedien, optische Plattenspeichermedien
wie auch elektrisch, optisch, akustisch oder in anderer Form verbreitete
Signale (z.B. Trägerwellen,
Infrarotsignale usw.).
-
Zusammengefaßt wurden
verschiedenste Ausführungsformen
einer Technik zur gemeinsamen Benutzung einer physikalischen Vorrichtung
unter mehreren Clients beschrieben. In der obigen Beschreibung wurde
die Erfindung unter Bezugnahme auf bestimmte beispielhafte Ausführungsformen
davon beschrieben. Es wird jedoch offensichtlich sein, daß daran
Abwandlungen und Veränderungen
vorgenommen werden können,
ohne vom weiteren Geist und Umfang der Erfindung, wie diese in den beiliegenden
Ansprüchen
bekannt gemacht sind, abzuweichen. Zum Beispiel kann das Computersystem, in
dem die VMM laufen wird, mehrere Prozessoren (CPUs) aufweisen, wobei
jeder VM-Client zum Beispiel auf einem unterschiedlichen Prozessor
laufen kann. Die mehreren Client-Schnittstellen einer gemeinsam
benutzbaren Vorrichtung in einem derartigen System gestatten, daß der Zugriff
auf die gleiche Kernfunktionalität
der Vorrichtung durch unterschiedliche VM-Clients gleichzeitig stattfindet,
ohne daß die VM-Clients
voneinander Kenntnis haben. Dies würde stattfinden, ohne daß die VM-Clients
einander von ihrem eigenen Blickpunkt her stören. "Gleichzeitiger Zugriff" bedeutet in diesem
Zusammenhang zum Beispiel, daß eine
Vorgangsanforderung durch die Ein-/Ausgabe-Vorrichtung erfaßt wird, aber noch nicht abgeschlossen
wurde, und eine andere Vorgangsanforderung ebenfalls durch die Ein-/Ausgabe-Vorrichtung
erfaßt
wird und nicht abgeschlossen wurde. In einem nichtvirtualisierten
System stellt das OS typischerweise sicher, daß ein derartiges Szenario nicht
gestattet wird, daß z.B.
keinen zwei CPUs gestattet wird, die gleiche Vorrichtung zur gleichen Zeit
zu programmieren. Doch in einer Ausführungsform des hier beschriebenen
VM-Systems ist erwünscht,
daß die
VMM keine derartige Verantwortung übernehmen muß (aufgrund
der Komplexität
einer derartigen Software, die jeden Zugriff auf eine Ein-/Ausgabe-Vorrichtung überwachen
müßte oder damit
befaßt
sein müßte). Demgemäß gibt es
in einem derartigen System keine Koordination zwischen den VM-Clients
oder Gästen,
während
sie auf die gleiche Ein-/Ausgabe-Vorrichtung zugreifen. Diese Zugriffe
werden jedoch aufgrund der Natur der mehreren Client-Schnittstellen,
die oben beschrieben wurden, richtig zur Kernfunktionalität der Ein/Ausgabe-Vorrichtung
geroutet, was diese Lösung
für Mehrfachprozessor-VM-Systeme
besonders attraktiv macht. Die Beschreibung und die Zeichnungen
sollen demgemäß anstatt
in einem beschränkenden Sinn
vielmehr in einem erläuternden
Sinn betrachtet werden.
-
Zusammenfassung
-
Eine
physikalische Vorrichtung weist ein Kernfunktionsschaltungssystem
auf, das eine Kern-Ein-/Ausgabefunktion
eines Computersystems durchführen
soll. Es sind mehrere Client-Schnittstellen
bereitgestellt, von denen sich jede einem Software-Client im System
als eine vollständige
Vorrichtung zeigt, um auf das Kernfunktionsschaltungssystem zuzugreifen.
Ein Multiplexierungsschaltungssystem koppelt die Client-Schnittstellen
mit der Kern-Ein-/Ausgabefunktionalität. Andere Ausführungsformen
sind ebenfalls beschrieben und beansprucht.