Proses untuk mengalokasikan memori tumpukan ke enklave Intel® Software Guard Extensions (Intel® SGX)
Tidak dapat menentukan bagaimana memori heap yang lebih besar dari memori Enclave Page Cache (EPC) yang tersedia dialokasikan ke enclave saat pembuatan.
Intel® Software Guard Extensions (Intel® SGX) menggunakan instruksi prosesor EADD untuk menambahkan memori, termasuk tumpukan, ke enklave. Untuk EADD halaman heap, harus ada halaman Enclave Page Cache (EPC) gratis yang tersedia. Jika halaman gratis sudah ada, itu segera digunakan oleh EADD. Jika EPC sudah penuh, halaman yang sedang digunakan akan dihapus dan dibebaskan. Halaman yang sekarang gratis dapat digunakan untuk halaman tumpukan. Halaman ini ada di EPC karena ini adalah halaman yang baru dibebaskan. Dalam kedua kasus, tidak ada halaman yang ditukar. Ketika EADD yang sebenarnya terjadi, halaman sudah akan ada di EPC — tidak diperlukan paging atau swapping.
Mengikuti kode:
- Pertama, signtool SGX menentukan tata letak enclave. Ini menempatkan informasi tata letak dalam metadata. Di sinilah heap ditambahkan dan diatur ke EADD saja: manage_metadata#L775
- Selama pemuatan enklave, loader Run-time System (uRTS) yang tidak tepercaya mengulang entri tata letak dan menambahkan dengan tepat: loader.cpp#L382
- Setiap halaman enclave ditambahkan dengan memanggil driver, yang memanggil EADD: loader.cpp#L311