マルチプロセッシング
マルチプロセッシング(英語: multi processing)とは、(本来は)ひとつのプロセスだけではなく複数の並行プロセスを同一システム内で使用することを意味する。
マルチタスクと同様ひとつのCPUを複数のプロセスが共有することも示すが、ひとつのシステム内の複数のCPUが複数のスレッドを動作させることも意味する。マルチプロセッサと言う場合は一般に後者のみを指す。
MIMDマルチプロセッシング・アーキテクチャは、個々に独立した様々なタスクを実行するのに適しており、それぞれが異なるデータセットに対して異なる命令を並行して実行する。このような用途はニーズがあり、実装も比較的容易なので、MIMD はマルチプロセッサの大半を占めている。
処理は複数のスレッドに分割され、それぞれがハード的なプロセッサ状態を持つ。これらスレッドはひとつのプロセス内に存在する場合もあるし、別々のプロセスに属していることもある。複数のスレッドがディスパッチされるのを待っている状態となるため、このアーキテクチャはハード資源の利用効率が高い。
MIMD ではデッドロック問題や資源の競合が発生する。しかしスレッドが資源にアクセスするかどうかは予測できないため、競合を効率的に管理するのは難しい。MIMD ではオペレーティングシステムに特別なコーディングを必要とする。アプリケーションはマルチスレッド化されない限りそのような配慮は必要としない。MIMD用のオペレーティングシステムは、シングルスレッドのアプリケーションにとっては透過的であることが多い(アプリケーション側が複数プロセスのスケジューリングなどを独自に行ったりする場合はその限りではない)。
マルチプロセッシングにおいて、単一システム内の複数のプロセッサ上で、独立した複数の命令列をそれぞれ別の複数のコンテキストに対して実行する場合がある。これをMIMDと呼ぶ。また、同一の命令列を複数のコンテキスト上で並行して実行する場合もある。これをSIMDまたはベクトル計算機と呼ぶ。また、複数の命令列を一つのコンテキストに対して実行するものをMISDと呼ぶ。MISDは一般に冗長化されたフォールトトレラントシステムを意味するが、パイプライン処理やハイパースレッディングを指すこともある。ちなみに、SISDは一般のマルチプロセッシングでないシステムを指す。