シングルスレッド CPU 上でマルチスレッド アプリケーションを実行しますか?

シングルスレッド CPU 上でマルチスレッド アプリケーションを実行しますか?

この質問の背後にある動機は、Intel Galileo gen2 ボードシングルスレッドプロセッサを搭載しています。

  • スレッドの存在に依存するすべてのユーザー空間アプリケーションにとって、それが何を意味するのかという概念的な説明を探しています。
  • これは、スレッド呼び出しのシステム コールが CPU スレッド サポートに依存するのではなく、ソフトウェアでエミュレートされるようにカーネルにパッチを適用する必要があることを意味しますか?

答え1

マルチタスク システムは、システムにインストールされているプロセッサやコアの数、およびそれらが処理する「スレッド」の数に関係なく、複数のプロセスとスレッドを処理します。マルチタスクはタイム スライスを使用して動作します。つまり、カーネルと実行中のすべてのプロセスまたはスレッドは、それぞれ実行に一定の時間を費やし、その後、システムは次の実行可能なスレッドに切り替えます。切り替えは非常に頻繁に行われるため、実際にはそうでない場合であっても、すべてが並列に実行されているように見えます。

これらはすべて、API などに一切変更を加えることなく実行されます。マルチコア システムでは、物理的にサポートされるよりも多くのスレッドを実行できる必要があり、シングルコアのケースはその一例にすぎません。

CPUをシングルスレッドと表現すると、同時マルチスレッド(SMT、Intel の世界ではハイパースレッディング)、CPU が複数のスレッド (またはプロセス、またはタスク) を実行する機能ではありません。CPU に SMT 機能を追加しても、スレッドの実行を支援する命令は追加されず、状況によってはハードウェアをより有効に活用できるだけです。

関連情報