質問

私は、Linux上でのpthread実装に関する質問をしました。

プロセスは5つのスレッドを持っていると仮定します。 今どのようにスケジューラがこれらのスレッドを見ている(またはまったく参照does notの)ん。 例えばスケジューラが呼び出されると、それだけで、メインプロセスをスケジュールしません そしてそのスレッドのそれぞれとの間のスケジュールにメインプロセスのその責任。

またはそれは別個のプロセスであるかのようにそのスケジューラのスケジュールは、各スレッド、他の方法である。

役に立ちましたか?

解決

最近のLinux(NPTLのpthreadの実装)、スケジューラのスケジュールスレッドの場合、スレッドは、「軽量プロセス」とみなされます。 pthread_createのは clone システムコールます。

他のヒント

Linuxのスケジュール、それはPTHREAD_SCOPE_SYSTEMとしてスコープを持つプロセスであるかのようにすべてのスレッド。 NPTL実装は、複数のCPUを利用することができます。

としてローガンは言った、すべてのスレッドが独立して予定されています。

しかし、あなたはあなたの代わりに、スレッドのスケジュールグループにLinuxのプロセス制御グループを使用することを望む場合ます。

プロセス制御グループは、スケジューリングがもう少し非効率的に、それははるかに公平であることができます。

非常に人気となっています。

1つの用途は、TTYごとに対照群に各TTYによって作成されたプロセスとスレッドのすべてを置くことです。ユーザーのグラフィカルなアプリケーションのすべてで、この結果は、彼がターミナルウィンドウに発売することを彼の24スレッドのカーネルのコンパイルと同じレベルに予定されています。グラフィックアプリケーションでは、50%を取得し、コンパイルが50%を取得します。彼は別のターミナルウィンドウを開き、別の24個のスレッドでglibcのコンパイルを開始した場合、それは33%のデスクトップアプリケーションに移行し、33%のカーネルのコンパイルと33%glibcのコンパイルます。

scroll top