preempt_enable 和 preempt_disable
2014-03-14 14:38
351 查看
允许抢占和禁止抢占。
例如:内核态程序 和 中断处理程序的互斥
因为中断是异步的(不只要何时发生中断,也即随时可能发生中断),因此如果内核态的程序使用了和中断处理程序中相同的数据结构,那么必须进行互斥访问。
如果在第二条指令执行时发生中断,而中断处理程序也需要将counter加1等操作,那么counter变量的值就会变得紊乱。
因此,只要非中断处理代码要更新一个与中断处理程序共享的数据结构,那么它就首先禁止中断,执行临界段,然后再重新允许中断。在linux中,如下
调用preempt_disable()后当前进程将不能被强抢占
例如:内核态程序 和 中断处理程序的互斥
因为中断是异步的(不只要何时发生中断,也即随时可能发生中断),因此如果内核态的程序使用了和中断处理程序中相同的数据结构,那么必须进行互斥访问。
load %r0, counter add %r0,1 //发生中断 store %r0,conter |
因此,只要非中断处理代码要更新一个与中断处理程序共享的数据结构,那么它就首先禁止中断,执行临界段,然后再重新允许中断。在linux中,如下
preempt_disable(); load %r0, counter add %r0,1 //发生中断 store %r0,conter preempt_enable(); |
相关文章推荐
- 胖子伤不起
- CSS的倡导者:学习CSS的10大理由
- 如何实现设置页面顶部添加导航栏,以及自定义风格
- Balloon.2.7 —— UI组件之日期(基于My97封装)
- 基于视觉的Web页面分页算法VIPS的实现源代码下载
- 荀子--劝学
- webservice根据wsdl文件生成代码doc命令
- 微型真空泵、气泵调节流量的方法——电控详解
- 字符串匹配的KMP算法(来源:阮一峰的网络日志http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_al)
- 最奇葩的散热翻山AMD神器
- Extjs4.2 线图和柱图的融合图的简单例子1
- Flex仿Extjs局部遮罩(可带进度条)
- 惠普C3000、C7000 Port Mapping
- 通用单例的写法
- java正则断言使用需添加最大值
- POJ 3254 Corn Fields(状态压缩)
- ios 抓图实现
- 如何从一个XtraBackup完整备份中恢复一个InnoDB表
- 支气管炎的食疗法
- easyui之layout布局