2011-08-11 44 views
3

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

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

回答

2

你不说你正在编程的操作系统。我将假设Linux是最常见的unix系统。

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

Linux内核并发模型基于共享变量构建。有大量的同步方法:原子整型变量,互斥锁(用于非阻塞临界区段的自旋锁,用于阻塞临界区段的信号量),读写器锁,条件变量,等待队列......

+0

是的,Linux,谢谢您。我将检查等待队列和Linux设备驱动程序书,谢谢。 – jpmelos