Quy trình phân bổ bộ nhớ heap cho một vùng Intel® Software Guard Extensions (Intel® SGX)
Không thể xác định cách bộ nhớ heap lớn hơn bộ nhớ đệm ẩn trang (EPC) có sẵn được phân bổ cho các vùng tách rời khi tạo.
Intel® Software Guard Extensions (Intel® SGX) sử dụng lệnh bộ xử lý EADD để thêm bộ nhớ, bao gồm heap, vào vùng tách rời. Để EADD một trang heap, phải có sẵn trang Enclave Page Cache (EPC) miễn phí. Nếu một trang miễn phí đã tồn tại, nó sẽ được EADD sử dụng ngay lập tức. Nếu EPC đã đầy, một trang hiện đang sử dụng sẽ được phân trang và giải phóng. Đó là bây giờ trang miễn phí có thể được sử dụng cho trang heap. Trang này nằm trong EPC vì đây là trang mới được giải phóng. Trong cả hai trường hợp, không có trang nào được hoán đổi. Khi EADD thực tế xảy ra, trang sẽ có mặt trong EPC — không cần phân trang hoặc hoán đổi.
Theo mã:
- Đầu tiên, signtool SGX xác định bố cục vùng tách rời. Nó đặt thông tin bố cục trong siêu dữ liệu. Đây là nơi heap được thêm vào và đặt thành chỉ EADD: manage_metadata # L775
- Trong quá trình tải vùng kín, bộ nạp Hệ thống thời gian chạy không đáng tin cậy (uRTS) lặp qua các mục bố cục và thêm một cách thích hợp: loader.cpp#L382
- Mỗi trang tách rời được thêm vào bằng cách gọi trình điều khiển, gọi EADD: loader.cpp#L311