- - PR -
デュアルCPU上のマルチスレッド動作について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-02-21 14:48
マルチスレッド構成で書かれたあるプログラムをデュアルCPU上で動作させる場合、
1CPUにはスレッド単位で処理があてられるのでしょうか? あるいは、1CPUにはプロセス単位であてられ、そのプロセスで生成されたスレッドは 全てそのCPU上でのみ動作してしまうのでしょうか? 参考↓ http://pcweb.mycom.co.jp/special/2002/dual/006.html 【動作環境】 OS :Linux2.4.28 CPU :Intel Xeon x 2 以上よろしくお願い致します。 | ||||
|
投稿日時: 2005-02-21 15:08
マルチスレッドのプログラムは通常スレッド単位でCPUに割当てられるはずです。
でないと、マルチスレッドの意味ないですよね(^^; | ||||
|
投稿日時: 2005-02-21 17:24
回答ありがとうございます −> kzymtさん
ただ、私の理解が悪いために確認させてください。 > マルチスレッドのプログラムは通常スレッド単位でCPUに割当てられるはずです。 > でないと、マルチスレッドの意味ないですよね(^^; 同一プロセス下で生成された複数のスレッドは、デュアルCPU環境の場合、 CPU1とCPU2それぞれに振り分けられるということですよね? スレッド単位でCPUに割り当てられるのはわかりますが、デュアルCPU環境の場合、 同一プロセス下で生成された複数のスレッドに限っては、片方のCPUのみにしか 割り当てられないとか決まってないのかなと思いまして ![]() | ||||
|
投稿日時: 2005-02-21 18:29
ネィティブスレッドの場合は、確かにCPU1とCPU2それぞれに振り分けられます。 Javaや.Netの様な仮想マシン上の仮想スレッドの場合、単独のCPU上でしか動作しない場合もります。この辺りはVMの実装次第だと思いますが、単独CPU上でしか動作しない実装のほうが多いんじゃないでしょうか? _________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ | ||||
|
投稿日時: 2005-02-21 18:47
.NET のことは知りませんが、現在では、主要な OS の JavaVM 実装のほとんどすべてが native thread (OS上のスレッドとJava上のスレッドが 1対1で対応する) になっています。仮想スレッドと言われているのは Java で green thread と呼ばれているものだと思いますが、もうほとんど使われていないんじゃないでしょうか。 | ||||
|
投稿日時: 2005-02-22 01:03
メモリを共有して節約できるとか、IPCの仕組みを使わなくても 協調動作できるとか ![]() | ||||
|
投稿日時: 2005-02-22 09:33
皆様、回答ありがとうございます。
1プロセス下で生成されたスレッドはCPU1とCPU2に振り分けられるのですね。 現在、あるマルチスレッドプログラム(ネイティブコードで書かれてます)を効率良く 処理できるマシンを選定中なのですが、おかげさまでデュアル環境にする価値があることが わかりました。ありがとうございました。 |
1