TrustZone:从两个世界安排流程

时间:2014-10-20 15:31:28

标签: scheduling trust-zone

如果我在启用TZ的设备上有一个核心CPU,并且有两个进程正在运行:一个在安全环境中,一个在非安全环境中,是否可以让调度程序在预先管理它们强制方式,以便为每个进程分配一定的时间片?

2 个答案:

答案 0 :(得分:2)

实际上,这是有可能的,但只是在一个方向。在完全独立的执行环境中执行时,您无法使用单个调度程序来处理这两个单独的任务。你可以做的是使用FIQ为你做时间切片。如果将FIQ设置为SW异常,则可以将其设置为定期触发,例如,每50ms触发一次。发生这种情况时,执行将强制进入SW,您的进程可以在那里运行。然后,您可以让过程运行指定的时间段,然后将控制权交还给NW,在离开之前重置FIQ计时器。然后NW可以运行直到FIQ再次触发。

如上所述,这不是处理SW和NW过程的单个调度程序,但它是一种可能的方法来完成您尝试执行的操作。你仍然需要考虑其他的中断,所以记住这一点。

答案 1 :(得分:0)

TZ通常在单线程中执行,因此每当有来自非安全端的请求运行某个安全应用程序时。它将通过监控模式,然后上下文切换将从非安全世界发生到安全世界,然后安全应用程序将在一个线程中的安全世界中开始执行。因此,核心将在安全的世界中运行,但如果来自no sec世界的任何中断,那么执行将停止并且上下文将从安全切换到非安全以处理中断,在处理之后将再次切换到安全世界和这一次安全的世界可以安排到另一个核心。

所以回答你的问题是不可能的。截至目前,实现TZ以单核运行,并且只有一个核可以同时执行。

更为明确的是,安全应用程序是否需要执行某些文件操作(因为TZ没有文件系统,它使用一些非安全端的侦听器来执行该操作,然后再次进行上下文切换)