rtos's schedule algorithm

以下观点都是学习总结,肯定有错,望批评指正,持续更新中...
我们都知道wince实行的是时间轮转的优先级调度.实际上如何给任务分配优先级才是实时系统所研究的。rtos包括任务调度算法,资源访问控制协议,以及校验模型.



  1. RTOS的任务模型(相位,周期,执行时间,相对时限)
    有任务和作业,任务由多个作业组成,让我想起了进程与线程,因为调度是以作业为单位的,而实际操作系统里也是以线程为单位的。而一个作业可以用(启动时间,周期,执行时间,相对时限)来参数化,启动时间书上称为相位,周期为Ti,相对时限一般等于周期即Deadline,实际执行时间可能小于相对时限。在系统里调度时,可用一个调度表来描述,调度表比较形象的描述了算法对作业的调度。
    2004年11月16日9:17:16
    任务的前驱图,有效释放时间和有效时限。如果任务是互相依赖的。有前任的作业的有效释放时间是这个任务给定的释放时间与所有前任有效释放时间的最大值,有效时限是给定时限和所有后继有效时限的最小值.当然这也是不精确的,应该考虑作业的执行时间(如果只有一个处理器,这样也可以,不需更精确)。.这个定义用在EDF调度生成当中,可以暂时忽略作业的优先约束。
  2. 调度算法分三种
    1)定时器驱动的
    2)权重优先级轮转的,例如路由器
    3)优先级驱动的(假设任务是可任意抢占的)
    优先级驱动的分fix-priority驱动和dynamic-priority驱动。fix-priority驱动既任务中所有作业的优先级都是一样的,dynamic-priority是指调度以作业job为单位。说了半天自己也搞不清楚了,总之一般优先级驱动是指任务优先级可变,job-prioriy固定。这与我们实际编程序中的动态提升优先级有什么关系呢?fix-priority 算法有RM(rate-monotonic)和(deadline-monotonic)两种算法。2004年10月14日11:10:05
    2004年10月20日10:19:16
    EDF动态调度的一个最坏情况例子,有M个处理器和M+1个任务,前M个任务有很小的执行时间e,和周期1,第M+1个任务的执行时间为1,时限为e,按EDF调度结果为M+1任务失败。
    2004年10月28日9:33:25
    常用的动态优先级算法有:EDF,LST,还有FIFO,FILO,其中EDF是任务动态作业静态,LST是作业动态.
    2004年11月5日9:23:26
    在单处理器上EDF是最优调度算法,但如果多处理器象上面说的,不是最优。
    2004年11月15日12:21:00
    EDF算法的缺点是过期的高优先级任务还会得到调度,对此的改进是EFDF,可达最早期限优先
    还有最小裕度LST?
    2004年11月2日10:29:56
  3. 优先级反转,当低优先级不可抢占时,导致高优先级阻塞就产生了优先级反转。
    2004年11月10日9:31:44
    优先级失控:有个3个优先级的任务,低优先级首先释放,并使用资源,后被最高优先级抢占(此时最高优先级不使用资源),最高优先级运行一段时间后因为要使用资源而阻塞,此时,调度使最低优先级任务运行,而后被中等优先级抢占,这时最高优先级可能被无限期延迟。解决的方法是采用资源访问控制协议,例如NPCS,不可抢占协议,当低优先级使用资源时不可抢占,或者优先级继承,,这些协议不能消除优先级反转,只能尽量降低优先级反转带来的延迟。
    2004年11月11日9:00:50
    另一种资源访问控制协议是priority-inheritance优先级继承,具体就是当一个低优先级别因为占有了一个资源而阻塞了一个想要LOCK这个资源的高优先级任务时,低优先级的任务提升到高优先级任务的优先级,这可以阻止高优先级被无限期延迟,但还是不能保证把这个延迟降到最少,理论上高优先级任务可能被阻塞min(资源数,低优先级任务数)次。
    2004年12月9日13:27:34
    第三种资源访问控制协议是ceiling priority,其实以上这三种协议都是采用把资源分配的策略改变,限制中/低等优先级对资源的获取,从而保证高优先级不被反转。NPCS是把获得资源的低优先级任务的优先级提升到最高,这样可以使它不可被抢占,但缺点是假如同时存在着没有想访问这个资源的任务,这些任务也必须等待,因为他们的优先级现在相对的低了。他的优点是简单,在低优先级对资源的访问是短暂的情况下是好的调度策略,并且因为不可被抢占,所以不存在死锁。ceiling priority,改进了NPCS,它是用在系统中所有任务对资源的访问都已知道的情况下。在调度时,维护两个值,系统在这一时刻的最高优先级,每中资源的最高优先级..
    2004年11月5日9:27:02
  4. 系统什么时候是可调度的
    按照任务密度模型,总密度小于1一定可调度,大于1有可能不能调度,也有可能可以调度.
    2004年11月17日11:50:48
  5. 非周期和偶发作业的调度aperiodic/sporadic
    模型:
    总体目标是改进这些作业的响应时间(释放->完成时间)
    有:
    1)空闲周期挪用slack stealing algorithm与中断驱动
    后台,只有在没有周期任务时才调度==改进==>中断驱动但可能不安全==改进==>中断驱动,但只有在安全时候才调度(延迟周期任务的执行),是否安全可看任务空闲时间LST?
    2)轮询与带宽保留服务器poller/bandwith-preserving server
    三种带宽保留服务器:
        deferable server,sporadic server,constant utilization/total bandwidth server/weighted queueing server.

posted on 2004-10-14 11:08  embed  阅读(802)  评论(0编辑  收藏  举报

导航