RT-Thread调度算法疑问

35 views
Skip to first unread message

yuanbin zhou

unread,
Feb 13, 2015, 11:14:16 PM2/13/15
to rt-threa...@googlegroups.com, Yifan WU
Hi!
十分感兴趣RTT的调度算法实现,喵过一点代码发现RTT采用了基于静态优先级的抢占式调度算法,优先级可以在创建任务时静态分配,这样实现的好处在于系统有很快的响应时间!
但是一个硬实时的系统并非仅仅要保证很快的响应时间,更重要的是能够保证所有任务在其截至时间内完成!
对于周期任务的处理来说,rtt仍是采用了手工分配优先级的方法,这样带来的问题是:周期性任务集在最优情况下是可以完全被调度的,但是由于优先级分配的不同导致了任务无法分配,请看下面一个例子(T 表示周期,C表示最坏执行时间):



所以学术界,包括一些RTOS(如rtems)都实现了RMS调度算法http://en.wikipedia.org/wiki/Rate-monotonic_scheduling,RMS会根据任务周期大小来决定优先级。RMS算法会评价该系统是否能完全被调度,对于某些实时性要求十分高的场合,通过去除某些任务来保证系统完全可调度(不知道rtems是不是这样实现的???)!
另外这篇文章中也提到说http://www.embedded.com/electronics-blogs/beginner-s-corner/4023927/Introduction-to-Rate-Monotonic-Scheduling,任务的优先级也尽量不要手工来调整!

Leonard

unread,
Feb 26, 2015, 10:23:58 PM2/26/15
to rt-threa...@googlegroups.com
我觉得RTT的调度算法只实现了最基本的功能,其它功能只能用户自己添加测试贡献了

--
You received this message because you are subscribed to the Google Groups "rt-thread用户组" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rt-thread-cnus...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages