打印

带os到底比不带os有哪些优势?

[复制链接]
41569|329
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
doob|  楼主 | 2007-11-10 12:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   现在言必os,我想知道:带os到底比不带os有哪些优势?
不要泛泛而谈,要浅显易懂的例子说明o(∩_∩)o...
    1:我的理解是这样的:假如一个lcd_display() 一个scan_key()
跑完每个程序耗时太长,会感觉不连贯。带os,就会“同时跑”感觉
好一点吧。但是速度够快的话,不存在此问题啊?
     2:管理大型程序方便?还不太有感觉,不带os只要有
好的框架不是一样方便?

相关帖子

来自 2楼
and| | 2007-11-20 01:13 | 只看该作者

苏武牧羊 伴我爬上244楼

分水岭是抢占点。

总有那么些事情是更着急的,所以它们必须抢占那些不那么着急的事情,抢占--因为CPU有限,如果每个任务都拥有一个CPU,那么只要设计通讯通路就可以了,如果每个单位的CPU足够小,那就到了硬逻辑--FPGA,但大多数时候你只有一个CPU。

中断--使用一个抢占点的系统,应该就算是裸奔吧。在中断代码中,可以用来完成很多任务,如果CPU支持更复杂的中断优先级算法,那就可以用来做更复杂的事情。但是,如果把太多的任务放到中断代码中,过于拥挤就会出现问题--本质上还是时间的矛盾。

把矛盾向上推,构造另一条抢占线--任务,应该就是算是OS吧。在这个缓冲的空间中,为解决时间的矛盾提供了充裕得多的回旋余地,但系统复杂性也随之提高。OS还不只这些--CPU都瓜分了,顺便把系统资源也都瓜分了吧--这是一个任务的世界。

裸奔的系统很真实,很纯粹,OS的系统很温暖,很缥缈。基于一个中断抢占点,徒手构造状态机和任务调度,和 把OS完全安家到一片全新的CPU,自己读着芯片手册写完BSP和驱动,哪一个更容易,哪一个更难?

需求驱动,催生出体系的任务。把这些任务一字排开,有的是从管和门穿过你的系统,把它们分配给硬件,要求太高的逻辑,分配给数字电路,其它的交给软件。

把剩下的任务再次排开,这里有三个筐,中断级,任务调度级,用户级,把剩下的任务用这三个筐盛住,就可以收钱走人了。先把任务全部倒到用户级,如果有的很着急,就把他挪到中断级,如果还有很急的,就继续挪。挪动一个任务,在用户级就要产生相应的调度来配合,因为这是一次割裂,而割裂是在一条直线(CPU)上进行,多个割裂相互交叠,必须用状态来区分和配合。

如果装下了,收工。如果中断级用完了,而着急的还存在,而且还夹缠不清,那就把一些装到任务调度级,这也是一种割裂--三断的割裂--原来那么些苛刻的任务,为了抢夺CPU来兑现自身,不惜把自己一折而三,这样做可以把这些任务用三个篮子盛住,代价是你必须用配合的代码来弥补因折断而产生的割裂,以维系来自于需求的任务的完整性,搞来搞去,OS产生了。

天暖就裸奔,天冷就加衣,没人会说什么。天冷裸奔,那是身体好,天暖披棉裘,那是有钱,也不应该说什么。

使用特权

评论回复
来自 3楼
平常人| | 2007-11-20 22:00 | 只看该作者

这么高的楼可千万不要倒,hotpower你可不比我站得矮

其实OS也是一样,它是在硬件平台这个基础上盖的高楼(带OS),当然比平房(不带OS)有很多优越性了;住的人多(多任务),可以分片分块管理,节约占地面积(充分利用硬件资源)等。

既然有优越性也少不了有缺点了,若设计不合理或制造时有缺陷(BUG),高楼就比平房危险很多,地震来了即使不倒,摇摇晃晃也够吓人的。

高楼的管理也需要更多的技巧,碰到有人不守规矩(Bad citizen),如高空抛物(程序存储溢出)、堵塞路口(抢占资源)、随地丢垃圾(制造存储碎片)等行为,还真得需要点手段(MMU或MPU、信号量、清洁工(garbage collector))才能治理。

还有一点很重要,楼这么高,地基(硬件性能)不牢可不行,地基不牢楼肯定盖不高。

总之,要想盖高楼(OS),各方面的条件都要好,设计师(系统程序员)、建筑师(程序员)、工程监理(QA)、验收(测试)等各个环节都要做好;结构的设计、房间的组织(存储管理)、人员的管理(进程调度)、交通道路(进程通信)、基础设施(外设管理)等各方面都要考虑周全。

最后一个要点就是要根据你家的人口(任务数目)、工作性质确定楼的高度(OS的复杂程度),矮楼合适时不要刻意追求高楼,能住平房不必非住楼房,要知道楼越高代价也越大。

使用特权

评论回复
地板
andrew.xu| | 2007-11-10 13:17 | 只看该作者

用后感觉

写应用程序变得简单,并且有条理,很多东西不需要自己安排了

使用特权

评论回复
5
ayb_ice| | 2007-11-10 13:57 | 只看该作者

感觉延时函数最有用

使用特权

评论回复
6
NE5532| | 2007-11-10 17:38 | 只看该作者

看应用,电风扇用OS不?

使用特权

评论回复
7
后学| | 2007-11-10 19:19 | 只看该作者

re

把一些底层屏蔽掉,

使用特权

评论回复
8
machunshui| | 2007-11-10 20:38 | 只看该作者

任务之间有较多的同步互斥关系的时候

我觉得任务之间有较多的同步互斥关系的时候,比大循环实现可靠,有条理.

处理一般性任务,也比较有条理.能用OS还是用吧,毕竟这是一个好东东,可能第一次第二次难.

使用特权

评论回复
9
dld2| | 2007-11-10 20:40 | 只看该作者

同步是关系,互斥是问题

个人感觉。

使用特权

评论回复
10
wxj1952| | 2007-11-10 21:00 | 只看该作者

用过了都说好,没用过都不知道。

假定要求设计这样一个系统:(书上抄的,好像是轿车自动档控制系统)
1、必须以每0.5S间隔测量汽车的当前速度;
2、每秒钟刷新显示40次;
3、没隔05S输出所计算的新的油门位置;
4、如果已发出报警,必须在20分钟之后关掉;
5、前门被打开时,如果30S内没有输入正确的口令,则报警;
6、必须每秒采样1000次发动机振动;
必须每20ms扫描一次键盘;
7、主机CAN节点必须每秒与其他节点(传感器或警报节点)通信一次;
8、传感器每秒采样一次。
9、......
10、......

用超循环的方法很难设计好这个系统,顾此失彼。但是在OS平台上,完成这个设计,即简单又可靠。
OS是什么意思?OS是一个非常稳定的平台,有极好的健壮性。也许你在上面构筑的程序不是很稳定的,可能会塌陷(跑飞),但是OS可以让它重新竖立起来。这在超循环模式下是需要“高手”才能做到不可预测的程度。这样的高手,不是每个单位都有的。如果真有,他也肯定先为自己设计一个平台了。

超循环模式就像用砖头盖房子,只能盖简单的民房。要盖摩天大厦,就不能用砖头。
我刚听说世界十大建筑,仅北京就占了3座——鸟巢、中央电视塔、新北京机场?楼。可惜,都是外国建筑师为我们设计的。
   中国人只会用砖头盖民房吗?我们只会用超循环模式设计简单的软件吗?中国哪种轿车上的自控系统是自己研发的?
去年刚听说QQ车上的方向盘扭力自控单片机系统50万招标,结果北京两所重点大学和YY研究所三家单位联合攻关5年,经费用光了也没过关。(据说就是程序跑飞这一关过不去)。教授程序好编,可惜什么叫系统的健壮性。

使用特权

评论回复
11
dld2| | 2007-11-10 21:27 | 只看该作者

别造神

这个坛子里裸奔高手多得是......

50万找错了人pi也做不出来......

使用特权

评论回复
12
szsfy| | 2007-11-10 21:36 | 只看该作者

不懂

只会裸奔,有高手举个简单的例子引导下怎么入门。

使用特权

评论回复
13
machunshui| | 2007-11-10 22:15 | 只看该作者

支持wxj1952

说得好.
我自己虽然还没有使用,但是正在看,也打算以后用这个.

我不认为裸奔的人是什么高手,最原始的方式而已,实际上干点复杂的事情就算不用OS,还要借助OS的思想,模拟OS的方法.
感觉象清朝留着鞭子学洋学,不彻底.

随着时代的发展,最终可能现在很多用裸奔的都会转到OS上来,就和现在C是趋势一样.

使用特权

评论回复
14
pheavecn| | 2007-11-10 22:35 | 只看该作者

带OS产品档次高,可以多买些钱。

arm7,没用OS,但是老板跟客户吹是用linux。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xlsbz + 1
15
xwj| | 2007-11-10 22:39 | 只看该作者

呵呵,12楼说的好:-)

使用特权

评论回复
16
etual| | 2007-11-10 23:52 | 只看该作者

看系统资源了,单片机还是裸奔好。

使用特权

评论回复
17
happystar| | 2007-11-11 11:22 | 只看该作者

wxj1952和 xwj哪是哪呀?

记得xwj那个小跳鸟印象很深刻的。
做起多任务来,如果不用OS那么涉及到复杂多任务时,任务切换保存上下文什么的很麻烦(至少我是不会),而且稳定性也是很难解决的。
用OS的时候,起码OS很稳定,在上边编写程序的时候就想在PC上一样(可以当作应用程,涉及到硬件比较少,可以调用很多底程函数)。
总之,用了才知道。

使用特权

评论回复
18
xwj| | 2007-11-11 11:42 | 只看该作者

呵呵,用OS主要是复杂任务编程方便

各个并行任务可以认为是毫不相干,只通过信号量沟通,而不需考虑相互影响、现场保护等问题


不过单片机一般做的都是不太复杂的系统,任务、流程很容易理清,这时还是直接裸奔来得快...

比如8楼的举的例子,用裸奔的状态机也是很容易实现的

使用特权

评论回复
19
huangqi412| | 2007-11-11 11:48 | 只看该作者

看了阵,但是还是很不习惯os的思路,

使用特权

评论回复
20
汽车电子| | 2007-11-11 11:53 | 只看该作者

一个字:爽

   写程序太方便了,不用自己组织系统结构。

   

使用特权

评论回复
21
dai_weis| | 2007-11-11 13:08 | 只看该作者

我的大部分还是裸奔

不过20mS扫描一次键盘太频繁了吧?
一秒钟有三次到四次就够了
而且好像可以多MCU协调工作的。

使用特权

评论回复
22
zhiwei| | 2007-11-11 14:25 | 只看该作者

单片机还是裸奔吧

系统节拍设快一点(mS级),各任务自设状态机,每个节拍可以做所有的事。各个任务延时执行可以用一个通用的延时调度器来调度执行。要求实时性很强的小事情可以在中断中完成,这样实时性也不会差太多。

使用特权

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

本版积分规则

165

主题

1114

帖子

3

粉丝