linux-kernel - 如何进行内核线程通信?

标签 linux-kernel multithreading

如何让内核模块中的线程进行通信?我正在编写一个内核模块,我的架构将使用三个需要通信的线程。到目前为止,我的研究使我相信唯一的方法是使用共享内存(声明全局变量)和锁定机制来同步线程之间的读/写。这方面的 Material 相当稀缺。

还有其他我可以考虑的方法吗?内核代码中最常见的标准是什么?

最佳答案

您没有说明您在什么操作系统上编程。我假设 Linux,这是最常见的 unix 系统。

有几本关于 Linux 内核编程的好书。 Linux Device Drivers可在网上和纸上获得。 Chapter 5处理并发;您可以直接跳到第 5 章,但最好先浏览至少第 1 章和第 3 章。后续章节也有相关部分(特别是等待队列在 chapter 6 中讨论)。

Linux 内核并发模型建立在共享变量之上。同步方法种类繁多:原子整型变量、互斥锁(非阻塞临界区的自旋锁、阻塞临界区的信号量)、读写锁、条件变量、等待队列……

关于linux-kernel - 如何进行内核线程通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7034249/

相关文章:

c - 使用映射将数据从用户空间发送到 bpf 程序时出现问题

linux - Linux 如何确定设备类别?

c - 访问内核 2.6+ 中的 sys_call_table

memory-management - 转换内核地址时 pgd_bad、pmd_bad、pud_bad 的含义是什么?

multithreading - 简单线程示例 Delphi

python - Python 的关闭过程设置模块全局变量在哪里记录?

multithreading - lua 命令行是否支持线程?

c# - 调用线程无法访问此对象,因为另一个线程拥有它 - WPF

c - 解决 time.h 中 timespec 的重新定义

java - 为什么消费者线程无法从 Vector 中删除消息?