記事 ID: 000088045 コンテンツタイプ: 製品情報 & ドキュメント 最終改訂日: 2021/10/19

エンクレーブの作成時にヒープメモリはどのように初期化されますか?

BUILT IN - ARTICLE INTRO SECOND COMPONENT
概要

ヒープ・メモリーをインテル® Software Guard Extensions (インテル® SGX) エンクレーブに割り当てるプロセス

詳細

使用可能なエンクレーブ・ページ・キャッシュ (EPC) メモリーよりも大きいヒープ・メモリーが、作成時にどのようにエンクレーブに割り当てられるかを判別できません。

解決方法

インテル® Software Guard Extensions (インテル® SGX) は EADD プロセッサー命令を使用して、ヒープを含むメモリーをエンクレーブに追加します。ヒープ ページを EADD するには、使用可能な空きエンクレーブ ページ キャッシュ (EPC) ページが必要です。空きページが既に存在する場合は、EAADD によってすぐに使用されます。EPCがすでにいっぱいの場合、現在使用中のページはページアウトされ、解放されます。その空きページはヒープページに使用できます。このページは新しく解放されたページであるため、EPC 内にあります。どちらの場合も、ページはスワップインされません。実際のEADDが発生すると、ページはすでにEPCに存在しており、ページングやスワッピングは必要ありません。

コードに従う:

  1. まず、SGX サインツール がエンクレーブのレイアウトを決定します。レイアウト情報がメタデータに配置されます。ヒープが追加され、EADのみに設定されている場所は次のとおりです: manage_metadata#L775
  2. エンクレーブの読み込み中に、信頼されていないランタイム システム (uRTS) ローダーがレイアウト エントリをループし、適切に追加します: loader.cpp#L382
  3. 各エンクレーブ ページは、EADD を呼び出すドライバーを呼び出すことによって追加されます: loader.cpp#L311

関連製品

本記事の適用対象: 1 製品

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。