内核中的同步与互斥
crystal_266
这个作者很懒,什么都没留下…
展开
-
05-互斥量的应用示例
文章目录1 示例代码1.1 demo.c1.2 test.c1.3 Makefile1.4 测试如果 信号量除了不能用于中断的上下文,还有一个缺点就是不是很智能。在获取信号量的代码中只要信号量的值为0,进程就马上休眠了。但是更一般的情况是,在不用等待很长的时间后信号量马上就可以获得,那么信号量的操作就要经历使进程先休眠再被唤醒的一个漫长过程。可以在信号量不能获取的时候稍微耐心等待一小段时间,如果...原创 2019-11-05 11:21:22 · 722 阅读 · 0 评论 -
04-信号量的应用
文章目录1 示例代码1.1 demo.c1.2 test.c1.3 Makefile1.4 测试结果 本节我们来使用信号量实现了一次只能有一个应用程序访问设备,信号量可以导致休眠,因此信号量保护的临界区没有运行时间限制,可以在驱动的 open 函数申请信号量,然后在release 函数中释放信号量。但是信号量不能用在中断中。 信号量的特点如下: ①、因为信号量可以使等待资源线程进入休眠状态,...原创 2019-11-05 11:14:27 · 1091 阅读 · 1 评论 -
03-自旋锁应用示例
文章目录1 示例代码1.1 demo.c1.2 test.c1.3 Makefile1.4 测试结果 上个示例 02-原子变量应用示例 使用原子变量实现了一次只能有一个应用程序访问一个设备,本节我们使用自旋锁来实现此功能。在使用自旋锁之前,先回顾一下自旋锁的使用注意事项: ①、自旋锁保护的临界区要尽可能的短,因此在 open 函数中申请自旋锁,然后在 release 函数中释放自旋锁的方法就不...原创 2019-11-04 17:32:29 · 1833 阅读 · 1 评论 -
02-原子变量应用示例
文章目录1 示例代码1.1 demo.c1.2 test.c1.3 Makefile1.4 测试结果 1 示例代码 1.1 demo.c #include <linux/module.h> #include <linux/device.h> #include <linux/cdev.h> #include <linux/fs.h> #include ...原创 2019-11-04 15:19:08 · 788 阅读 · 4 评论 -
01-内核的互斥与同步概述
文章目录1. 原子变量2. 自旋锁3. 读写锁 (读共享,写独占)4. 顺序锁5. 信号量6. 互斥量7. RCU机制8. 完成量 本文摘录自《嵌入式Linux驱动开发教程》一书。 1. 原子变量 如果一个变量的操作是原子性的,即不能再被分割,类似于在汇编代码也只要一条指令就能完成那么对于这样的变量就根本不需要考虑并发带来的影响。 typedef struct { int counter; }...翻译 2019-11-04 14:30:29 · 540 阅读 · 1 评论