随笔分类 -  Linux内核驱动-并发控制机制

顺序锁
摘要:参考网友帖子:Linux设备驱动中的并发控制之七(顺序锁)-CSDN博客 阅读全文

posted @ 2024-09-19 09:04 f1engmin11 阅读(14) 评论(0) 推荐(0)

编译乱序和执行乱序
摘要:参考网友帖子:Linux设备驱动中的并发控制之二(编译乱序和执行乱序)_linux 代码顺序执行,不优化-CSDN博客 使用barrier()实现: #define barrier() __asm__ __volatile__("": : :"memory") 在 Linux 内核代码中,barri 阅读全文

posted @ 2024-09-19 09:03 f1engmin11 阅读(119) 评论(0) 推荐(0)

完成量
摘要:待施工 阅读全文

posted @ 2024-09-19 08:58 f1engmin11 阅读(10) 评论(0) 推荐(0)

等待队列
摘要:待施工 阅读全文

posted @ 2024-09-19 08:51 f1engmin11 阅读(12) 评论(0) 推荐(0)

互斥锁-基于堵塞的互斥机制
摘要:解决对单个资源的互斥访问 问题 当加锁失败,互斥锁使用线程切换应对,本线程放弃时间片。直到加锁成功,CPU再重新调度本线程,重新获得时间片。 P/加锁 临界区 V/解锁 阅读全文

posted @ 2024-09-07 12:15 f1engmin11 阅读(39) 评论(0) 推荐(0)

原子变量
摘要:参考网友帖子:学习笔记五 :linux驱动之原子变量_驱动中添加一个原子变量-CSDN博客 实现一个驱动只能被一个进程打开: #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <li 阅读全文

posted @ 2024-09-07 12:15 f1engmin11 阅读(22) 评论(0) 推荐(0)

中断屏蔽
摘要:1. 中断屏蔽将使得中断与进程之间的并发不再发生; 2. 内核的进程调度等操作都依赖中断来实现,内核抢占进程之间的并发也不再发生; 3. 接口: local_irq_disable() //屏蔽中断 . . . critical section //临界区 . . . local_irq_enabl 阅读全文

posted @ 2024-09-07 12:15 f1engmin11 阅读(63) 评论(0) 推荐(0)

自旋锁-基于忙等待的并发控制机制
摘要:自旋锁,只能解决互斥问题; 不能堵塞; 当加锁失败,自旋锁用忙等待应对,本线程不放弃时间片,一直死循环直到加锁成功; 适用于: 1. 异常上下文之间共享资源 2. 异常上下文与任务上下文之间共享资源 3. 任务上下文之间、且临界区时间很短(即无堵塞)的情况 4. 互斥问题 阅读全文

posted @ 2024-09-07 12:15 f1engmin11 阅读(24) 评论(0) 推荐(0)

信号量-基于堵塞的同步机制
摘要:适用于:任务上下文之间且临界区执行时间较长的互斥或者同步问题 阅读全文

posted @ 2024-09-07 12:14 f1engmin11 阅读(24) 评论(0) 推荐(0)

并发控制机制选择原则
摘要:1. 不允许睡眠的上下文需要采用忙等待类 2. 可以睡眠的上下文可以采用堵塞类 3. 在异常上下文中访问的竞争资源一定要采用忙等待类 4. 临界区操作较长的应用建议采用堵塞类 5 临界区很短的操作建议采用忙等待类 6. 中断屏蔽仅在有与中断上下文共享资源时使用 7. 共享资源仅仅是一个整型变量时,使 阅读全文

posted @ 2024-09-07 12:14 f1engmin11 阅读(19) 评论(0) 推荐(0)

导航