Linux 设备驱动--- 并发 与 竞态 --- atomic_t --- atomic_dec_and_test --- 原子操作
来源:互联网 发布:无创dna数据辨别男女 编辑:程序博客网 时间:2024/04/25 00:36
并发:
多个执行单元同时被执行.
竞态:
并发的执行单元对资源 ( 硬件资源和软件上的全局变量等 ) 的访问导致的竞争状态.
并发的处理:
处理并发的常用技术是加锁或者互斥,即保证在任何时间只有一个执行单元可以操作共享资源.
在 Linux 内核中主要通过 semaphore 机制 (信号量)和spin_lock 机制 (自旋锁)实现.
原子操作:
定义:
原子操作指的是在执行过程中不会被别的代码所中断的操作.
分为 位 和 整型变量 两类原子操作。
atomic_t :
原子操作函数:
整型原子操作:
对原子变量执行自增,自减和减操作后 ,测试其是否为0,为 0 则返回 true,否则返回 false :
位原子操作:
实例 --- 原子操作:
1,定义一原子变量:
在程序开头定义原子变量,初始化为 1 :
2,在 open 函数里检测原子变量值:
如果没有进程在使用该驱动 ,原子变量值 为 1 ,将原子变量减 一 为 0 ,函数返回 true ,再 !true 为 假 ,if 里面的代码不执行;
这样打开了、并使用该驱动, 原子变量变为 0;
如果再有进程来打开驱动程序,0-1 = 负1,返回 false ,if 条件成立,运行里面的代码,将原子变量加一恢复到 0,程序返回;
3,在退出时 close 函数 恢复原子变量值:
最后, 在应用程序退出时 close 函数, 自增 恢复原子变量值为 1:
4,应用程序测试:
在应用程序里面打开驱动程序:
当有两个应用程序打开同一这个驱动的时候,打印 can't open! .
0 0
- Linux 设备驱动--- 并发 与 竞态 --- atomic_t --- atomic_dec_and_test --- 原子操作
- Linux 设备驱动--- 并发 与 竞态 --- atomic_t --- atomic_dec_and_test --- 原子操作
- linux设备驱动--并发与竞态之原子操作
- linux设备驱动--并发与竞态之原子操作
- linux内核设备驱动模型一之原子性操作atomic_t
- linux 原子性操作atomic_t
- 设备驱动-----并发控制--原子操作
- atomic_t原子操作
- 原子性操作atomic_t
- atomic_t原子操作
- 原子性操作atomic_t
- 原子操作 atomic_t
- 原子操作 atomic_t
- 原子操作atomic_t
- 原子性操作atomic_t
- 原子性操作atomic_t
- 原子性操作atomic_t
- 原子操作atomic_t
- 使用hadoop中的RPC框架实现远程调用
- 5-Statements
- Java基础之理解Annotation
- sicily 2380. Digits Count
- 4-Elementary TCP Sockets
- Linux 设备驱动--- 并发 与 竞态 --- atomic_t --- atomic_dec_and_test --- 原子操作
- Websocket协议概念、技术背景和原理介绍
- Android Drawable 那些不为人知的高效用法(Drawable实现圆角,应用更广)
- android javascript 调用activity
- 使用 Swift 进行 JSON 解析
- 菜菜鸟学习Vue.js
- 5-TCP Client&Server Example
- RGB 转 edp 接口dp501 示范电路
- MySQL的批处理