找回密码
 注册
搜索
查看: 1042|回复: 5

[讨论] 临界区代码

[复制链接]
发表于 2006-10-26 15:28:50 | 显示全部楼层 |阅读模式
什么是临界区代码?
发表于 2006-10-27 08:47:24 | 显示全部楼层
临界区代码就是指处理时不可分割的代码。当某段代码里用到的变量属于全局变量时,那部分代码就为临界区代码。比如你在外面定义了一个变量i。当你执行下列代码:
    i=a;
   a=b;
   b=i;
这段代码就是临界代码,因为如果你执行i=a后,有中断打入,如果中断把 i 值改变了,那下面的b值有出错了,所以这段代码是不可分割的,也就是属于临界区代码。
点评回复

使用道具 举报

 楼主| 发表于 2006-10-27 11:21:08 | 显示全部楼层
这样的意思是不是就是说,在临界区代码中,要么要做保存工作,要么就要禁止中断,或者,在中断处理的时候不要使用任何临界区代码中使用的全局变量
点评回复

使用道具 举报

发表于 2006-10-27 12:43:34 | 显示全部楼层
其实一般情况下应该是相反,不是在中断处理时不使用临界区代码中使用的全局变量,而在在处理临界区代码时要用把中断关闭。这在UCOS里内核里得到充分体现。
点评回复

使用道具 举报

发表于 2006-10-28 09:50:33 | 显示全部楼层
临界区代码问题是涉及互斥访问的问题,是操作系统中一个十分重要的概念,而关于临界区代码的执行问题,一般采用开关中断的方式进行。

而什么是临界区代码呢?我认为临界区代码是这样的一段代码:一个时刻只能有一个任务调用;是不可分割的;设计了全局变量的使用;等等。
点评回复

使用道具 举报

 楼主| 发表于 2006-10-28 15:44:52 | 显示全部楼层
谢谢
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-6 17:02 , Processed in 0.056641 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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