
私は現在LFCSについて学んでいますが、ユーザー生成プロセスとカーネル生成プロセスの違いについて学びました。カーネルによって生成されたプロセスのうち、2つのプロセスサブタイプを定義します。
- 内部カーネルプロセス
- 外部ユーザープロセス
彼らは、バッファをディスクにフラッシュし、負荷をCPU全体に均等に分散させるなどの内部カーネルプロセスの例を示しました。ただし、外部ユーザープロセスにのみ指定されます。
これらのプロセスは通常のアプリケーションのようにユーザー空間で実行されますが、カーネルによって開始されます。これらは数が少なく、一般に寿命が短い。
私の最初の考えは、これらのものがsystemdのようなinitシステムで実行されるということでしたが、私は一般的に一時的であると言ったので、私の直感はおそらくそうではないと言いました。
外部ユーザープロセスの例は何ですか?
答え1
- プログラムが呼び出されます
/proc/sys/kernel/hotplug
。 /sbin/v86d
カーネルモジュールで使用されるヘルパールーチンuvesafb
。
追加読書
- ジョナサンデボインポラード(2017)。
plug-and-play-event-handler
。 スナックガイド。ソフトウェア。
答え2
「外部ユーザープロセス」の例はですinit
。カーネルは、init
ユーザー空間の要求なしで(つまり、応答fork()
や関連のシステムコールではなく)プロセスを開始します。あなたの考えは役割のsystemd
ために合理的です。systemd
init
カーネルは、特定のイベントでユーザー空間プロセスの実行をトリガーすることもできます。たとえば、歴史的にhotplug
カーネルは、デバイスが追加または削除されたときにユーザー空間の実行可能ファイルを実行しました。このプロセスは寿命が短い。 (これは可能な例ですが、最近このユースケースではこのアプローチは使用されていないようです。)