並行,並列,同時,分散という用語が,コンピュータの世界でよく使われます.厳密な用語の定義は難しいですが,ここでは,どのような違いがあるか,感覚的に見てみます.
並行(concurrent)
複数の仕事があって,互いに無関係の部分は,同時に実行でき,相互作用のある部分は,順序関係をもって実行する,という論理的に同時に実行されている様を表します.仕事の個数より少ないCPUしかなければ,その時間を分け合って利用することになるし,仕事の数だけのCPUがあれば,並列に実行することになります.2つの仕事で,メッセージの送受を行う部分は,順序関係をもっている(受け取らなければ仕事ができない)が,その他の部分は,並列にできるところは進めてもいい,ということが,並行という言葉の感覚です.ここで,仕事といっているものは,コンピュータの世界で,タスク,プロセス,スレッドと呼ばれるものです.
並列( parallel
)
複数のCPUや装置が同時に動いている様を表します.
同時(simultaneous)
CPU,装置,仕事を問わず,同時に動いている様を表します.
分散(distributed)
1つの行いたい仕事を,論理的に分けて,それぞれの部分仕事を,異なるコンピュータに割り振って実行する様を表します.部分仕事同士は,並行性を持っていると言えますし,複数のコンピュータは並列に実行していると言えます.仕事を分散して実行,という感覚です.
ついでに,
擬似並列(quasi-parallel)
並行,並列,同時,分散などの様を持っている対象を,1つのコンピュータでシミュレーションしようとするとき,その通りに,並行,並列,同時,分散はできないので,擬似的にそのような環境を作り出して,模擬的に動かす様を表します.
concurrent | 並行な | |||
parallel | 並列な | |||
simultaneous | 同時的な | |||
distributed | 分散的な | |||
quasi-parallel | 擬似的に並列な | |||