• ベストアンサー

マルチプロセッサーの処理について

一般論として、PCをマルチプロセッサーにした場合、どんな処理でも各プロセッサーを均等に使うことになるのでしょうか。それとも、プログラムを書くときに、いくつの(もしくは何番目の)プロセッサーを使用するのか定義するものなのでしょうか。基本的な話で恐縮です。

質問者が選んだベストアンサー

  • ベストアンサー
  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

アプリケーションプログラムでマルチプロセッサーを意識するのでは大変です。 1.プログラムが煩雑。 2.実行時に必ずしも最適な分担にならない。 3.プログラムを別のマシンで実行するのに不便。 マルチプロセッサーを意識した、プロセッサーとプログラムの最適割付はOSの仕事です。

その他の回答 (1)

  • nbd00115
  • ベストアンサー率18% (116/632)
回答No.2

通常はOSが振り分けますが、プログラムで 指定することも可能です。 なお、そうしたプログラムは、シングルCPU システムで動かなくなるので注意。

関連するQ&A

  • ACPIマルチプロセッサとMPSマルチプロセッサ

    http://oshiete1.goo.ne.jp:80/qa4331467.html 上記の関連なのですが、CPUをシングルコア(Pen4)からデュアルコア(PenD)に換装しました。 OSはWinXP-SP3です。OSのクリーニンストールは行わずに済みました。 CPU換装後に起動し、デバイスマネージャーで「コンピュータ」の項で「ユニプロセッサ」から「マルチプロセッサ」へ変更しようとしました。 ところが、自動的に「ACPIマルチプロセッサPC」に替わっておりました。 よく調べると、「ACPIマルチプロセッサPC」の他に「MPSマルチプロセッサPC」があります。この違いがわかる方是非ご教示下さい。 現在「ACPIマルチプロセッサPC」で使用中で支障は特にありませんが、より好適な設定に致したいので、宜しくお願い致します。 蛇足ですが、デバイスマネージャー「プロセッサ」の項は、CPUが2個表示されデュアルコアである表示になっています。 タスクマネージャー、パフォーマンス「CPU使用率」も2個あります。

  • マルチプロセッサについて

    マックの機能拡張書類、「マルチプロセッサ機能拡張」についてです。 PPCプロセッサが2つ以上接続された状態で、作動するような説明を読んだのですが、このような場合、ちゃんと機能するのでしょうか? ロジックはLC475 CPUスロットにPPC601アップグレードカードを挿す。 PDSスロットに延長ケーブルをつないで、 そこにLCPDS<->040PDSアダプタをはさみ PowerPro601を挿し、2つのパワーPCを搭載する。

    • ベストアンサー
    • Mac
  • マルチプロセッサ対応の、アプリケーションソフトウェアの働きについて

    マルチプロセッサ対応の、アプリケーションソフトウェアの働きについて質問します。 マルチプロセッサ対応のソフトウェアを含む、複数のソフトウェアを動かしている場合、ソフトウェア側(「マルチプロセッサ対応のアプリケーションソフトウェア」側)からの働きを考えれば、以下の2つの処理方法で処理していると思います。 1 まず最初に演算処理をするCPU(またはコア)にて、処理できない場合は、その処理できない分だけを、他のCPU(またはコア)に、処理してもらう。 2 それとも、最初に演算処理をするCPU(またはコア)にて、100%処理しきれない場合は、まるごと(=マルチプロセッサ対応のアプリケーションソフトウェア」の全ての処理分を)、他のCPU(またはコア)に、処理してもらう。 2の場合、CPU(またはコア)が、あればあるだけ、トータルの作業時間は早くなると思います。・・・が、1の場合なら2の場合ほど、CPUの数に依存しないかと思います。なぜなら、演算処理能力の高いCPU(またはコア)を使用していることが条件ですが、2の場合より少ないCPU(またはコア)数で、処理可能・・・と思うのですが、 どのようなやり方で、処理しているのか、教えてください。

  • C# の例外処理について

    こんにちは。 C#の例外処理について質問させてください。 ある関数の内部において、一般的な例外をユーザー定義の例外に変えて投げ、 この関数の利用者には必ずそのユーザー定義の例外を処理するよう強制したいと思っています。 しかし、C#で関数の利用者に例外処理を強制させる方法が見つかりません。 そもそも、関数の利用者からは、その関数でどのようなユーザー定義の例外が投げられるかすらわからないように思います。 正しくcatchするには関数の中身を追うしかない?と疑問に思っています。 C#ではこのような場合、どうするのが一般的なのでしょうか? Javaでは例外処理の強制は簡単なので、構文が似てるだけに不思議に思っています。 基本的な仕様の見落としだったら申し訳ありませんが、よろしくお願いいたします。

  • 並列処理についてですが、

    並列処理についてですが、 SCOREという並列環境を構築するソフトで、4つのPC(CPU:Quad Core)を、並列化させ、 ある逐次プログラム(C言語、ラプラス方程式を差分法で解くプログラムですがプログラム内容はあまり関係ないので、あるプログラムとさせていただきます)を並列処理させたところ、 1つのPCで、4つのプロセッサを使用し、合計4ノードで並列処理を行った場合と、・・・(1) 4つのPCで各PC1台につき1つのプロセッサずつ、合計4ノードで並列処理を行った場合では、・・・(2) 同じ4ノードであるにかかわらず、 (2)がノード数に比例的に演算性能が良くなることに対して、 (1)の場合、ノード数が増えても関数log(x)(雰囲気です)をグラフにしたような形で、演算性能がうまく良くなりません このような質問を以前したところ、 ・スレッド切り替えのオーバーヘッドが影響しているのではないか ・実行環境が違うことと、ひとつのプロセスですべてのコアを占有する thread はコアを2個使えば2倍、3個使えば3倍それぞれ速くはならない。一方、PCを組み合わせて使う場合、それは完全に独立しており、データ並列のために分割されて計算量が縮小された分、PC組み合わせ数にほぼ比例して速くなる。 という回答をいただくことができました。 なんとなくで意味は分かるのですが、何卒PC初心者なもので、あまり理解することができません。 ここからが質問です。 ・「スレッド切り替え」とは一体どういったものなんでしょうか ・いただいた回答で、「ひとつのプロセスですべてのコアを占有するスレッド」とはどういうことでしょうか このことについて教えていただきたいです。スレッドとは、など部分部分での単語は調べてみましたが、 どういったように動いているのかが分かっていないせいか、上記質問のようなことが分かりません。 回答をせっかくいただいたのに自分の語彙力のせいで度重なる質問をさせていただくことを申し訳なく思いますが、みなさん回答の方よろしくおねがいします。

  • 並列処理?

    基本的なことかもしれないんですが、コンピュータの並列処理ってなんですか? また、その並列処理っていうのは一般PCユーザ個人レベルでできるものですか?

  • 処理をした後にとばしたい場所に飛ばしたい

    まずは次ぎのソースをご覧になって下さい。 &a &b &c sub a {処理一番} sub b {処理二番} sub c {処理三番} 上記のプログラムでまず「sub a」の処理をさせます。 次に「sub b」の処理をさせます。 次に「sub c」の処理をさせます。 が、しかし「sub b」の処理の中で条件文があり、条件に満たない場合は「sub a」の中の「処理1番プログラム」の中の途中からまたスタートさせたい(処理を返えしたい)と思っています。 そのような事が出来るでしょうか?どうか教えて下さい。 お願いします。

  • 情報処理の問題ですが

    情報処理の問題ですがどなたか解き方を教えて頂けますでしょうか? 宜しくお願い致します。 問題 8000万個の命令を実行するプログラムを60MIPSで実行した場合に 予想される処理時間は何秒か(小数点第3位を四捨五入する) ここで プロセッサの使用率は75%としてオペレーティングシステムのオーバーヘッドは考えないものとする。なお、次の計算式を参考にするとよい (1)1秒間に実行できる命令数=MIPS値×使用率 (2)プログラム処理時間=プログラム命令数/1秒間に実行できる命令数 (3)MIPS値=1秒間に実行できる命令数を百万の単位で示したもの

  • 熱処理の選び方

    熱処理にも、ズブ、炎、高周波、レーザー、浸炭、窒化など いろいろな種類があると思いますが。 焼き入れ指示をする場合、どのような基準で選べば良いのでしょうか? 例えば、シャフト、軸類は、高周波+HCrとか 主に部品別の、一般論的なものが有りましたら、教えてください。

  • インターネット上の送金処理

    クレジットカードを扱うサイトでのクレジットカードの送金処理は、一般的にどのような外部サービスが利用されているのでしょうか?サービスでなく、パッケージ化されて販売されている処理プログラムを使用したり、各々自作したシステムによって処理しているのでしょうか?