打印

我觉得裸奔也要带着操作系统思想裸奔

[复制链接]
6887|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zyboy|  楼主 | 2009-5-19 19:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我程序一直都是**的,在**中发现了几个问题:
(1)WARNING L15: MULTIPLE CALL TO SEGMENT --函数重入
其实这个问题实际上就是函数重入问题,在操作系统的多线程很常见。例如在主循环里调用了一个函数,而在中断服务中,你又一次调用了同样的函数。这样当主循环运行到该函数中时,一旦产生中断,则在中断里又再次调用该函数!而使得该子函数发生了重入,这时,尽管概率很低,但是很可能出错!

(2):当主函数与中断函数共享变量问题 (类似两个线程共享资源的问题)
当主函数与中断函数共用变量时,可能发生: 
例如:当变量的其中一个字节读入到寄存器中时,发生中断,中断中改写了变量值。当中断返回时,变量的其他字节继续被读入到寄存器中,造成新旧字节组合错误。

这些问题感觉都很隐蔽,如果出现了,可能只能通过反汇编才能看到。个人感觉要有操作系统的思想,理解和避免这些问题就容易些了。

相关帖子

沙发
McuIsp| | 2009-5-19 20:02 | 只看该作者

赞同

使用特权

评论回复
板凳
dld2| | 2009-5-20 08:45 | 只看该作者

基本上抢占多任务和开了N个中断差不多

使用特权

评论回复
地板
HWM| | 2009-5-20 08:57 | 只看该作者

critical-section problem

使用特权

评论回复
5
electron0101| | 2009-5-20 20:48 | 只看该作者

同意 看看大侠 有解决方案!

使用特权

评论回复
6
后学| | 2009-5-22 23:35 | 只看该作者

nod

使用特权

评论回复
7
zyboy|  楼主 | 2009-5-22 23:37 | 只看该作者

谢谢穿裤子了!哈哈

补充一下我的解决方法:

(1):有两种方法解决 reentrant使函数重入,缺点堆栈,我喜欢另一种定义两个不同名字功能相同的函数。

(2):我直接用最原始的关中断,开中断(如果要保护的代码较少)

使用特权

评论回复
8
beinghu| | 2009-5-22 23:59 | 只看该作者

是要带os思想的

不管怎么裸笨,os的思想都是有借鉴和知道意义的

使用特权

评论回复
9
笃行者| | 2009-5-23 08:55 | 只看该作者

赞同

OS的消息队列,时间片等可以用到前后台系统中

使用特权

评论回复
10
救火车| | 2009-5-23 09:32 | 只看该作者

强烈赞同。

使用特权

评论回复
11
ayb_ice| | 2009-5-23 12:23 | 只看该作者

LZ的这些都是写程序要考虑的基本问题

操作系统下会有更多这样的问题

使用特权

评论回复
12
McuPlayer| | 2009-5-24 16:28 | 只看该作者

好好的一个技术贴,被一个广告糟蹋了

使用特权

评论回复
13
yewuyi| | 2009-5-24 16:31 | 只看该作者

这个世界怎么有这样的SB ?

快赶上芙蓉了。。。

使用特权

评论回复
14
夏风| | 2009-5-24 19:14 | 只看该作者

问题是,那几个常年污染视线的,站方从没管过.

强烈建议删ID...

使用特权

评论回复
15
笃行者| | 2009-5-24 19:28 | 只看该作者

前后台系统可以用消息队列

前后台系统可以用消息队列,去管理各功能模块的调度

使用特权

评论回复
16
bg6nw| | 2009-5-24 21:41 | 只看该作者

应该反过来说

操作系统比裸奔更关注这些

使用特权

评论回复
17
鲁西老汉| | 2009-5-25 10:00 | 只看该作者

我的第一贴

来21IC第一贴,献给侃单片机第一加酷贴

使用特权

评论回复
18
highgear| | 2009-5-25 22:45 | 只看该作者

顶zyboy

其实,冲突的问题不仅仅是裸奔里有,实际上 os 里更严重,这就是为什么要引入互锁,互斥,信号,写通,写回等等乱七八糟的概念。只是裸奔下完全由自己控制,很多时候有意无意的能够避开冲突的问题。

我顶你,不是因为冲突问题,而是“带着操作系统思想裸奔“去设计程序的结构,比如消息,事件驱动,状态机,时间片等等核心思想。

使用特权

评论回复
19
jiyiche| | 2009-5-26 00:48 | 只看该作者

学习了

学习了呵呵

使用特权

评论回复
20
初入江湖| | 2009-5-26 11:26 | 只看该作者

学习了

 学习了

使用特权

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

本版积分规则

101

主题

356

帖子

0

粉丝