搜索
bottom↓
回复: 9

请问马老师关于访问“临界代码”时的处理

[复制链接]

出0入85汤圆

发表于 2010-8-27 13:59:14 | 显示全部楼层 |阅读模式
临界代码一词,我看到它时,是在一本讲单片机操作系统的书上,但如果我的MCU上没有采用操作系统,那是不是就不存在临界代码了?看了本坛有一篇讲全局变量的处理方法后,我晕了,他在中断和主程序中都要对一个全局变量进行读写访问,那在主程序中对该全局变量进行访问前就需要关中断吗,访问后开中断?如果是中断写,主程序读呢,这样主程序中也需要在访问全局变量前关中断,访问后开中断吗?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2010-8-27 16:12:07 | 显示全部楼层
1、临界代码一词,我看到它时,是在一本讲单片机操作系统的书上,但如果我的MCU上没有采用操作系统,那是不是就不存在临界代码了?
    仍然存在。

2、看了本坛有一篇讲全局变量的处理方法后,我晕了,他在中断和主程序中都要对一个全局变量进行读写访问,那在主程序中对该全局变量进行访问前就需要关中断吗,访问后开中断?
   是的。
   记住:需要关闭中断执行的这段代码必须要非常短,不能影响正常中断的执行。

3、如果是中断写,主程序读呢,这样主程序中也需要在访问全局变量前关中断,访问后开中断吗?
   我认为没有必要。

出0入85汤圆

 楼主| 发表于 2010-9-2 09:31:51 | 显示全部楼层
请马老师系统的讲解下“类似于这类的问题,什么时候应该开中断,什么时候不需要”

出0入85汤圆

 楼主| 发表于 2010-9-7 08:41:49 | 显示全部楼层
自己顶下,别沉了

出0入0汤圆

发表于 2010-9-22 16:36:28 | 显示全部楼层
这个问题还是比较复杂的,没有固定的模式。

首先“临界代码”并不仅仅是指一个变量,在中断中和在其它地方都要操作的变量只是一个特例。

重要的原因是:中断的产生是随机的,也就是说可能在任何时间产生。当一段程序正在操作处理一个数据的过程中,如果被中断打断,中断中又改变了这个数据,那么中断返回后,原先正在操作的过程可能就会出问题了。因此这个整个处理的过程都是“临界代码”。


举个简单的例子:

有两个变量X,Y,主程序测试外部接口得到X,并计算得到Y。定时中断中将X和Y的值传出到另外的系统。

当主程序读到一个新的X值,正在计算Y时,还没有计算完成,此时中断到了,那么它发送的是新的X值,而Y值还是老的,这就出现问题了。因此,整个X计算Y的过程,都应该是“临界代码”,理论上,在开始计算前,需要关中断,计算完成后再开放中断,保证X,Y的一致性。

至于是否需要关中断,也看实际情况的需要。比如上例中,5ms的定时中断,只是将X和Y的值传出到显示,而读取X计算Y是1秒一次的话,那么不关中断也可以。在1秒内错误的数据只是显示了5ms,你根本没有看到,而正确数据显示了995ms,这个我们是看到的。

首先要有这样的概念,然后出现问题后,就能很快的分析问题所在,然后解决。

出0入0汤圆

发表于 2010-9-23 12:25:05 | 显示全部楼层
临界区指的是一段会与其它进程产生冲突的代码,其问题的根本在于"并行执行"上.

楼主应先完全搞清楚"临界"二字的含义,然后才思考后面的问题.临界区是操作系统里相当基础的知识,因此所有教材上对它的分析都比较到位,去找本书认真看一阵子相信就能理解了.当然,临界区不是操作系统特有的,这个要注意,免得说我误导你.

4楼machao的意思的:"临界区是否存在"与"临界区是否需要保护"这两个问题并没有对应关系,要视情况而定.链表/队列上你要是敢不保护临界区,那就真是神牛了.

出0入85汤圆

 楼主| 发表于 2010-9-24 12:42:44 | 显示全部楼层
谢谢楼上的两位的回复。

出0入0汤圆

发表于 2010-9-29 10:54:47 | 显示全部楼层
什么死锁,临界,资源回收啊,真是软件工作者的天敌。

出0入0汤圆

发表于 2011-5-25 22:06:39 | 显示全部楼层
学习了,谢谢。

出0入0汤圆

发表于 2013-1-5 22:13:21 | 显示全部楼层
受教了。谢谢。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 21:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表