Befehlsplanung

Befehlsplanung

Befehle können jederzeit aus mehreren Kontexten an den TBS übermittelt werden. Ein physisches TPM kann jedoch nur jeweils einen Befehl verarbeiten, und einige Befehle können für einen längeren Zeitraum ausgeführt werden. Wenn mehrere Befehle ausstehen, entscheidet der TBS, welcher Befehl an das TPM gesendet werden soll. Wenn ein Befehl übermittelt wird, ist jedem Befehl eine Priorität zugeordnet. Der TBS verwendet diese Prioritäten, um zu bestimmen, welcher ausstehende Befehl übermittelt werden soll, wenn das TPM kostenlos ist. Die vier Prioritätsebenen sind niedrig, normal, hoch und system. Anwendungen sollten eine niedrige, normale oder hohe Priorität verwenden. Obwohl Befehle mit hoher Priorität in der Regel vor Befehlen mit niedriger Priorität ausgeführt werden, verfügt der TBS-Befehlsplaner über eine veraltete Richtlinie, die befehlen, die für längere Zeit blockiert wurden, letztendlich eine sehr hohe Priorität einräumen.

Kontextverwaltung

Wenn ein TPM _ SaveContext- oder TPM2 ContextSave-Befehl mit einem virtuellen Handle an eine Ressource übermittelt wird, die vom TBS verwaltet wird, führt der TBS den entsprechenden Befehl für die physische Ressource aus und gibt das Ergebnis an den Aufrufer zurück, wenn die Ressource physisch im TPM vorhanden ist. Wenn die Ressource nicht physisch im TPM vorhanden ist, führt die Vorverarbeitung des _ TPM-Befehls SaveContext oder TPM2 _ ContextSave dazu, dass die Ressource erneut geladen wird. An diesem Punkt wird der Kontext gespeichert und an den Aufrufer zurückgegeben. Wenn die gespeicherte Ressource von einem Typ ist, der nach dem Speichern normalerweise automatisch aus dem TPM geleert wird, macht der TBS die virtuelle Ressource nach Abschluss dieses Befehls ungültig. Wenn ein TPM _ LoadContext- oder TPM2 _ ContextLoad-Befehl an den TBS übermittelt wird, führt der TBS den Befehl sofort aus. Wenn der Befehl erfolgreich abgeschlossen wurde, virtualisiert der TBS das Ressourcenhandle und übergibt den resultierenden TPM-Bytestream an den Aufrufer. Wenn ein TPM _ FlushSpecific- oder TPM2 _ FlushContext-Befehl mit einem virtuellen Handle an eine Ressource übermittelt wird, die vom TBS verwaltet wird, führt der TBS einen TPM _ FlushSpecific- oder TPM2 _ FlushContext-Befehl aus, um die Ressource aus dem TPM zu löschen, wenn sie physisch vorhanden ist. In diesem Fall macht der TBS die virtuelle Ressource ungültig und gibt das Ergebnis des Leerungsbefehls an den Aufrufer zurück. Wenn die Ressource nicht physisch im TPM vorhanden ist, lädt die Vorverarbeitung des _ TPM FlushSpecific- oder TPM2 _ FlushContext-Befehls die Ressource, die dem virtuellen Handle entspricht, wird jedoch geleert, wenn der Befehl tatsächlich verarbeitet wird. Der TBS unterstützt weder das TPM _ KeyControlOwner-Bit noch die keepHandle-Funktionalität des TPM _ LoadContext-Vorgangs. Daher wird einer Ressource nicht das gleiche Handle wie vor dem Speichern des Kontexts bereitgestellt.

Andere Befehle

Befehle, die in dieser Dokumentation nicht erwähnt werden, werden verarbeitet, indem virtuelle Schlüsselhandles durch physische Schlüsselhandles (falls erforderlich) ersetzt und an das TPM übermittelt werden. Dies erfolgt nach dem Ausführen der entsprechenden Vorgänge, um sicherzustellen, dass die verwendeten Ressourcen physisch auf dem TPM vorhanden sind. Es wird keine zusätzliche spezielle Verarbeitung durchgeführt. Der TBS versucht nicht, die Genauigkeit der Virtualisierung zu verbessern, indem daten geändert werden, die im Rahmen einer TPM _ GetCapabilities- oder TPM2 GetCapability-Abfrage vom TPM zurückübersenden _ werden. Der TBS unterstützt auch TCG Physical Presence-Befehle. Der TBS fungiert als Pass-Through für Physische Präsenzbefehle. es erfolgt keine spezielle Verarbeitung durch den TBS selbst.

Bereinigen

Wenn ein Kontext beendet wird, werden alle physischen und virtuellen Ressourcen, die ihm zugeordnet sind, bereinigt, sodass sie keine Systemressourcen mehr verbrauchen.