2011-08-11 11 views
3

どのようにしてカーネルモジュールのスレッドが通信できるようにすることができますか?私はカーネルモジュールを作成しており、私のアーキテクチャは通信する必要のある3つのスレッドを使用します。これまでのところ、私の研究により、共有メモリ(グローバル変数の宣言)とスレッド間の読み書きを同期させるロック機構を使用する唯一の方法があると信じていました。そこにはそこには希少な資料があります。カーネルスレッドの通信を行うにはどうしたらいいですか?

私は考慮する可能性のある他の方法はありますか?カーネルコードの中で最も一般的なものは何ですか?

答えて

2

プログラミングしているオペレーティングシステムはありません。私は最も一般的なUNIXシステムであるLinuxと仮定します。

Linuxカーネルプログラミングにはいくつかの良い本があります。 Linux Device Driversはオンラインでも紙でも入手できます。 Chapter 5は並行処理を扱います。最初に第1章と第3章を最初にスキミングするのが最善の方法ですが、第5章に直接ジャンプできます。後続の章にも関連するセクションがあります(特に、待機キューについてはchapter 6で説明しています)。

Linuxカーネルの並行性モデルは、共有変数に基づいて構築されています。原子整数変数、相互排除ロック(ノンブロッキングクリティカルセクションのスピンロック、クリティカルセクションをブロックするためのセマフォ)、リーダライタロック、条件変数、待機キューなど、幅広い同期方法があります。

+0

はい、Linux、ありがとう君は。私は待ち行列とLinuxデバイスドライバの本をチェックします、ありがとう。 – jpmelos

関連する問題