时间片轮转调度和实时抢占调度的理解

ucos2只支持实时抢占,据说ucos3同时支持时间片轮询调度。

在没有使用操作系统的时候:

a,一般是把任务放在while循环里面循环执行,通过加一个延时函数来控制时间间隔

b,高级一点就是为每个任务规定一个执行周期,在while循环里面检查执行周期是否已经到来,如果到了就执行,如果没到就继续等待,好处是编程简单,每个任务基本可以保证按照规定的周期执行,坏处是一旦某个任务执行超时了,后面的任务执行也要跟着推迟到下一个周期。

在使用了操作系统以后:

c,ucos这种抢占式的调度,他允许高优先级的任务随时抢占低优先级的任务,这样就可以使得关键的代码可以按时得到执行,带来的问题就是需要引入操作系统,资源的消耗调试的难度都有所增加

d,时间片轮转调度,这种是为每个任务分配一个时间片,容易混淆b方法,如果时间片没用完任务就执行完了,那就立即切换到下一个任务,不用等待,如果时间片用完了任务还没执行完,那就会被就绪表中最高优先级的任务抢占,自己挂起到末端去排队等下一次调度。这种方式无法保障系统的实时性,因为任务的执行周期不一定,高优先级的任务无法随时抢占低优先级任务,需要等低优先级任务时间片用完了才能抢占。

你可能感兴趣的:(时间片轮转调度和实时抢占调度的理解)