
No.1ベストアンサー
- 回答日時:
共有メモリ方式であれば各プロセスは,直接,共有メモリを参照したり書き換えたりできるんで,プログラミングは楽です.その代わり,排他書き込み処理あるいは,同期処理といったプログラマからは直接見えないオーバーヘッドが大きくなりがちです.
メッセージパッシング方式は,各プロセスが全データを一部ずつ所有しています.あるプロセスが他のプロセスが所有しているデータが必要なときは,明示的ににデータの要求を出して,受け取るといった操作をします.プログラマの負担は増えますが,プロセス間通信の量や頻度を細かく制御できるので,凝った最適化が可能です.
No.2
- 回答日時:
並列処理の場合、計算の主体、例えばプロセスやスレッドあるいはより直感的にはプロセッサ、が複数あって、その間で通信、つまりデータのやり取りをして計算を並列に進めます。
で、このデータのやり取りが「通信」と呼ばれ、並列処理ではほとんどの場合でなんらかの通信が必要にります。逆に言えば、通信しない部分は逐次処理(ただしそれぞれのプロセスが計算をすれば並列処理になる)と全く同じです。
共有メモリというのは、2つのプロセス(スレッド)から同じメモリの内容(アドレスは違うかもしれない)が見えるような仕組み(多くはハードウェアによる。まれにソフトウェアで実現されている場合もある)になっていて、このメモリに一方が書き込んで、他方が読み込めば、データの受け渡しが実現できることになります。
一方、メッセージパッシング方式では、一方のプロセスではメッセージ(データ)を別のプロセスに送信する、という関数を呼び、他方のプロセスではデータを受信する関数を呼ぶことで、データの受け渡しを実現しています。メッセージパッシングではなんらかのネットワークを経由してメッセージが送られます。
他にも No.1 さんのおっしゃるように、同期とか排他制御とかいろいろとありますが、これらは書き出すときりがないのでこの辺りで止めておきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プロセスIDの取得方法について
-
バックグラウンドのプロセスの...
-
親子プロセス間でのデータの受...
-
VBS(WSH)で開いたIEのウィンド...
-
IISがフリーズ
-
VB.NET 自プログラムのプロセス...
-
VBSからbat実行(WMI)して戻り値...
-
CPUの使用率について
-
プロセスのアタッチ・デタッチ...
-
ウィンドウのタイトルからプロ...
-
VB6.0 SHELLで起動...
-
[C#]関数の中からプロセスを終...
-
GetModuleFileNameでエラーが出...
-
別のプロセスの関数を呼び出す...
-
異なるプロセス間でのイベント...
-
sleep関数の精度について
-
ノートンのパフォーマンス警告...
-
CPU番号の指定
-
ウインドウのプロセス終了について
-
起動中の他のプログラム(orプ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
プロセスのアタッチ・デタッチ...
-
非表示になったエクセルは?
-
C#でのbatファイル実行結果取得
-
Process.Startの戻り値を後で取得
-
タスクマネージャーのプロセス...
-
SendMessageが失敗するときがある
-
Linuxでのスレッド間メッセージ...
-
VB6.0 SHELLで起動...
-
vb.netでEXCEL起動がうまくでき...
-
explorer.exeが異様にメモリを食う
-
プロセスIDの取得方法について
-
IISがフリーズ
-
jdbcのプロセスの処理について
-
c言語でプロセスIDを調べたい
-
セマフォとmutexの違いは?
-
ADOでアクセスのレコードに...
-
警告『 別のプロセスで使用され...
-
OSPFでプロセスを分ける意義に...
-
Windowsでのfork方法
おすすめ情報