Linux设备驱动之并发控制(1)
来源:互联网 发布:jsp网上购物系统源码 编辑:程序博客网 时间:2024/06/05 22:56
在对称多处理器系统与单核系统都有可能发生并发执行的情况,所以需要有一种机制来避免对临界资源的访问冲突。
除了SMP(多处理器系统)是真正并行外,其他都是“宏观并行,微观串行”,但实质问题与SMP相似。
访问共享资源代码区域称临界区(critical sections),它需要以互斥机制加以保护。
包括: 中断屏蔽,原子操作,自旋锁和信号量
中断屏蔽:
单核CPU中避免竞态的简单访问是进入临界区前屏蔽系统中断。但要求当前内核应尽快执行完临界区的代码以避免长时间屏蔽中断引起数据丢失或系统崩溃。
原子操作:
执行过程中不会被别的代码所中断的操作。Linux内核中它们分为两类,分别针对位和整型变量进行原子操作。内核代码可安全地调用它们而不被打断。
整型原子操作:
void atomic_set(atomic_t *v, int i); //设置原子变量为i
atomic_t v = ATOMIC_INIT(0);//定义v并初始化为0.
atomic_read(atomic_t *v);//返回值
void atomic_add(int i, atomic_t *v);//增加i
void atomic_sub(int i, atomic_t *v);//减少i
void atomic_inc(atomic_t *v);//自增1
void atomic_dec(atomic_t *v);//自减1
//操作并测试,测试其是否为0,为0返回true,否则返回false.
int atomic_inc_and_test(atomic_t *v);
int atomic_dec_and_test(atomic_t *v);
int atomic_sub_and_test(int i, atomic_t *v);
//操作并返回
int atomic_add_return(int i,atomic_t *v);
int atomic_sub_return(int i,atomic_t *v);
int atomic_inc_return(atomic_t *v);
int atomic_dec_return(atomic_t *v);
- Linux设备驱动之并发控制(1)
- 深入浅出Linux设备驱动之并发控制
- 深入浅出Linux设备驱动之并发控制
- 深入浅出Linux设备驱动之并发控制
- 深入浅出Linux设备驱动之并发控制
- 深入浅出Linux设备驱动之并发控制
- Linux设备驱动之并发控制
- linux设备驱动之并发控制
- Linux设备驱动之并发控制
- Linux设备驱动并发控制
- 7--1linux设备驱动中的并发控制
- Linux设备驱动中的并发控制
- Linux设备驱动中的并发控制
- Linux 设备驱动中的并发控制
- linux设备驱动中的并发控制
- Linux设备驱动中的并发控制
- 7、linux设备驱动--并发控制
- Linux设备驱动中的并发控制总结
- Jquary
- 常用DBHelper类
- 用css控制背景图片大小的方法
- js屏蔽效果
- jQuery异步提交
- Linux设备驱动之并发控制(1)
- jquery异步提交无刷新
- BizTalk Server 2010 - 映射器(Mapper) [ 下篇 ]
- java调用带有header信息的.net webService
- 获取输入汉字的首字母
- 获取 exe dll 资源图标
- 动态修改IP方法
- 函数调用传值、传地址与引用的选择
- 显示Powerdesigner工具条