打印

裸奔和os其实没啥可争的

[复制链接]
楼主: wangkj
手机看帖
扫描二维码
随时随地手机跟帖
21

任务的状态化,是实现真正的事件驱动的必走之路。

使用特权

评论回复
22
农民讲习所| | 2007-12-7 14:52 | 只看该作者

就是在PC上,MS也不建议多开线程

就是因为“同步协调”这个双刃剑,为什么到了嵌入式OS中就要大开其道?

使用特权

评论回复
23
圆圈| | 2007-12-7 14:56 | 只看该作者

18

“状态,你可以再加一百种没问题,但这是一个模块中的事情。你这是说的N个模块N种状态。
也不存在“该任务最小响应时间比原系统任务最小响应时间都小”,如果说有,早已经属于弱实时处理的层次,这不是OS的思维。”

首先,你不认为这样的增加状态,把代码切割成N块会很好吗?? 而且你到时候怎么把握那些时间,读写文件,读写usb,大数据量处理,协议处理,处理这些内容的时候,你如何把握得去切割他们...

不是什么弱实时,打比方,以前的系统,任务最小响应要求是5微妙,执行时间2微妙,你的系统任务切割肯定要考虑这个时间量的对吗?  最后,系统设计好了。可后来增加了个需求,把某部分以前没用的硬件用起来了,他的要求是响应时间1微妙,执行时间1微妙,那以前你按照5,2切割的任务状态是否就不满足现在的需求了阿? 你是否需要调整代码?  可在实时操作系统里,做这些几乎不需要考虑更改那么多的东西...  

使用特权

评论回复
24
圆圈| | 2007-12-7 14:59 | 只看该作者

22楼

我们的一个产品,线程可以开到四五十个,而且还算不上是个大系统..

使用特权

评论回复
25
xwj| | 2007-12-7 14:59 | 只看该作者

呵呵,感觉圆圈是钻进自己的圆圈里了:-)

使用特权

评论回复
26
gouki_s| | 2007-12-7 15:01 | 只看该作者

to圆圈

呵呵,这种方法不好,但有时是不得已的选择。硬件允许当然用os。
另,由于所长这个结构没啥抢占的,所以任务同步反倒是小问题。

to所长,你咋不强调实时性了?

使用特权

评论回复
27
农民讲习所| | 2007-12-7 15:01 | 只看该作者

缓冲,使用缓冲,这在所有OS、非OS都存在的。

PC上写磁盘、数据库管理。协议处理,全是缓冲。
“以前的系统,任务最小响应要求是5微妙,执行时间2微妙”是MCU强实时处理,是用中断,而且还是最高等级中断。

弱实时一般5MS中断,你只要申请注册,就可以被调用,N个弱实时处理都可以被处理。

使用特权

评论回复
28
农民讲习所| | 2007-12-7 15:02 | 只看该作者

gouki_s你举例说说哪些任务是需要实时处理的?

使用特权

评论回复
29
农民讲习所| | 2007-12-7 15:06 | 只看该作者

俺再找个嵌入式裸奔中使用自制嵌入式数据库的例子

使用特权

评论回复
30
圆圈| | 2007-12-7 15:06 | 只看该作者

|||

我知道会用缓冲,但有些时候是不允许你将系统数据先缓冲再容后处理的~~

26楼,你这样说就对了。我在这里讨论,并不是争论谁的输赢,我只是想说明,有OS和没有OS确实不一样,而且我也分析了没有OS的设计模式特点,也可以认为是弱点,这个设计者自己做产品前需要认真考虑权衡。 没错,有oS会对资源有限定,所以彼此都有优缺点~ 并不是所有东西都是万能的~  os也是有他独有特点的~ 

使用特权

评论回复
31
圆圈| | 2007-12-7 15:08 | 只看该作者

28楼

工控行业 军工产品 医疗器械等等~  其实这样的应用需求的还是很多的~

使用特权

评论回复
32
gouki_s| | 2007-12-7 15:09 | 只看该作者

to所长,我是菜鸟

操作系统有句话,永远不要去假设处理器的速度

使用特权

评论回复
33
xwj| | 2007-12-7 15:11 | 只看该作者

特别是这个要求:

“他的要求是响应时间1微妙,执行时间1微妙”
你觉得还是OS的范畴吗?
还是弱实时系统吗?

这时这一部分代码还不应该特别处理,还不应该裸奔解决吗?


所长前面说了:你还是用的OS的思维方式,没有去分析系统的强弱实时层次...

其实硬件的中断、优先级才是最高层次的强实时的OS,而区分系统层次 和 采用软件OS的目的恰恰是为了把弱实时的需求降低,以便让出更多的资源来保证强实时(中断程序)的可靠运行、激活。

区分系统实时层次、采用裸奔的目的就是为了让中断占用的时间最短,从而让任何最短的请求都不遗漏。

如果谁都有特权,那就等于谁都没有特权,明白吗?

一味推崇OS的,恰恰没理解到这一点哦。


不用急着说服谁,自己先去想想吧。

使用特权

评论回复
34
圆圈| | 2007-12-7 15:12 | 只看该作者

27楼

在有OS的系统里,也是有中断的,而且有些东西也可以放中断里处理,这方面两者没有区别的,彼此都能做都能达到要求~  比较这个比较不出彼此差别的~

使用特权

评论回复
35
农民讲习所| | 2007-12-7 15:12 | 只看该作者

LS:这就需要处理层次的转换了

比如:TCP/IP数据被强实时的中断接收,存放在接收缓冲队列中,因为是协议,所以在需要的数据外壳包含着大量的封装代码,如果不及时解析处理,在MCU中会造成缓冲区的溢出。这时候,弱实时层的中断处理(一般5MS)开始起作用,将协议转为数据量极其小的真实数据或事件,通过消息队列或另外的缓冲区向非实时模块传递。

使用特权

评论回复
36
农民讲习所| | 2007-12-7 15:13 | 只看该作者

俺就是做医疗设备的

使用特权

评论回复
37
农民讲习所| | 2007-12-7 15:15 | 只看该作者

嵌入式裸奔处理圆圈这样的问题是非常容易的事情

因为概念极其清晰,处理手段分明,大小MCU通吃。

使用特权

评论回复
38
圆圈| | 2007-12-7 15:18 | 只看该作者

33楼

很多处理器上的很多实时操作系统能达到那个指标要求~

你也不要钻那个点,那如果是响应时间1毫秒,执行时间100微妙呢,再多加几个类似任务呢,若再加个响应时间500微妙,执行时间200微妙的呢? 还有其他响应时间50~100毫秒,执行时间50~100毫秒的呢?  

使用特权

评论回复
39
农民讲习所| | 2007-12-7 15:20 | 只看该作者

嵌入式裸奔也符合MCU的中断特性

高中低三个层次,对应着高等级中断、低等级中断、主循环。倒是OS,想提升哪个优先级别就提升哪个,一点也没规则,全靠自己掌握。

使用特权

评论回复
40
dld2| | 2007-12-7 15:21 | 只看该作者

19楼

1、复杂系统中,OS也不能保证响应时间,大家都在尽力而为。例如抢占调度下,一个最高优先级任务的响应时间是:所有可能同时发生的中断的处理时间+任务上下文切换时间;但是因为驱动层的隔离,你可能根本不知道有多少个中断源。
2。有些任务间确实具有明确的优先级高低。但很多时候这个优先级是想像出来的,并不具有天然的含义。结果往往是,大家还是顺序执行,你做完了我做。
3。谁也没有否认OS的价值。但如果离开OS就连较简单的问题都解决不了,那才真是被误导了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则