思想解读:optee中的多线程处理

文摘   科技   2024-10-28 18:57   陕西  

思考:

1、optee中到底是否支持多线程?
2、您想问的是optee os是否支持多线程?还是optee环境中的TA或应用程序中是否支持多线程?

说明: 这里需要明确一点:你看到的官方文档中也不一定对。

我们通常所说的多线程,一般是这样产生的:

1、在kernel中,调用了kthead_create之类的函数,产线一个kernel线程
2、在某一个应用程序中,调用
pthread_create之类的函数,产线了一个user线程

在这么的一个大系统通,也许只有8个core,但确运行着数十个或数百个线程,他们以task_struct结构体的形式表述。然后再有内核的调度程序来选择执行,从而达到了一个硬件分时复用的效果。

那么在optee中是怎样的呢?

在optee中没有创建kernel线程的接口、在TA和应用程序中也没有创建user线程的接口,那么就意味着没有多线程了吗?燃鹅,却有着另外的一种形式,也是可以产线多线程,总结如下:

  • optee中有一个threads[CFG_NUM_THREADS]变量,用于存放没有处理完成的线程,变量类型为thread_ctx结构体(类似于linux kernel中的task_struct),暂且认为它也表示一个task吧
  • 当一个用户程序正在执行时,由于RPC或中断返回到REE了,在返回之前会将该线程的信息保存到threads数组中, 这时就相当于创建了一个线程
  • 当cpu从REE调用到TEE时,TEE会先检查是否还有未处理的线程,如果有则执行。 这就相当于线程的调度了

总结:

1、optee os 没有内核线程
2、TA 不支持多线程
3、一个应用程序看做一个任务( 这句话非常正确!!!),optee支持多任务,optee内部没有调度程序,所以多个任务也是按照顺序依次调用。对于一个cpu来说,它只有完全执行完了一个,它才会再调用另外一个。注意:optee os是支持多核的,所以会出现多个任务被多个核调用的point,所以需要考虑并发。


Arm精选
ARMv8/ARMv9架构、SOC架构、Trustzone/TEE安全、终端安全、SOC安全、ARM安全、ATF、OPTEE等
 最新文章