刚刚看了网络上一篇文章,他说,现在多任务OS在国内的工程师界形成了一阵狂风!我没有调查,不敢苟同。但本月初,与本校一位老教授谈到嵌入式OS,他好像也是对于Linux情有独钟。 现在的RTOS从任务管理方式可分两类,一种是抢占式的,一种是时分式的,前者多用于实时性较高的应用,后者用于实时性不高而事务较复杂的大型OS,当然现在许多OS都是两者兼有,还有一些就是协作式多任务OS。 像现在的许多小RTOS都是前者,要求每个任务的优先级不同,当某个高于现任务优先级的任务就绪就会产生新的任务调度,这种OS提升了系统的实时性,但也带来了编程者的一些麻烦,比如有时有些任务本身就是平等的,我们希望能各个任务各执行一定时间再切换就会感到相当为难,每个任务除非自已放弃或有更高优先级的任务就绪,否则是不会产生任务调度的,当任务较多时,低优先级任务的协调是很麻烦的。 现在较好的VXWORKS、NECLUE、μCOS-III等多任务OS则是上面两者的结合,既可由任务的优先级产生调度,也可由时间片到产生新的任务调度。 实际在选用多任务OS前,建议先看看项目是不是真需要用OS!如果任务可折分性较差,折分后的各任务间有N多的同步问题和复用资源问题,那还是放弃用多任务OS,或将这些功能都放在一个任务里,多任务未必就好! 如果你的任务独立性强,互相间的依存关系不强,那么采用分时OS,这样做会使你的代码编写真正体会到多任务的优点;如果任务相互有一定关联度,你还要对OS的内存管理机制、任务间的通信机制、同步机制等做较详细的调查后再先定用什么OS。 他认为目前国内的研发厂商和公司形成了一个怪圈,就是人人研发LINX的嵌入式应用,好象LINX是块不要钱的肥肉就会很好用一样。LINX本身是为桌上系统研发的多进程多线程OS,2.0的代码量有几百万行,其中的大多数是嵌入式应用不需要的,而且里面本没有抢占式多任务核,如果你的应用对实时性较高,那你就要自已写这个抢占式核,当然是可以写出来的,但你要在里面花上很多时间才能写出一个没经过实际应用的不可靠的RTOS,绝不是明智之举。一个成功的嵌入式RTOS可能只需要5个一般的工程师就可以写出来,但要50个相当历害的工程师来调试和DEBUG,还要500个工程师试用。现在选LINX一方面是商业的抄作,一方面是老板们的惜小钱而失大利,更多的是工程师们希望能做一些有挑战性的工作。但这结果有多少是如人愿呢?事实上,大多情况是项目流产,工程师们又跑到另一家公司接着玩,这样的恶性循环何时才能结束! |
|