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, a ogni comando è associata una priorità. 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, alti e di sistema. Le applicazioni devono usare priorità bassa, normale o alta. Anche se i comandi con priorità alta 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 che sono stati bloccati per periodi di tempo significativi.

Gestione del contesto

Quando un comando di TPM_SaveContext o TPM2 ContextSave viene inviato con un handle virtuale a una risorsa gestita da TBS, il servizio TBS esegue il comando appropriato sulla risorsa fisica e restituisce il risultato al chiamante se la risorsa è fisicamente presente nel TPM. Se la risorsa non è fisicamente presente nel TPM, la pre-elaborazione del comando TPM_SaveContext o TPM2_ContextSave fa sì che la risorsa venga ricaricata, a quel punto il contesto verrà salvato e restituito al chiamante. Se la risorsa salvata è di un tipo che viene in genere scaricato automaticamente dal TPM dopo il salvataggio, TBS invalida la risorsa virtuale al termine di questo comando. Quando un comando TPM_LoadContext o TPM2_ContextLoad viene inviato a TBS, il TBS esegue immediatamente il comando . Se il comando viene completato correttamente, TBS virtualizza l'handle di risorsa 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 servizio 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 flush al chiamante. Se la risorsa non è fisicamente presente nel TPM, la pre-elaborazione del comando TPM_FlushSpecific o TPM2_FlushContext caricherà la risorsa che corrisponde all'handle virtuale, ma verrà scaricata quando il comando verrà effettivamente elaborato. TBS non supporta il bit TPM_KeyControlOwner o la funzionalità keepHandle dell'operazione di TPM_LoadContext, quindi non darà a una risorsa lo stesso handle che aveva prima del salvataggio del contesto.

Altri comandi

I comandi non menzionati in questa documentazione vengono elaborati sostituendo gli handle di chiave virtuale con handle di chiave fisica (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 indietro dal TPM come parte di una query TPM_GetCapabilities o TPM2_GetCapability. TBS supporta anche i comandi TCG Physical Presence. IL TBS funge da pass-through per i comandi di presenza fisica; non viene eseguita alcuna elaborazione speciale dai TBS stessi.

Pulizia

Quando un contesto viene chiuso, tutte le risorse fisiche e virtuali associate vengono pulite in modo da non utilizzare più le risorse di sistema.