如果两个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里面完成两个线程的并行运行。
TI中文支持网