li_0_0_0 发表于 2005-3-28 19:34:40

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

在内核(2。4)中只有中断能抢进来,可是内核大部分是用c语言写的,少不了对全局变量的判断或赋值,而且一条c语言一般被翻译为多条汇编语言,如果中断在一条c语言翻译成的汇编中抢进来,对全局变量进行改变怎么办?
难道中断程序不访问全局变量,显然不是,源代码中不少这样的例子吧。又不能用锁,难道只要内核访问全局变量就要关中断?也没有这么做啊,到底怎么搞的。
我看<<linux设备驱动程序>>上只看到了c语言一级的竞态,可是一条c语言翻译成的汇编的原子性怎么保证呢??

dreamagain 发表于 2005-3-29 09:54:43

:shock: linux kernel development中文版p92:
如果一段内核代码操作某资源的时候系统产生了一个中断,而且该中断的处理程序还要访问这一资源,这就是一个Bug。。。省略N字跟你的问题有关

xw009 发表于 2005-3-29 15:08:06

学习
页: [1]
查看完整版本: 有一个内核编译后的竞争问题想不通