SGX TCS构建及Switchless初始化简介

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

如下是我的分析。

SGX TCS

SGX环境下,不可信线程进入Enclave需要上下文切换,切换之前需要申请到一个TCS(TCS是一个用于代表和管理Enclave线程的数据结构)。只有进入了Enclave的线程可以执行ECALL代码。根据ECALL的真正执行者是谁,可以将ECALL执行模式分为Switch模式(线程切换上下文进入Enclave执行代码)和Switchless模式(不可信线程将ECALL交由长期驻留Enclave的线程代理执行)。

SGX TCS构建

如下图左侧“TCS构建阶段”,Enclave初始化时会创建一定数量的TCS。值得一提,SGX TCS与ECALL模式无关。TCS是不可信线程进入Enclave的前提,两种ECALL模式下都有线程真正进入Enclave。(Switchless模式下,作为代理人的TWorker线程会进入Enclave)。

ECALL Switchless模式初始化

“TCS构建流程图”右侧“Switchless模式初始化阶段”,描述了Enclave初始化末期,如果开启SGX Switchless 模式,那么主线程会创建若干子线程(TWorker线程前身),子线程们申请TCS后进入Enclave变成了TWorker线程,此时TWorker线程完成一些初始化工作后进入休眠,直到任务到来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值