ID do artigo: 000088045 Tipo de conteúdo: Documentação e informações do produto Última revisão: 19/10/2021

Como a memória heap é inicializada durante a criação de enclaves?

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Resumo

Processo para alocar memória heap a um enclave de Intel® Software Guard Extensions (Intel® SGX)

Descrição

Não é possível determinar como a memória armazenada que é maior do que a memória de cache de página de enclave (EPC) disponível é alocada a enclaves na criação.

Resolução

Intel® Software Guard Extensions (Intel® SGX) usa a instrução do processador EADD para adicionar memória, incluindo heap, a um enclave. Para uma página heap do EADD, deve haver uma página gratuita de Cache de Página de Enclave (EPC) disponível. Se uma página gratuita já existe, ela é imediatamente usada pelo EADD. Se a EPC já estiver cheia, a página atualmente em uso será página final e liberada. Essa página agora gratuita pode ser usada para a página heap. Esta página está na EPC porque é uma página recém-liberada. Em ambos os casos, nenhuma página é trocada. Quando a EADD real ocorrer, a página já estará presente no EPC — sem necessidade de paginação ou troca.

Seguindo o código:

  1. Primeiro, o signtool SGX determina o layout do enclave. Ele coloca as informações de layout nos metadados. Aqui é onde o monte é adicionado e definido apenas para EADD: manage_metadata#L775
  2. Durante o carregamento do enclave, o carregador de sistema de tempo de execução (uRTS) não confiável faz loops através das entradas de layout e acrescenta adequadamente: carregador.cpp#L382
  3. Cada página do enclave é adicionada chamando o driver, que chama de EADD: loader.cpp#L311

Produtos relacionados

Este artigo aplica-se a 1 produtos

O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês prevalecerá e será a determinante. Exibir a versão em inglês desta página.