us/os-ii中有关任务调度的问题

时间:2022-12-14 19:51:27
在us/os-II中,如果我创建了一个任务task1(优先级0),然后我在task1中又创建两个任务task2(优先级1)和task3(优先级2),然后,task1进入一个无限循环.



那么请问,task2和task3在创建的时候,有没有运行呢?仅仅是创建没有运行么?

8 个解决方案

#1


我也是初学

迷惑
task1和task2 task3竞争一个资源么?

#2


楼上的,求人不如求己.我经过一个下午的试验,终于完全彻底搞清楚了任务的调度,
你要是有疑问的话,加我的qq15172470.或者msn:sirlipeng@msn.com

我很乐意给你解答

#3


ucos可以看看代码了解实现

#4


是这样的,其实大部分时间,cpu运行的是Idle,你的Task应该占用很少的CPU资源。
你的Task里面一旦不需要再占用cpu,你就应该释放资源,调用OSXxxPend或者OSTimeDly等释放CPU
也就是说你的无限循环内部必须释放CPU(调用系统函数OSXxxPend或者OSTimeDly等)不然优先级低的Task永远无法运行,记着一旦你的Task不需要CPU应立即释放,当然满足一定的条件(超时,事件被激活等等)Task用会继续运行。

#5


其实可以自己看代码,就看任务调度部分就会明白了

#6


在us/os-II中,如果我创建了一个任务task1(优先级0),然后我在task1中又创建两个任务task2(优先级1)和task3(优先级2),然后,task1进入一个无限循环.
那么请问,task2和task3在创建的时候,有没有运行呢?仅仅是创建没有运行么?

任务的创建只是把该任务放到就绪队列里,如果并没有被调度是不会执行的。
us/os-II采用抢占式基于优先级的调度算法,总共有0-63个优先级,数值越小
优先级越高。
因为你的task1的优先级是0 ,高于task2,task3.
所以如果task1不把自己挂起(使自己挂起的方法有:延迟1段时间,直接把自己挂起,等待某种资源)
task1是一直占用cpu的(即使有中断发生,中断返回后仍然继续执行task1).

#7


楼上说得有理,其实任务创建时,只是初始化了它的任务栈以及其它一些相关参数,然后把它放进任务就绪队列,但它并没有得到cpu,除非其优先级最高。这里task2,task3优先级低于task1,那么如果task1中如果没有使自己挂起,那么任务2和任务3将永远得不到运行。

#8


关键看“无限循环”里面干了些什么,呵呵~~

#1


我也是初学

迷惑
task1和task2 task3竞争一个资源么?

#2


楼上的,求人不如求己.我经过一个下午的试验,终于完全彻底搞清楚了任务的调度,
你要是有疑问的话,加我的qq15172470.或者msn:sirlipeng@msn.com

我很乐意给你解答

#3


ucos可以看看代码了解实现

#4


是这样的,其实大部分时间,cpu运行的是Idle,你的Task应该占用很少的CPU资源。
你的Task里面一旦不需要再占用cpu,你就应该释放资源,调用OSXxxPend或者OSTimeDly等释放CPU
也就是说你的无限循环内部必须释放CPU(调用系统函数OSXxxPend或者OSTimeDly等)不然优先级低的Task永远无法运行,记着一旦你的Task不需要CPU应立即释放,当然满足一定的条件(超时,事件被激活等等)Task用会继续运行。

#5


其实可以自己看代码,就看任务调度部分就会明白了

#6


在us/os-II中,如果我创建了一个任务task1(优先级0),然后我在task1中又创建两个任务task2(优先级1)和task3(优先级2),然后,task1进入一个无限循环.
那么请问,task2和task3在创建的时候,有没有运行呢?仅仅是创建没有运行么?

任务的创建只是把该任务放到就绪队列里,如果并没有被调度是不会执行的。
us/os-II采用抢占式基于优先级的调度算法,总共有0-63个优先级,数值越小
优先级越高。
因为你的task1的优先级是0 ,高于task2,task3.
所以如果task1不把自己挂起(使自己挂起的方法有:延迟1段时间,直接把自己挂起,等待某种资源)
task1是一直占用cpu的(即使有中断发生,中断返回后仍然继续执行task1).

#7


楼上说得有理,其实任务创建时,只是初始化了它的任务栈以及其它一些相关参数,然后把它放进任务就绪队列,但它并没有得到cpu,除非其优先级最高。这里task2,task3优先级低于task1,那么如果task1中如果没有使自己挂起,那么任务2和任务3将永远得不到运行。

#8


关键看“无限循环”里面干了些什么,呵呵~~