如何进行内核线程通信?

时间:2011-08-11 19:56:59

标签: linux-kernel multithreading

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

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

1 个答案:

答案 0 :(得分:2)

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

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

Linux内核并发模型建立在共享变量之上。有很多种同步方法:原子整数变量,互斥锁(非阻塞关键部分的自旋锁,阻塞关键部分的信号量),读写器锁,条件变量,等待队列,......