1) プログラミングに関して、マルチプロセスとマルチコアの違いは何ですか?
2) マルチスレッドの場合、ミューテックスと同期によって共有データを保存する必要があります。マルチコアで実行されているプログラムはどうですか?
3) プログラムに単一のプロセスがあり、それをマルチコア環境で実行している場合は? 処理は速くなりますか?
1) プログラミングに関して、マルチプロセスとマルチコアの違いは何ですか?
2) マルチスレッドの場合、ミューテックスと同期によって共有データを保存する必要があります。マルチコアで実行されているプログラムはどうですか?
3) プログラムに単一のプロセスがあり、それをマルチコア環境で実行している場合は? 処理は速くなりますか?
1)マルチプロセスとは、1つのプログラムを複数のプロセスに分割することを意味すると想定しています(通常、これはfork()
マルチタスクではなく、POSIX システムのメソッド)。マルチプロセッシングまたはマルチタスキングの通常の定義は、単一の CPU が複数のプロセスを頻繁に切り替えることによって一見並行して実行できるようにすることです。マルチコアとは、単一の CPU がタスクを実行できる複数のコアを持つことができ、すべての実行ユニットが何らかの方法で接続されていることを意味します (プロセッサのアーキテクチャによって異なります)。オペレーティング システムなどの非常に低レベルのソフトウェアを作成している場合を除き、これらは通常、プログラミング方法には影響しません。フォーク プロセス (つまり、あなたが言っていると思います) は、通常、オペレーティング システムによって提供される何らかの方法で行われ、実際には大きなトピックであり、多くの本を見つけることができます。
2) オペレーティング システムは、基盤となる CPU アーキテクチャに抽象化を提供することがよくあります。つまり、プログラマーとして、PC にマルチコア CPU が搭載されているかシングル コアが搭載されているかを気にする必要はありません。データも同じように。マルチコア CPU 用のオペレーティング システムを作成している場合、状況はさらに難しくなり、CPU がサポートする命令をよく読む必要があります。
3) プログラムにプロセスが 1 つしかない (そしてスレッドを生成しない) 場合、シングル コアまたはマルチコア システムで実行されているかどうかに関係なく、実行は (ほぼ) 同じです。マルチコア システムで得られる唯一の速度の利点は、オペレーティング システムが他の多くのタスクが実行されていないコアにそれをプッシュすることによって生じる可能性があります。マルチコア システムを使用することによる真の利益は、並列プログラミングを使用することによってのみ達成できます。