Condividi tramite


Pianificazione dei comandi

Pianificazione dei comandi

I comandi possono essere inviati a TBS da più contesti in qualsiasi momento. Tuttavia, un TPM fisico può elaborare un solo comando alla volta e alcuni comandi possono essere eseguiti per un periodo di tempo significativo. Quando più comandi sono in sospeso, tbS decide quale comando inviare al TPM. Quando viene inviato un comando, ogni comando ha una priorità associata. TbS usa queste priorità per determinare quale comando in sospeso inviare ogni volta che il TPM è gratuito. I quattro livelli di priorità sono bassi, normali, elevati e di sistema. Le applicazioni devono usare bassa, normale o alta priorità. Anche se i comandi con priorità elevata vengono in genere eseguiti prima dei comandi con priorità bassa, l'utilità di pianificazione dei comandi TBS ha un criterio di invecchiamento che alla fine dà priorità molto alta ai comandi bloccati per periodi significativi di tempo.

Gestione dei contesti

Quando un comando TPM_SaveContext o TPM2 ContextSave viene inviato con un handle virtuale a una risorsa gestita dal servizio TBS, tbS esegue il comando appropriato nella risorsa fisica e restituisce il risultato al chiamante se la risorsa è fisicamente presente nel TPM. Se la risorsa non è fisicamente presente nel TPM, il pre-elaborazione del comando TPM_SaveContext o TPM2_ContextSave causa il ricaricamento della risorsa, a quel punto il contesto verrà salvato e restituito al chiamante. Se la risorsa salvata è di un tipo che viene normalmente scaricato automaticamente dal TPM dopo il salvataggio, tbS invalida la risorsa virtuale al completamento di questo comando. Quando un comando TPM_LoadContext o TPM2_ContextLoad viene inviato a TBS, tbS esegue immediatamente il comando. Se il comando viene completato correttamente, tbS virtualizza l'handle di risorse e passa il flusso di byte TPM risultante al chiamante. Quando un comando TPM_FlushSpecific o TPM2_FlushContext viene inviato con un handle virtuale a una risorsa gestita dal servizio TBS, il TBS esegue un comando TPM_FlushSpecific o TPM2_FlushContext per rimuovere la risorsa dal TPM se è fisicamente presente. In questo caso, TBS invalida la risorsa virtuale e restituisce il risultato del comando di scaricamento al chiamante. Se la risorsa non è fisicamente presente nel TPM, il pre-elaborazione del comando TPM_FlushSpecific o TPM2_FlushContext caricherà la risorsa corrispondente all'handle virtuale, ma verrà scaricata quando il comando viene effettivamente elaborato. TBS non supporta il bit di TPM_KeyControlOwner o la funzionalità keepHandle dell'operazione di TPM_LoadContext, quindi non darà una risorsa la stessa gestione esistente prima del salvataggio del contesto.

Altri comandi

I comandi che non sono menzionati in questa documentazione vengono elaborati sostituendo gli handle delle chiavi virtuali con handle di chiavi fisiche (se necessario) e inviandoli al TPM. Questa operazione viene eseguita dopo aver eseguito le operazioni appropriate per assicurarsi che le risorse usate siano fisicamente presenti nel TPM. Non viene eseguita alcuna elaborazione speciale aggiuntiva. TbS non tenta di migliorare la fedeltà della virtualizzazione modificando i dati passati dal TPM come parte di una query TPM_GetCapabilities o TPM2_GetCapability. TbS supporta anche i comandi di presenza fisica TCG. TbS funge da pass-through per i comandi Di presenza fisica; nessuna elaborazione speciale viene eseguita dalla TBS stessa.

Pulizia

Quando un contesto viene chiuso, tutte le risorse fisiche e virtuali associate a esso vengono pulite in modo che non usano più le risorse di sistema.