不懂OS就乱说话会误导别人的!(附农民讲习所回)
详细内容
名称:不懂OS就乱说话会误导别人的!(附农民讲习所回)
所长说的几条。..差了。
1.就说多任务之间的同步,正是有了OS才变的非常简单。而任务之间的接口通过信号量或邮箱传递,也同样非常容易和灵活。
2.关于时间片的问题,对于嵌入式OS基本都采用占先式,根本就没有时间片。
3.至于任务切换消耗的时间,实际上无论是前/后台系统,还是你们发明的所谓"多任务",程序在运行过程中,CPU的空转都是不可避免的,无论你用不用Delay()函数。既便你不用Delay()函数,程序很多时候也是在一个大的循环里空转。如果没有OS,你的程序实质上就是一个循环查询,也就是查询时间或查询状态。而恰恰是OS解决了这种循环查询如何使CPU利用率最大化的问题。
至于定时器,不用说了,那个系统都需要延时,都是少不了的。
4.更不用说了,多占资源是为了提高效率的。
农民讲习所发表于 2004-7-19 22:47侃单片机←返回版面
1.信号量或邮箱传递,就是采用同步控制的措施,因为前面简单所以这里复杂,每个任务之间的逻辑因为信号量的参加而变得复杂,这里俺强调的是逻辑。和俺使用的方法相比较,在大型的程序结构中,仅仅采用消息驱动结构就能满足设计的要求,所以不论从编程简单,还是效率高,还是模块化方面,都比信号量或邮箱传递好。
2.对于占先式的OS,它的优先级判断和控制,是消耗资源的。MCU设计中的特点,就是不知道什么时候产生大量突发事件,加入过多的控制,会降低反应效果。所以,不能简单的认为MCU是在空闲中。
3.在OS中,确实还是可以包含delay()函数,但该函数确实运行,本身也说明在消耗MCU的资源,即使它的优先程度最低。这样,MCU的效率表面上和不用该函数一样高,实际上还是要降低。(MCU不可能一进delay()就退出,是俺的依据)
4.大家认识同。不说了。
在任务多的时候,用中断方式来调度,是以牺牲实时性来保证的。俺的方法,在循环中控制(如果说这是控制方式或中心的话),所以能最大限度保证实时响应。
* -本贴最后修改时间: 2004-7-19 22:51:14修改者:农民讲习所
* -修改原因: +
