ECALL的Swtich和Switchless简介

Linux SGX仓库:https://github.com/intel/linux-sgx

如下是我的分析。

根据ECALL的真正执行者是谁,可以将ECALL执行模式分为Switch模式(线程切换上下文进入Enclave执行代码)和Switchless模式(不可信线程将ECALL交由长期驻留Enclave的线程代理执行)。

ECALL Switch模式调用

如下图所示,不可信线程切换上下文进入Enclave完成ECALL代码的真正执行。

当从不可信世界调用Enclave函数时,会将Enclave函数从虚拟地址转换为物理地址,同时需要提交一个PAGEINFO,说明申请调用Enclave函数对应EP的细节,EPCM会检查这个物理地址对应的虚拟地址是否匹配,检查是否是对应的EnclaveID(细节上是SECS是否匹配),读写执行权限是否匹配,页类型是否匹配,匹配才允许开始执行Enclave函数。

ECALL Switchless模式调用

如下图所示,不可信线程会将Ecall任务放到Ecall任务池中,发信号通知TWorker线程提取任务并执行。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值