ID del artículo: 000088045 Tipo de contenido: Información y documentación sobre productos Última revisión: 19/10/2021

¿Cómo se inicializa la memoria del montón durante la creación del enclave?

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Resumen

Proceso para asignar memoria de montón a un enclave de Intel® Software Guard Extensions (Intel® SGX)

Descripción

No se puede determinar cómo se asigna la memoria de montón mayor que la memoria caché de páginas de enclave (EPC) disponible a los enclaves en el momento de la creación.

Resolución

Intel® Software Guard Extensions (Intel® SGX) utiliza las instrucciones del procesador EADD para agregar memoria, incluido el montón, a un enclave. Para AGREGAR una página de montón, debe haber una página gratuita de caché de página de enclave (EPC) disponible. Si ya existe una página gratuita, EADD la utiliza inmediatamente. Si el EPC ya está lleno, se pagina y libera una página actualmente en uso. Esa página ahora gratuita podría usarse para la página del montón. Esta página está en el EPC porque es una página recién liberada. En cualquier caso, no se intercambia ninguna página. Cuando se produce el EADD real, la página ya estará presente en el EPC, sin necesidad de paginación o intercambio.

Siguiendo el código:

  1. Primero, la herramienta de señalización SGX determina el diseño del enclave. Coloca la información de diseño en los metadatos. Aquí es donde se agrega el montón y se establece solo en EADD: manage_metadata#L775
  2. Durante la carga del enclave, el cargador del sistema de tiempo de ejecución (uRTS) que no es de confianza recorre las entradas de diseño y agrega adecuadamente: loader.cpp#L382
  3. Cada página de enclave se agrega llamando al controlador, que llama a EADD: loader.cpp#L311

Productos relacionados

Este artículo se aplica a 1 productos

El contenido de esta página es una combinación de la traducción humana y automática del contenido original en inglés. Este contenido se ofrece únicamente para su comodidad como información general y no debe considerarse completa o precisa. Si hay alguna contradicción entre la versión en inglés de esta página y la traducción, prevalecerá la versión en inglés. Consulte la versión en inglés de esta página.