67 :
ななし:
>>46-48 適当ですがこんなイメージです。
マルチプロセスでの恩恵
CPUは同時に一つの仕事しかできません。
しかし実際には通信をしたり、キーボード入力を受け付けたり、画面を描画したりと、
複数のこと同時にをやっている(ようにみえます)
なぜ「ようにみえます」かというと
通信 -> A
キーボード入力 -> B
画面の描画 -> C
とするとCPUはA->B->C->A->B->C.......
と、ものすごい勢いでやっていることを変えているのです。それこそnsの単位です。
もうおわかりでしょう。それならCPUが二つあったらどうなるか?
そうです。一つのCPUが処理しなければならない仕事量が減るのです。
ですから、たくさん仕事を与えても重く感じないのです。
これがマルチプロセスの恩恵です。
スレッドモデルでのプロセスでの恩恵
今日の買い物をCPU,メモリ,M/Bだとします。(これをプロセスと呼びます)
それぞれ買うのに
CPU 30分
メモリ 30分
M/B 60分
かかるとします。(この買い物をスレッドと呼びます)
一人で買うと
CPU->メモリ->M/Bと順番に買わなければなりません。計120分かかります。
これがシングルプロセッサの状態です。
A,B人が二人いました。Aは、AがCPU->メモリ, BがM/Bという順番で買えば60分ですむのでは?
と考えました。これを思いつくのに5分かかりました。
すると
思考5分
AがCPU->メモリ 60分 平行して BがM/B60分
計65分です。
これがスレッドでの恩恵です。
68 :
:01/10/15 23:27 ID:???
69 :
:01/10/15 23:33 ID:???
思考5分ですんなり決まって仲良く分担できりゃそりゃ苦労はないんだけど、
人間の場合はこんなにうまくいかないな。
70 :
46:01/10/15 23:34 ID:eFClpO9J
>67 解説ありがとうございます。
でもそれはマルチプロセス(スレッド?)の解説ですよね?
僕が疑問なのはわざわざそのプロセス(スレッド?)を各CPUに割り当ててるのにもかかわらず
CPU使用率がきっかり50%なところなんですよ。
BeOSだとCPUを交互に使ってたので理解できるんですが、W2Kだとそうでないし。。。
71 :
ななし:01/10/15 23:35 ID:3U+qdgPb
>>66 ポイントツーポイントとシングルスレッドアプリの実行とは無関係。
メモリー、バスなどの資源の割り当て方が違う。
Intelのほうが簡単だが、競合が起きやすい。
AMDのほうは複雑だが、競合が起きにくい。
機能的にはAMDのほうが遙かに優秀。
だと思います。
間違っていたら、晒してください。
72 :
名無しさん:01/10/15 23:36 ID:xHupYTyQ
XPはディスクトップ向けなんですか?
73 :
名無しさん:01/10/15 23:37 ID:xHupYTyQ
デュアルにすると何か良いことがあるの?
複数のアプリを同時に実行しても遅くなりにくいだけ。
つまり複数のアプリを同時に実行するような人以外には必要ない環境。
75 :
ななし:01/10/16 00:36 ID:ZwguZTNA
>>46 二つのCPUをA,Bとします。
プロセスは、二つ以上のスレッドのあつまりです。
プロセスというのは、常にCPUを使っているわけではなく、
他のプロセスがCPUを使っている間は、自分の番が来るまで
ぼ〜っ待っています。この間は、何もできません。
自分の番が来ると、一生懸命実行します。
このときはAのCPUを占有することができます。
ここではスレッドはまだ一つです。これをT1とします。
実行中にスレッドを作る命令があるとスレッドを作ります。
スレッドは二つになりました。これをT2とします。
今度はT1とT2でCPUの取り合いをすることになります。
CPUが一つしかないときはT2を実行してからT1を実行します。
しかし今は、BがあるのでBにT2を処理させます。
と、このようにするのですが、プロセスをA,Bどちらで実行するか、
発生したスレッドをA,Bどちらで実行するかは、OSが決めます。
これはOSの設計者が、いろいろと考えて、こうすれば最適じゃないかな?
という方法で割り当てられます。
ですので、OSによってCPU使用率が偏っていたり、平均的だったりしても、
おかしくはないのです。平均的な方が優秀です。
もちろんOSがマルチプロッセサに対応していないと、
CPUを二つ載せていてもOSからは一つしか見えないので、
一つの時と同じ動作をします。
76 :
:01/10/16 00:47 ID:Jf6FmaAa
かちゅーしゃでレス取得してると遅くなるけど
dualにするとどう?
77 :
46:01/10/16 01:30 ID:MuqBlv0Z
>75 ありがとうございます。
なるほど。なんとなくわかりました。つまりタイミングスケジュールの問題なんですね。
じゃあOSの出来さえよければマルチスレッド化可能なんだけど非対応のプロセスも
倍近い速さで処理ができるってわけですね。極端な話。勉強になります。
>76
それは回線の問題と思われます。
78 :
名無し:01/10/16 01:31 ID:elfHiDOQ
>70
その場合はSMP(symmetrical multiprocessing 対称型マルチプロセッシング)
というものがあり、これは
システムのタスクを20
アプリケーションのタスクを80
とする仕事があったとすると2つのCPUにそれぞれ
システムのタスクを10
アプリケーションのタスクを40
として均等に分配して両方とも50となる。で出力を合計して100。
ただし、SuperπやUDのように対応できないモノもあり、その場合は片寄るということ。