3

カーネル レベルのスレッドを実装する必要がありますが、ネットで検索しているときに、Linux でカーネル レベルのスレッドを作成するには 3 つの方法があることがわかりました。

  1. NPTL
  2. kthread
  3. Linuxスレッド

linuxThreads は現在放棄されているとどこかに書かれていました。しかし、NPTL と kthread の現在のサポートを見つけることができません。また、それらの機能の使用方法を簡単に説明できるソースを見つけることができません。

現在サポートされている、カーネル レベルのスレッドを使用するのに適したライブラリはどれですか?

また、これらのライブラリをインストールして使用するためのリソースを共有してください。

4

2 に答える 2

6

「カーネルスレッド」の2つの非常に異なる定義を混同しています。

LinuxThreads と NPTL は、ユーザー空間プロセス用の POSIX pthreads の実装です。これらは、カーネル スケジューリング エンティティからユーザー空間スレッドへの 1 対 1 のマッピングを使用します。これらは、カーネルによってスケジュールされるスレッドを作成するという理由だけで、カーネル スレッドの実装として説明されることがあります。

LinuxThreads はサポートされておらず、完全に廃止されています。NPTL は現在 glibc の一部であるため、既に使用されています。インストールする特別なものは何もありません。などの関数を呼び出して、POSIX スレッド ライブラリを使用するのと同じ方法でこれらを使用しますpthread_create

実際のカーネル スレッドは、カーネル コードを実行します。これらのライブラリはすべてユーザー空間のライブラリであるため、関連するライブラリはありません。のような関数を見てくださいkthread_run。魔法も秘密もありません。同様のカーネル コードが書かれている方法でカーネル コードを記述します。(カーネル コードを記述する知識と経験が必要です。残念ながら、単純ではありません。)

于 2013-01-28T12:20:05.573 に答える
0

私はそれを仮定します。本当にカーネル スレッドを作成したい場合は、これらのことを既に知っているはずです。

マルチスレッド アプリケーションを作成し、ユーザー レベルのマルチスレッド機能に関する情報を探していると思います。

はい、作成したこれらのスレッドは、カーネル自体によって管理されます。これはあなたが探しているものです:: POSIXスレッド

于 2013-01-28T11:51:53.710 に答える