並行処理 (Concurrency)
並行処理は、複数のタスクを同時に進行させる技術。タスクが同時に実行されるわけではない
。システムがそれらのタスクをスイッチしながら処理する。
特徴
- タスクの進行管理: タスクは実際には一度に1つしか実行されていないが、タスクを切り替えることで、あたかも同時に処理されているかのように見える。
- リソースの共有: 複数のタスクがリソースを共有しながら進行する。
- CPUの時間を分けて使用: マルチタスクを実現するために、CPUがタスク間を切り替えながら処理を進める。
例
- シングルコアプロセッサの上で、複数のタスクが時間を分け合って処理される場合。
- 非同期プログラミング(例えば、I/O待機などでタスクを待機させ、他のタスクを実行する)。
利点
- リソースの効率的な利用。
- 複数のタスクが同時に進行するため、全体的な応答性が向上する。
使用例
- サーバーが複数のクライアントリクエストを扱う。
- アプリケーションが複数のファイルの読み書きを並行して処理。
並列処理 (Parallelism)
並列処理は、複数のタスクを同時に実行する技術。これにより、計算を同時に並行して行い、全体の処理速度を高速化する。
特徴
- タスクの同時実行: 複数のタスクが並列に実行され、計算リソースをフルに活用する。
- ハードウェアの利用: マルチコアCPUや複数のCPUを活用し、タスクを物理的に同時に実行する。
- リソース分割: 処理を複数のプロセスやスレッドに分け、各プロセッサがそれぞれのタスクを並行して処理する。
例
- 複数のCPUコアを使って、複数のデータを同時に処理する場合。
- 大規模なデータ分析やシミュレーションなどで、タスクを複数のスレッドやプロセスに分割して同時実行。
利点
- 処理時間を短縮できる(特に計算負荷が高い場合)。
- 複数のリソースを活用することで、パフォーマンスの向上。
使用例
- 大規模なデータセットに対して行われるマップリデュース処理。
- 画像処理や科学的計算で、タスクを複数のスレッドやコアに分けて同時に処理。
並行処理と並列処理の違い
項目 | 並行処理 (Concurrency) | 並列処理 (Parallelism) |
---|---|---|
実行方法 | 複数のタスクを時間的に切り替えて実行 | 複数のタスクを物理的に同時に実行 |
使用するリソース | 単一のプロセッサ、シングルコアのCPUなど | マルチコアCPU、複数のプロセッサ、GPUなど |
効率性 | リソースを効率よく使う、I/O待機を活用 | 計算速度が向上、時間短縮を目指す |
目的 | 複数のタスクを並行して進行させる | 複数のタスクを高速で同時に処理 |
まとめ
- 並行処理は、リソースを効率的に使うためにタスクを時間的にスイッチしながら進行させる方法。
- 並列処理は、複数のタスクを物理的に同時に実行し、計算負荷の高い処理を高速化する方法。
次回への展望
最近マジダル。さっさと切り替えて来年の備えで勉強しないと全然成長できてない。