文章 ID: 000088045 內容類型: 產品資訊與文件 最近查看日期: 2021 年 10 月 19 日

在創建隔離區期間如何初始化堆記憶體?

BUILT IN - ARTICLE INTRO SECOND COMPONENT
摘要

用於將堆記憶體分配給Intel® Software Guard Extensions (Intel® SGX) 指定位址空間的進程

描述

無法確定大於可用 Enclave Page Cache (EPC) 記憶體的堆記憶體如何在創建時分配給指定位址空間。

解決方法

Intel® Software Guard Extensions (Intel® SGX) 使用 EADD 處理器指令將記憶體(包括堆)添加到指定位址空間。要 EADD 堆頁面,必須有一個可用的可用 Enclave Page Cache (EPC) 頁面。如果免費頁面已存在,EAD 會立即使用它。如果 EPC 已滿,則會分頁並釋放當前正在使用的頁面。現在的空閒頁面可用於堆頁面。此頁面位於 EPC 中,因為它是新釋放的頁面。無論哪種情況,都不會交換任何頁面。實際發生 EADD 時,該頁面將已存在於 EPC 中 — 無需分頁或交換。

代碼如下:

  1. 首先,SGX 標誌工具 確定指定位址空間佈局。它將佈局資訊放在中繼資料中。下面是添加堆並將其設置為僅 EADD 的位置: manage_metadata#L775
  2. 在 enclave 載入期間,不受信任的運行時系統 (uRTS) 載入程式會迴圈流覽佈局條目並相應地添加: loader.cpp#L382
  3. 每個指定位址空間頁面都是通過調用驅動程式來添加的,該驅動程式調用 EADD: loader.cpp#L311

相關產品

本文章適用於 1 產品

顯示全部

這個頁面的內容綜合了英文原始內容的人工翻譯譯文與機器翻譯譯文。本內容是基於一般資訊目的,方便您參考而提供,不應視同完整或準確的內容。如果這個頁面的英文版與譯文之間發生任何牴觸,將受英文版規範及管轄。 查看這個頁面的英文版。