명령 예약
명령 예약
명령은 언제든지 여러 컨텍스트에서 TBS에 제출할 수 있습니다. 그러나 물리적 TPM은 한 번에 하나의 명령만 처리할 수 있으며 일부 명령은 상당한 기간 동안 실행할 수 있습니다. 여러 명령이 보류 중인 경우 TBS는 TPM에 보낼 명령을 결정합니다. 명령이 제출되면 각 명령에는 연결된 우선 순위가 있습니다. TBS는 이러한 우선 순위를 사용하여 TPM이 무료일 때마다 제출할 보류 중인 명령을 결정합니다. 우선 순위의 네 가지 수준은 낮음, 보통, 높음 및 시스템입니다. 애플리케이션은 낮은 우선 순위, 정상 또는 높은 우선 순위를 사용해야 합니다. 우선 순위가 높은 명령은 일반적으로 우선 순위가 낮은 명령 전에 실행되지만, TBS 명령 스케줄러에는 결국 상당한 기간 동안 차단된 명령에 매우 높은 우선 순위를 부여하는 에이징 정책이 있습니다.
컨텍스트 관리
TBS가 관리하는 리소스에 대한 가상 핸들을 사용하여 TPM_SaveContext 또는 TPM2 ContextSave 명령을 제출하면 TBS는 실제 리소스에서 적절한 명령을 실행하고 리소스가 TPM에 물리적으로 있는 경우 호출자에게 결과를 반환합니다. 리소스가 TPM에 물리적으로 없는 경우 TPM_SaveContext 또는 TPM2_ContextSave 명령의 전처리로 인해 리소스가 다시 로드되고, 이때 컨텍스트가 저장되고 호출자에게 반환됩니다. 저장되는 리소스가 저장 후 일반적으로 TPM에서 자동으로 플러시되는 형식인 경우 TBS는 이 명령이 완료되면 가상 리소스를 무효화합니다. TPM_LoadContext 또는 TPM2_ContextLoad 명령이 TBS에 제출되면 TBS는 명령을 즉시 실행합니다. 명령이 성공적으로 완료되면 TBS는 리소스 핸들을 가상화하고 결과 TPM 바이트 스트림을 호출자에게 전달합니다. TBS가 관리하는 리소스에 대한 가상 핸들을 사용하여 TPM_FlushSpecific 또는 TPM2_FlushContext 명령을 제출하면 TBS는 TPM_FlushSpecific 또는 TPM2_FlushContext 명령을 실행하여 실제로 있는 경우 TPM에서 리소스를 제거합니다. 이 경우 TBS는 가상 리소스를 무효화하고 플러시 명령의 결과를 호출자에게 반환합니다. 리소스가 TPM에 실제로 없는 경우 TPM_FlushSpecific 또는 TPM2_FlushContext 명령의 전처리는 가상 핸들에 해당하는 리소스를 로드하지만 명령이 실제로 처리될 때 플러시됩니다. TBS는 TPM_LoadContext 작업의 TPM_KeyControlOwner 비트 또는 keepHandle 기능을 지원하지 않으므로 컨텍스트를 저장하기 전에 리소스에 동일한 핸들을 제공하지 않습니다.
기타 명령
이 설명서에 언급되지 않은 명령은 가상 키 핸들을 물리적 키 핸들(필요한 경우)으로 바꾸고 TPM에 제출하여 처리됩니다. 이는 사용 중인 리소스가 TPM에 물리적으로 존재하는지 확인하기 위해 적절한 작업을 수행한 후에 수행됩니다. 추가 특수 처리는 수행되지 않습니다. TBS는 TPM_GetCapabilities 또는 TPM2_GetCapability 쿼리의 일부로 TPM에서 다시 전달된 데이터를 수정하여 가상화의 충실도를 개선하려고 시도하지 않습니다. TBS는 TCG 물리적 프레즌스 명령도 지원합니다. TBS는 물리적 프레즌스 명령에 대한 통과 역할을 합니다. 특수 처리는 TBS 자체에서 수행되지 않습니다.
정리
컨텍스트가 종료되면 연결된 모든 물리적 및 가상 리소스가 정리되므로 더 이상 시스템 리소스를 사용하지 않습니다.