0

ユーザレベルのスレッドはマルチプロセッシングを利用していますか?私はそのような答えをここで一つ読んだ。しかし、それは明らかではありません。ユーザレベルのスレッドはマルチプロセッシングを利用していますか?

What does it mean by "user threads cannot take advantage of multithreading or multiprocessing"?

そして、もう一つ他の回答ここ

は、私はいくつかの重要な詳細をここで何かをしないのです

How do user level threads (ULTs) and kernel level threads (KLTs) differ with regards to concurrent execution?

ことが可能であることを述べていますか?

答えて

0

通常、user-level threadsは、マルチプロセッシングを利用できませんが、kernel-level threadsはそれを利用できます。

これは単に、コンピュータシステムmulti-coreで複数のkernel-level threadsを並行して実行できることを意味します。しかし同じことはuser-level threadsのためにできません。

kernel-level threadsOperating Systemによって管理されているので、これは可能であるが、一方、user-level threadsはOSを意味することは、実際に多くのものよりもがある場合でも、単一user-level thread(実行する1つ)だけを認識され、ユーザーによって管理されています。私はリンクを読んだ後に理解するものから

Some implementations base their user threads on top of several kernel 
threads, to benefit from multi-processor machines (M:N model). 

だけその実装固有の場合、multiprocessingを活用するためにuser-level threadsのためにその可能ということである。

は、今すぐあなたのリンクでは、あなたはいることを言及されて。したがって、これは基本的にはkernel-level threadと関連付けられ、それぞれkernel-level threadに関連付けられたcoreおよびuser-level threadに関連付けられます。

したがって、結局はkernel-level threadsseveral cores(OR CPU's)に並行して実行されています。 multiprocessingは、kernelの助けを借りて利用することはできません。

+0

それで、少し正確にします。実際に第2リンクが言っていることは、いくつかのカーネルレベルのスレッドを借りれば、ユーザレベルのスレッドを1:1モデルのように動作させることができるということです。これだよ ? –

+0

@JonSillickはい。間接的に、彼らは一対一のモデルについて話しています。 –

+0

@JonSillickしかし、実装固有のことだけを覚えておいてください。 –

0

「利用する」と定義する方法によって異なります。

ユーザースレッドはプロセスによってスケジュールされます。 プロセスはカーネルによってスケジュールされます。

ユーザースレッドは、プロセスがスケジュールされているプロセスに対してのみ実行できます。

したがって、同じプロセスからのユーザースレッドは、複数のプロセッサで同時に実行することはできません。それらはインターリーブされて実行されます。

これがマルチプロセッシングの定義であれば、答えはNOです。

ただし、OSがサポートしている場合、プロセスは使用可能なプロセッサで実行できます。したがって、ユーザスレッドは、利用可能な任意のプロセッサ上で実行することができる。

これがマルチプロセッシングの定義であれば、答えはYESです。

関連する問題