ARM TrustZone非抢占性与TEE可被抢占的矛盾点技术咨询
问题
为何ARM TrustZone本身是非抢占式的,却存在通过用户空间守护进程运行TEE并使其被抢占的实现方式?
解答
要搞懂这个问题,核心得区分TrustZone的硬件固有特性和TEE软件层的设计妥协:
首先明确TrustZone的“非抢占”是硬件层面的规则:一旦处理器进入Secure World,硬件不会允许Non-Secure侧的代码直接打断它——控制权只能由Secure World主动通过
SMC调用交还给Non-Secure World,这是架构的硬限制。所谓“TEE被抢占”是软件层面模拟出来的效果,并非硬件强制抢占:
- 守护进程本质是Non-Secure OS和TEE之间的调度代理。当OS调度到这个守护进程时,它通过
SMC触发进入TEE。 - TEE内部会预先设置定时器,或者监听Non-Secure侧的调度时钟中断(这类中断在Secure World可见,由TEE自行处理)。当定时器到期或中断触发时,TEE会主动执行
SMC返回Non-Secure OS,把控制权交还给守护进程。 - 此时Non-Secure OS的调度器就可以切换到其他进程,从外部看就像TEE被“抢占”了,但本质是TEE主动配合,在约定的时机放弃了控制权。
- 守护进程本质是Non-Secure OS和TEE之间的调度代理。当OS调度到这个守护进程时,它通过
这种设计的目的是平衡安全与系统性能:
- PSCI这类Secure调用之所以是阻塞式的,是因为它们都是简短的硬件管理操作,不需要长期占用Secure World;但TEE需要处理复杂的用户安全请求,如果一直独占处理器,会严重影响Non-Secure OS的多任务调度。
- 通过让TEE主动配合OS的调度节奏,既遵守了TrustZone的硬件非抢占规则,又能让TEE的执行融入整个系统的调度体系,保证系统整体的响应性。
内容的提问来源于stack exchange,提问作者maor36a
相关产品推荐
相关产品推荐

