共2条
1/1 1 跳转至页
实时多任务操作系统之我见
现在多任务操作系统在国内的工程师界形成了一阵狂风!做为一名在这方面有几年工作经验的小资人员,对项目要不要用多任务操作系统用什么操作系统有我自已的一些看法,现在拿出来和大家谈论一下。
现在的实时多任务操作系统从工作方式来说可以分两类,一种是抢占式的,一种是时分式的,前者多用于实时性较高的应用,后者用于实时性不高可用性较高的大型操作系统,当然现在许多操作系统都是两者的综合品,还有一些就是协作式多任务操作系统。这两者分别有什么好处和坏处呢?
像现在的许多小实时多任务操作系统都是前者,要求每个任务的优先级不同,当某个高于现任务优先级的任务就绪就一定会产生新的任务调度,这种操作系统最大的提升了系统的实时性,但是也带来了编程者的一些麻烦,比如有些时侯有些任务本身就是平等的,我们希望能各个任务各持行一阵时间再切换就会感到相当为难,每个任务除非自已放弃或者有更高优先级的任务就绪,否则是不会产生任务调度的,当软件任务较多时,低优先级任务的协调是很麻烦的。如AMX时分式的多任务操作系统则是采用系统时钟分出一个个的时间片,每个任务声明时分配给任务若干个时间片,一个任务的时间片结束后产生任务调度。这样做能使任务的独立性较好,但是实时性就会相应下降。
现在比较好的VXWORKS、NECLUE等多任务操作系统则是上面两者的结合品,即可由任务的优先级产生调度,也可以由时间片到产生新的任务调度。
工程师在选用多任务操作系统前要先看看自已的项目是不是真需要用操作系统!如果你的任务可折分性较差,折分后的各个任务之间有N多的同步问题和复用资源问题,那么算了,我觉得你还是不要用多任务操作系统,或者将这些功能都放在一个任务里面,不要有事没事就觉得多任务好!多任务是用降低实时性来换取软件开发的独立性,不要被实时多任务操作系统的实时两个字骗了,这个实时只是相对于其它非实时性多任务操作系统来讲的,实时性最高的当然是你自已编写的单任务程序。
如果你的任务的可折分性强,那么就可以用多任务操作系统,如果各个任务的实时性要求不高,独立性较高,互相之间的依存关系不强,那么你可以采用分时式的多任务操作系统,这样做会使你的代码编写真正体会到多任务的优点;反之你就最好要先一个带抢占式核的多任务操作系统。
同时你还要对操作系统的内存管理机制、任务间的通信机制、同步机制等做了比较祥细的调查后再先定用什么操作系统。
目前国内的研发厂商和公司形成了一个怪圈,就是人人研发LINX的嵌入式应用,好象LINX是一块不要钱的肥肉就会很好用一样。LINX本身是为桌上系统研发的多进程多线程操作系统,2.0的代码量有几百万行,其中的大多数是我们嵌入式应用不需要的,而且里面本没有抢占式多任务核,如果你的应用对实时性要求较高那你就要自已写这个抢占式核,当然是可以写出来的,但是你要在里面发上很多时间才能写出一个没经过实际应用的不可靠的实时多任务操作系统。对此我是相当不以为然的!我认为有一两个专门的公司去研究LINX的嵌入式应用就行了,用不着人人皆兵。一个成功的嵌入式实时多任务操作系统只需要5个一般的工程师就可以写出来,但要50个相当历害的工程师来调试和DEBUG,还要500个工程师试用。现在选用LINX一方面是商业的抄作,一方面是老板们的惜小钱而失大利,更多的是工程师们希望能做一些有挑战性的工作。但这结果一般是不理想的,大多性况是项目流产,工程师们又跑到另一家公司接着玩,我狂晕,这样的恶性循环什么时侯才能结束!
这个世界本来就是有分工的,有些人研发操作系统,有些人用操作系统开发产品,不要想从种大米开始!买的那怕是个最烂的操作系统也一定比几个工程师花上一年改出来的面目全非的LINX好N倍,嵌入式LINX的结构和应用迟早会有一个国际化的标准,这个标准不会是由一两个工程师的改写而决定,我们不过是些炮灰而已,如果是专门研发操作系统为生的公司,我给与100倍的支持,如果是想自已改一个操作系统自已用,我觉得那还是算了!还不如买一个操作系统,把你的智慧用在产品的优化和早日面市上吧!可能有人会说人家的操作系统不如自已的好用!我狂晕!别人现成的市品化操作系统你都用不好,那你在LINX这口大井里改出来的操作系统能用吗!哈哈哈!
以上只是我个人意见,是对是错只有时间来说明了,我预见3年内LINX的嵌入式应用会标准化,而且主要是用在PDA上为主。
from 21ic.com
关键词: 实时 多任务 操作系统 之我 任务
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |