QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1301|回复: 2

有一个内核编译后的竞争问题想不通

[复制链接]
发表于 2005-3-28 19:34:40 | 显示全部楼层 |阅读模式
在内核(2。4)中只有中断能抢进来,可是内核大部分是用c语言写的,少不了对全局变量的判断或赋值,而且一条c语言一般被翻译为多条汇编语言,如果中断在一条c语言翻译成的汇编中抢进来,对全局变量进行改变怎么办?
  难道中断程序不访问全局变量,显然不是,源代码中不少这样的例子吧。又不能用锁,难道只要内核访问全局变量就要关中断?也没有这么做啊,到底怎么搞的。
  我看<<linux设备驱动程序>>上只看到了c语言一级的竞态,可是一条c语言翻译成的汇编的原子性怎么保证呢??
发表于 2005-3-29 09:54:43 | 显示全部楼层
linux kernel development中文版p92:
如果一段内核代码操作某资源的时候系统产生了一个中断,而且该中断的处理程序还要访问这一资源,这就是一个Bug。。。省略N字跟你的问题有关
回复

使用道具 举报

发表于 2005-3-29 15:08:06 | 显示全部楼层
学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 12:00 , Processed in 0.060986 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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