ECALL的Swtich和Switchless简介
Linux SGX倉庫:https://github.com/intel/linux-sgx
如下是我的分析。
根據(jù)ECALL的真正執(zhí)行者是誰,可以將ECALL執(zhí)行模式分為Switch模式(線程切換上下文進入Enclave執(zhí)行代碼)和Switchless模式(不可信線程將ECALL交由長期駐留Enclave的線程代理執(zhí)行)。
ECALL Switch模式調(diào)用
如下圖所示,不可信線程切換上下文進入Enclave完成ECALL代碼的真正執(zhí)行。
當(dāng)從不可信世界調(diào)用Enclave函數(shù)時,會將Enclave函數(shù)從虛擬地址轉(zhuǎn)換為物理地址,同時需要提交一個PAGEINFO,說明申請調(diào)用Enclave函數(shù)對應(yīng)EP的細(xì)節(jié),EPCM會檢查這個物理地址對應(yīng)的虛擬地址是否匹配,檢查是否是對應(yīng)的EnclaveID(細(xì)節(jié)上是SECS是否匹配),讀寫執(zhí)行權(quán)限是否匹配,頁類型是否匹配,匹配才允許開始執(zhí)行Enclave函數(shù)。
ECALL Switchless模式調(diào)用
如下圖所示,不可信線程會將Ecall任務(wù)放到Ecall任務(wù)池中,發(fā)信號通知TWorker線程提取任務(wù)并執(zhí)行。
?
總結(jié)
以上是生活随笔為你收集整理的ECALL的Swtich和Switchless简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jquery的模板字符串循环内容时绑定o
- 下一篇: 【电力电子】【2014.02】多相多电平