TI中文支持网
TI专业的中文技术问题搜集分享网站

SYSBIOS 的 各个hwi,swi,task是按照优先级顺序执行的吗

如果两个task的优先级一高一低,执行的时候是先等优先级高的task执行完毕,然后执行优先级低的,如果操作系统没有让各个task并行执行(时间轮片)的话,为什么不把各个task直接顺序写在一起呢?

Allen35065:

在DSP里,hwi没有优先级的顺序,swi和task是根据优先级执行的,task可以被高优先级抢占。

littleWhite:

回复 Allen35065:

各个task之间如何并行执行

Allen35065:

回复 littleWhite:

分时占用,低优先级会被高优先级抢占,等高优先级执行完以后再回到低优先级

littleWhite:

回复 Allen35065:

谢谢,我可以这样理解吗:假如有多个任务同时执行,则按照时间轮片的方法轮流分配cpu时间来“并行”执行,当一个任务正在其时间片内执行的时候,如果有一个较高优先级的任务发生,则直接跳转到该任务,然后继续按照时间轮片的方法,在各个任务之间切换。

Allen35065:

回复 littleWhite:

DSP里不执行时间片轮询的操作,比如有两个任务A,B,如果A,B同优先级,那么调度器会先执行完先被调度的任务如A,等A执行完以后或者主动睡眠后,才执行B,B不会抢占A,而且不会按时间片进行轮询;如果B比A优先级高且被唤醒,那么B立刻抢占A执行,等B执行完或休眠以后,A才继续执行。

这种立刻抢占的方式主要是为了保证操作系统的实时性。

littleWhite:

回复 Allen35065:

原来是这样,那如果我想让两个线程同时运行的话(同一个core上两个thread或者两个core),是不是需要使用openmp,在同一个task里面完成两个线程的并行运行。

赞(0)
未经允许不得转载:TI中文支持网 » SYSBIOS 的 各个hwi,swi,task是按照优先级顺序执行的吗
分享到: 更多 (0)