私はLinuxスケジューラのスケジューリングプロセスについて何度も読みました。私はマルチスレッドプログラミングプロセスを教えていますが、用語を知りたいです。私は(以下に書かれた)一つのことを言いたいと思います。誰かが私が最悪のエラーを解決するのに役立つことを願っています。
これはスケジューラがスケジュールしたプロセスではありません。ワイヤー プロセスに関連しています。プロセスはメモリマップされたセグメントの束なので、静的です。私たち
pthread_create()
または(ほとんどは正確ではありませんが)プロセスに複数のスレッドがあり、予約済みのスレッドである場合は、これをはっきりと見ることができますclone()
。それ以外の場合は、他のスレッドよりもプロセススレッド(PID = TID)を予約するだけです。あいまいさは、すべてのプロセスに少なくとも1つの実行スレッドがあるという事実によって引き起こされます。
これが正しい(簡単ですが)絵ですか?
ベストアンサー1
次のようにしてみてください。
すべてのプロセスは1つのスレッドで始まりますpthread_create
。 (この方法で作成されたすべてのプロセスのスレッドは同じアドレス空間を共有します。)カーネルのスケジューラは、プロセスの「デフォルト」/初期スレッドであれ他のスレッドであっても、これらのスレッドで動作します。本質的にスケジューラと同じです。違いはありません。コメント。
Linuxには元のスレッドが全くなく、プロセスだけがありました。したがって、歴史的な理由で「CPUジョブ」をスケジュールするオペレーティングシステムの部分は、しばしばプロセススケジューラと呼ばれます。 (これはLinuxに限定されておらず、ほとんどの(すべての)Unix型システムに当てはまります。スレッドスケジューラはまったく一般的な用語ではありません。)
名前空間全体をすでに説明していない限り、この時点では言及しませんclone
。vfork