문서 ID: 000088045 콘텐츠 형태: 제품 정보 및 문서 마지막 검토일: 2021-10-19

엔클레이브 생성 중에 힙 메모리는 어떻게 초기화되나요?

BUILT IN - ARTICLE INTRO SECOND COMPONENT
요약

인텔® Software Guard Extensions(인텔® SGX) 엔클레이브에 힙 메모리를 할당하는 프로세스

설명

생성 시 사용 가능한 EPC(Enclave Page Cache) 메모리보다 큰 힙 메모리가 엔클레이브에 할당되는 방법을 판별할 수 없습니다.

해결 방법

인텔® Software Guard Extensions(인텔® SGX)는 EADD 프로세서 명령을 사용하여 엔클레이브에 힙을 포함한 메모리를 추가합니다. 힙 페이지를 EADD하려면 사용 가능한 무료 EPC(Enclave Page Cache) 페이지가 있어야 합니다. 무료 페이지가 이미 있는 경우 EADD에서 즉시 사용합니다. EPC가 이미 꽉 찬 경우 현재 사용 중인 페이지가 페이징 아웃되고 해제됩니다. 이제 무료 페이지를 힙 페이지에 사용할 수 있습니다. 이 페이지는 새로 해제된 페이지이므로 EPC에 있습니다. 두 경우 모두 페이지가 교체되지 않습니다. 실제 EADD가 발생하면 페이지가 이미 EPC에 있으므로 페이징이나 스와핑이 필요하지 않습니다.

코드를 따릅니다.

  1. 먼저 SGX signtool 이 엔클레이브 레이아웃을 결정합니다. 레이아웃 정보를 메타데이터에 배치합니다. 힙이 추가되고 EADD 전용으로 설정되는 위치는 다음과 같습니다. manage_metadata#L775
  2. 엔클레이브 로드 중에 신뢰할 수 없는 런타임 시스템(uRTS) 로더가 레이아웃 항목을 반복하고 적절하게 loader.cpp#L382를 추가합니다.
  3. 각 엔클레이브 페이지는 EADD: loader.cpp#L311을 호출하는 드라이버를 호출하여 추가됩니다.

관련 제품

이 문서는 다음 항목에 적용됩니다. 1 제품

이 페이지의 콘텐츠는 원본 영어 콘텐츠에 대한 사람 번역 및 컴퓨터 번역의 조합으로 완성되었습니다. 이 콘텐츠는 편의와 일반적인 정보 제공을 위해서만 제공되었으며, 완전하거나 정확한 것으로 간주되어선 안 됩니다. 이 페이지의 영어 버전과 번역 간 모순이 있는 경우, 영어 버전이 우선적으로 적용됩니다. 이 페이지의 영어 버전을 확인하십시오.