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线程初始化后进入休眠,直到任务到来。

SGX TCS构建及Switchless模式初始化【源码分析】

 

相关文章:

  • 2022-01-08
  • 2022-12-23
  • 2022-12-23
  • 2021-06-19
  • 2022-12-23
  • 2022-12-23
  • 2021-09-14
  • 2022-01-24
猜你喜欢
  • 2021-10-19
  • 2022-12-23
  • 2021-07-17
  • 2021-11-12
  • 2021-10-30
  • 2021-09-23
  • 2021-07-30
相关资源
相似解决方案