1

共有アドレス空間モデルでは、プロセス間で共有され、メモリ内のデータ構造として表される共通のアドレス空間があります ( などConcurrentHashMap)。これにより、共有オブジェクトが単一のコンピューター上にあるため、データ共有が非常に高速になるという利点が得られます (簡単にするために、そうすると仮定します)。プロセスが衝突する可能性があるため、さまざまなロック メカニズム (ミューテックス) が、共有メモリへのアクセスにおける相互排除を保証するのに役立ちます。プロセッサ数が増えると共有メモリのトラフィックが幾何学的に増加する可能性があり、1 台のコンピュータに 8 個以上のプロセッサを搭載できないため、このスキームにはスケーラビリティがありません。

メッセージ パッシングモデルでは、グローバル アドレス空間の意味はありません。各プロセスには、1 つのプライベート ローカル メモリがあります。プロセスは、メッセージを渡すことで相互に通信できます。共有アドレス空間とは異なり、メッセージ パッシング モデルはプロセッサとメモリ間のスケーラビリティを提供しますが、共通データを複製する必要があります。プロセッサが増えると、(そのデータの) メモリ サイズも比例して増加しますが、この場合はロック メカニズムは必要ありません。

インスピレーションを得るために「Thinking in Java」を読むと、同期の原則を備えた共有アドレス空間モデルについての話しか見つかりません。私の問題が複雑になるにつれて、私は盲目ではない限り、この本には記載されていないメッセージ パッシング パラダイムを試すつもりです。

C++ の MPI のようなメッセージ パッシング モデルで動作する Java ネイティブ クラスまたは実績のある外部ライブラリを推奨していただけますか? そのソースへのリンクは大歓迎です!

4

2 に答える 2

1

Akkaは、JVM で一般的に使用されるアクターフレームワークであり、Java と Scala の両方で使用できます。

于 2012-08-07T14:36:06.927 に答える
0

Apache Hadoopソフトウェア ライブラリは、単純なプログラミング モデルを使用して、コンピューターのクラスター間で大規模なデータ セットの分散処理を可能にするフレームワークです。 http://hadoop.apache.org/

于 2012-08-07T14:39:26.293 に答える