1

如果我在启用 TZ 的设备上有一个单核 CPU,并且有两个进程在运行:一个在安全世界中,一个在非安全世界中,是否可以让调度程序以先发制人的方式管理它们,这样每个进程都被分配了一定的时间片?

4

2 回答 2

3

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

如前所述,这不是一个同时处理 SW 和 NW 进程的调度程序,但它是一种潜在的方式来做你正在尝试做的事情。不过,您仍然需要考虑其他中断,因此请记住这一点。

于 2015-04-02T02:36:35.947 回答
0

TZ 通常在单线程中执行,因此每当有来自非安全端的请求以运行某些安全应用程序时。它将通过监视模式,然后上下文切换将从非安全世界发生到安全世界,然后安全应用程序将在一个线程中开始在安全世界中执行。因此该核心将在这段时间内在安全世界中运行,但如果来自无安全世界的任何中断,则执行将停止并且上下文将从安全切换到非安全以处理中断,处理后它将再次切换到安全世界并且这时候安全世界可以调度到另一个核心。

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

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

于 2014-11-27T13:56:40.807 回答